npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

aalarcon-viabariloche-emv-qrcps

v0.0.8

Published

Project to generate QRCode in EMV specification formmat.

Downloads

48

Readme

This library was made to help people that are using NodeJS to generate and parse EMV QRcode according with the specifications:

It is a fork of Emmanuel Kiametis library.

This version fixes the CRC generated in cases where the resulting code is less than 4 digits long.

Installing

npm install steplix-emv-qrcps

Modules

There are 2 modules in this library.

  • Merchant - To work with QRCode according with the Merchant Specification.
  • Consumer - To work with QRCode according with the Consumer Specification.

Merchant Module

You can use this Module by importing:

const { Merchant } = require('steplix-emv-qrcps');

Methods

buildTLV

const TLV = Merchant.buildTLV(tag, length, value);

| Parameter | Description | Type | | ------ | ------ | ------ | | tag | Payload Format Indicator | string | | length | Point of Initiation Method | number | | value | Merchant Account Information | string |

| Return Type | Description | | ------ | ------ | | TLV | It means an object that stores a Tag + Lenght + Value. |

buildEMVQR

const EMVQR = Merchant.buildEMVQR();

// ... OR

const EMVQR = Merchant.buildEMVQR(
    payloadFormatIndicator,
    pointOfInitiationMethod,
    merchantAccountInformation,
    merchantCategoryCode,
    transactionCurrency,
    transactionAmount,
    tipOrConvenienceIndicator,
    valueOfConvenienceFeeFixed,
    valueOfConvenienceFeePercentage,
    countryCode,
    merchantName,
    merchantCity,
    postalCode,
    additionalDataFieldTemplate,
    crc,
    merchantInformationLanguageTemplate,
    rfuForEMVCo,
    unreservedTemplates,
);

| Parameter | Description | Type | | ------ | ------ | ------ | | payloadFormatIndicator | Payload Format Indicator | TLV | | pointOfInitiationMethod | Point of Initiation Method | TLV | | merchantAccountInformation | Merchant Account Information | map [ id(string) : MerchantAccountInformation ] | | merchantCategoryCode | Merchant Category Code | TLV | | transactionCurrency | Transaction Currency | TLV | | transactionAmount | Transaction Amount | TLV | | tipOrConvenienceIndicator | Tip or Convenience Indicator | TLV | | valueOfConvenienceFeeFixed | Value of Convenience Fee Fixed | TLV | | valueOfConvenienceFeePercentage | Value of Convenience Fee Percentage | TLV | | countryCode | Country Code | TLV | | merchantName | Merchant Name | TLV | | merchantCity | Merchant City | TLV | | postalCode | Postal Code | TLV | | additionalDataFieldTemplate | Additional Data Field Template | AdditionalDataFieldTemplate | | crc | CRC | TLV | | merchantInformationLanguageTemplate | Merchant Information - Language Template | MerchantInformationLanguageTemplate | | rfuForEMVCo | RFU for EMVCo | array [ TLV ] | | unreservedTemplates | Unreserved Templates | map [ id(string) : UnreservedTemplate ] |

| Return Type | Description | | ------ | ------ | | EMVQR | It means an object that represents an EMV QRCode. |

buildAdditionalDataFieldTemplate

const additionalDataFieldTemplate = Merchant.buildAdditionalDataFieldTemplate();

// ... OR

const additionalDataFieldTemplate = Merchant.buildAdditionalDataFieldTemplate(
    billNumber,
    mobileNumber,
    storeLabel,
    loyaltyNumber,
    referenceLabel,
    customerLabel,
    terminalLabel,
    purposeTransaction,
    additionalConsumerDataRequest,
    rfuForEMVCo,
    paymentSystemSpecific
);

| Parameter | Description | Type | | ------ | ------ | ------ | | billNumber | Bill Number | TLV | | mobileNumber | Country Code | TLV | | storeLabel | Store Label | TLV | | loyaltyNumber | Loyalty Number | TLV | | referenceLabel | Reference Label | TLV | | customerLabel | Customer Label | TLV | | terminalLabel | Terminal Label | TLV | | purposeTransaction | Purpose of Transaction | TLV | | additionalConsumerDataRequest | Additional Consumer Data Request | TLV | | rfuForEMVCo | RFU for EMVCo | array [ TLV ] | | paymentSystemSpecific | Payment System specific templates | map [ id(string) : PaymentSystemSpecific ] |

| Return Type | Description | | ------ | ------ | | AdditionalDataFieldTemplate | It means an object that represents an additional data field template. |

buildMerchantInformationLanguageTemplate

const merchantInformationLanguageTemplate = Merchant.buildMerchantInformationLanguageTemplate();

// ... OR

const merchantInformationLanguageTemplate = Merchant.buildMerchantInformationLanguageTemplate(
    languagePreference,
    merchantName,
    merchantCity,
    rfuForEMVCo,
);

| Parameter | Description | Type | | ------ | ------ | ------ | | languagePreference | Language Preference | TLV | | merchantName | Name of the merchant | TLV | | merchantCity | Name of the marchant city | TLV | | rfuForEMVCo | RFU for EMVCo | array [ TLV ] |

| Return Type | Description | | ------ | ------ | | MerchantInformationLanguageTemplate | It means an object that represents a merchant information language template. |

buildMerchantAccountInformation

const merchantAccountInformation = Merchant.buildMerchantAccountInformation();

// ... OR

const merchantAccountInformation = Merchant.buildMerchantAccountInformation(
    globallyUniqueIdentifier,
    paymentNetworkSpecific,
);

| Parameter | Description | Type | | ------ | ------ | ------ | | globallyUniqueIdentifier | Globally unique identifier | TLV | | paymentNetworkSpecific | Array of payment network specific | array [ TLV ] |

| Return Type | Description | | ------ | ------ | | MerchantAccountInformation | It means an object that represents a merchant account information. |

buildUnreservedTemplate

const unreservedTemplate = Merchant.buildUnreservedTemplate();

// ... OR

const unreservedTemplate = Merchant.buildUnreservedTemplate(
    globallyUniqueIdentifier,
    paymentNetworkSpecific,
);

| Parameter | Description | Type | | ------ | ------ | ------ | | globallyUniqueIdentifier | Globally unique identifier | TLV | | contextSpecificData | Array of context of specific data | array [ TLV ] |

| Return Type | Description | | ------ | ------ | | UnreservedTemplate | It means an object that represents an unreserved template. |

Object Types

TLV

Represents a TAG + Length + Value.

const { Merchant } = require('steplix-emv-qrcps');
const { Constants } = Merchant;

const tag = "01";
const value = "Example";
const length = value.length;

const TLV = Merchant.buildTLV(tag, length, value);
Methods
toString
const tlvStringFormat = TLV.toString();

| Return Type | Description | | ------ | ------ | | string | TLV in string format |

dataWithType
const tlvBinaryFormat = TLV.dataWithType(Constants.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)

// OR

const tlvRawFormat = TLV.dataWithType(Constants.DATA_TYPE.RAW, ' '); // Raw Data

| Parameters | Description | Type | | ------ | ------ | ------ | | dataType | Data type value | Constants.DATA_TYPE.BINARY | Constants.DATA_TYPE.RAW | | indent | Indent character (Ex.: ' ') | string |

| Return Type | Description | | ------ | ------ | | string | TLV in binary OR raw data format |

MerchantAccountInformation

Represents a merchant account information.

const { Merchant } = require('steplix-emv-qrcps');
const { Constants } = Merchant;

const merchantAccountInformation = Merchant.buildMerchantAccountInformation();
Methods
toString
const merchantAccountInformationStringFormat = merchantAccountInformation.toString();

| Return Type | Description | | ------ | ------ | | string | MerchantAccountInformation in TLV string format |

dataWithType
const merchantAccountInformationBinaryFormat = merchantAccountInformation.dataWithType(Constants.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)

// OR

const merchantAccountInformationRawFormat = merchantAccountInformation.dataWithType(Constants.DATA_TYPE.RAW, ' '); // Raw Data

| Parameters | Description | Type | | ------ | ------ | ------ | | dataType | Data type value | Constants.DATA_TYPE.BINARY | Constants.DATA_TYPE.RAW | | indent | Indent character (Ex.: ' ') | string |

| Return Type | Description | | ------ | ------ | | string | MerchantAccountInformation in TLV binary OR TLV raw data format |

setGloballyUniqueIdentifier
const value = "15600000000";

merchantAccountInformation.setGloballyUniqueIdentifier(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

addPaymentNetworkSpecific
const id = "03";
const value = "12345678";

merchantAccountInformation.addPaymentNetworkSpecific(id, value);

| Parameters | Description | Type | | ------ | ------ | ------ | | id | Tag ID | string | | value | Some value | string |

MerchantInformationLanguageTemplate

Represents a merchant information language template.

const { Merchant } = require('steplix-emv-qrcps');
const { Constants } = Merchant;

const merchantInformationLanguageTemplate = Merchant.buildMerchantInformationLanguageTemplate();
Methods
toString
const merchantInformationLanguageTemplateStringFormat = merchantInformationLanguageTemplate.toString();

| Return Type | Description | | ------ | ------ | | string | MerchantInformationLanguageTemplate in TLV string format |

dataWithType
const merchantInformationLanguageTemplateBinaryFormat = merchantInformationLanguageTemplate.dataWithType(Constants.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)

// OR

const merchantInformationLanguageTemplateRawFormat = merchantInformationLanguageTemplate.dataWithType(Constants.DATA_TYPE.RAW, ' '); // Raw Data

| Parameters | Description | Type | | ------ | ------ | ------ | | dataType | Data type value | Constants.DATA_TYPE.BINARY | Constants.DATA_TYPE.RAW | | indent | Indent character (Ex.: ' ') | string |

| Return Type | Description | | ------ | ------ | | string | MerchantInformationLanguageTemplate in TLV binary OR TLV raw data format |

validate
const isValid = merchantInformationLanguageTemplate.validate();

| Return Type | Description | | ------ | ------ | | boolean | True if required properties is valid otherwise throw an Error |

setLanguagePreference
const value = "PT";

merchantInformationLanguageTemplate.setLanguagePreference(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setMerchantName
const value = "Merchant Organization";

merchantInformationLanguageTemplate.setMerchantName(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setMerchantCity
const value = "Brasilia";

merchantInformationLanguageTemplate.setMerchantCity(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

addRFUforEMVCo
const id = "03";
const value = "12345678";

merchantInformationLanguageTemplate.addRFUforEMVCo(id, value);

| Parameters | Description | Type | | ------ | ------ | ------ | | id | Tag ID | string | | value | Some value | string |

UnreservedTemplate

Represents a merchant account information.

const { Merchant } = require('steplix-emv-qrcps');
const { Constants } = Merchant;

const unreservedTemplate = Merchant.buildUnreservedTemplate();
Methods
toString
const unreservedTemplateStringFormat = unreservedTemplate.toString();

| Return Type | Description | | ------ | ------ | | string | UnreservedTemplate in TLV string format |

dataWithType
const unreservedTemplateBinaryFormat = unreservedTemplate.dataWithType(Constants.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)

// OR

const unreservedTemplateRawFormat = unreservedTemplate.dataWithType(Constants.DATA_TYPE.RAW, ' '); // Raw Data

| Parameters | Description | Type | | ------ | ------ | ------ | | dataType | Data type value | Constants.DATA_TYPE.BINARY | Constants.DATA_TYPE.RAW | | indent | Indent character (Ex.: ' ') | string |

| Return Type | Description | | ------ | ------ | | string | UnreservedTemplate in TLV binary OR TLV raw data format |

setGloballyUniqueIdentifier
const value = "15600000000";

unreservedTemplate.setGloballyUniqueIdentifier(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

addContextSpecificData
const id = "03";
const value = "12345678";

unreservedTemplate.addContextSpecificData(id, value);

| Parameters | Description | Type | | ------ | ------ | ------ | | id | Tag ID | string | | value | Some value | string |

PaymentSystemSpecific

Represents a payment system specific.

const { Merchant } = require('steplix-emv-qrcps');
const { Constants } = Merchant;

const paymentSystemSpecific = Merchant.buildPaymentSystemSpecific();
Methods
toString
const paymentSystemSpecificStringFormat = paymentSystemSpecific.toString();

| Return Type | Description | | ------ | ------ | | string | PaymentSystemSpecific in TLV string format |

dataWithType
const paymentSystemSpecificBinaryFormat = paymentSystemSpecific.dataWithType(Constants.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)

// OR

const paymentSystemSpecificRawFormat = paymentSystemSpecific.dataWithType(Constants.DATA_TYPE.RAW, ' '); // Raw Data

| Parameters | Description | Type | | ------ | ------ | ------ | | dataType | Data type value | Constants.DATA_TYPE.BINARY | Constants.DATA_TYPE.RAW | | indent | Indent character (Ex.: ' ') | string |

| Return Type | Description | | ------ | ------ | | string | PaymentSystemSpecific in TLV binary OR TLV raw data format |

setGloballyUniqueIdentifier
const value = "15600000000";

paymentSystemSpecific.setGloballyUniqueIdentifier(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

addPaymentSystemSpecific
const id = "03";
const value = "12345678";

paymentSystemSpecific.addPaymentSystemSpecific(id, value);

| Parameters | Description | Type | | ------ | ------ | ------ | | id | Tag ID | string | | value | Some value | string |

AdditionalDataFieldTemplate

Represents an additional data field template.

const { Merchant } = require('steplix-emv-qrcps');
const { Constants } = Merchant;

const additionalDataFieldTemplate = Merchant.buildAdditionalDataFieldTemplate();
Methods
toString
const additionalDataFieldTemplateStringFormat = additionalDataFieldTemplate.toString();

| Return Type | Description | | ------ | ------ | | string | AdditionalDataFieldTemplate in TLV string format |

dataWithType
const additionalDataFieldTemplateBinaryFormat = additionalDataFieldTemplate.dataWithType(Constants.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)

// OR

const additionalDataFieldTemplateRawFormat = additionalDataFieldTemplate.dataWithType(Constants.DATA_TYPE.RAW, ' '); // Raw Data

| Parameters | Description | Type | | ------ | ------ | ------ | | dataType | Data type value | Constants.DATA_TYPE.BINARY | Constants.DATA_TYPE.RAW | | indent | Indent character (Ex.: ' ') | string |

| Return Type | Description | | ------ | ------ | | string | AdditionalDataFieldTemplate in TLV binary OR TLV raw data format |

setBillNumber
const value = "34250";

additionalDataFieldTemplate.setBillNumber(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setMobileNumber
const value = "+5561991112222";

additionalDataFieldTemplate.setMobileNumber(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setStoreLabel
const value = "1234";

additionalDataFieldTemplate.setStoreLabel(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setLoyaltyNumber
const value = "12345";

additionalDataFieldTemplate.setLoyaltyNumber(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setReferenceLabel
const value = "example";

additionalDataFieldTemplate.setReferenceLabel(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setCustomerLabel
const value = "***";

additionalDataFieldTemplate.setCustomerLabel(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setTerminalLabel
const value = "A6008667";

additionalDataFieldTemplate.setTerminalLabel(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setPurposeTransaction
const value = "Some purpose";

additionalDataFieldTemplate.setPurposeTransaction(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setAdditionalConsumerDataRequest
const value = "ME";

additionalDataFieldTemplate.setAdditionalConsumerDataRequest(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

addRFUforEMVCo
const id = "03";
const value = "12345678";

additionalDataFieldTemplate.addRFUforEMVCo(id, value);

| Parameters | Description | Type | | ------ | ------ | ------ | | id | Tag ID | string | | value | Some value | string |

addPaymentSystemSpecific
const id = "03";
const value = Merchant.buildPaymentSystemSpecific();
value.setGloballyUniqueIdentifier("15600000000");
value.addPaymentSystemSpecific("03", "12345678");

additionalDataFieldTemplate.addPaymentSystemSpecific(id, value);

| Parameters | Description | Type | | ------ | ------ | ------ | | id | Tag ID | string | | value | Some value | string |

EMVQR

Represents an EMV QRCode.

const { Merchant } = require('steplix-emv-qrcps');
const { Constants } = Merchant;

const emvqr = Merchant.buildEMVQR();
Methods
generatePayload
const emvqrStringFormat = emvqr.generatePayload();

| Return Type | Description | | ------ | ------ | | string | EMV QRCode payload in string format. |

dataWithType
const emvqrBinaryFormat = emvqr.dataWithType(Constants.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)

// OR

const emvqrRawFormat = emvqr.dataWithType(Constants.DATA_TYPE.RAW, ' '); // Raw Data

| Parameters | Description | Type | | ------ | ------ | ------ | | dataType | Data type value | Constants.DATA_TYPE.BINARY | Constants.DATA_TYPE.RAW | | indent | Indent character (Ex.: ' ') | string |

| Return Type | Description | | ------ | ------ | | string | EMV QRCode in binary OR raw data format |

toBinary
const emvqrBinaryFormat = emvqr.toBinary(); // Binary Data (shown as hex bytes)

| Return Type | Description | | ------ | ------ | | string | EMV QRCode in binary format |

rawData
const emvqrBinaryFormat = emvqr.rawData(); // Raw Data

| Return Type | Description | | ------ | ------ | | string | EMV QRCode in raw data format |

validate
const isValid = emvqr.validate();

| Return Type | Description | | ------ | ------ | | boolean | True if required properties is valid otherwise throw an Error |

setPayloadFormatIndicator
const value = "01";

emvqr.setPayloadFormatIndicator(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setPointOfInitiationMethod
const value = "00";

emvqr.setPointOfInitiationMethod(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setMerchantCategoryCode
const value = "Technology";

emvqr.setMerchantCategoryCode(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setTransactionCurrency
const value = "BRL";

emvqr.setTransactionCurrency(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setTransactionAmount
const value = "20.5";

emvqr.setTransactionAmount(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setTipOrConvenienceIndicator
const value = "2";

emvqr.setTipOrConvenienceIndicator(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setValueOfConvenienceFeeFixed
const value = "2.00";

emvqr.setValueOfConvenienceFeeFixed(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setValueOfConvenienceFeePercentage
const value = "0.90";

emvqr.setValueOfConvenienceFeePercentage(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setCountryCode
const value = "55";

emvqr.setCountryCode(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setMerchantName
const value = "Merchant Organization";

emvqr.setMerchantName(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setMerchantCity
const value = "Brasilia";

emvqr.setMerchantCity(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setPostalCode
const value = "71715-000";

emvqr.setPostalCode(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setCRC
const value = "AF35";

emvqr.setCRC(value);

| Parameters | Description | Type | | ------ | ------ | ------ | | value | Some value | string |

setAdditionalDataFieldTemplate
const additionalDataFieldTemplate = Merchant.buildAdditionalDataFieldTemplate();
additionalDataFieldTemplate.setStoreLabel("1234");
additionalDataFieldTemplate.setCustomerLabel("***");
additionalDataFieldTemplate.setTerminalLabel("A6008667");
additionalDataFieldTemplate.setAdditionalConsumerDataRequest("ME");

emvqr.setAdditionalDataFieldTemplate(additionalDataFieldTemplate);

| Parameters | Description | Type | | ------ | ------ | ------ | | additionalDataFieldTemplate | Some additional data field template | AdditionalDataFieldTemplate |

setMerchantInformationLanguageTemplate
let merchantInformationLanguageTemplate = Merchant.buildMerchantInformationLanguageTemplate();
merchantInformationLanguageTemplate.setLanguagePreference("PT");
merchantInformationLanguageTemplate.setMerchantName("Merchant Organization");
merchantInformationLanguageTemplate.setMerchantCity("Brasilia");
emvqr.setMerchantInformationLanguageTemplate(merchantInformationLanguageTemplate);

| Parameters | Description | Type | | ------ | ------ | ------ | | merchantInformationLanguageTemplate | Some merchant information language template | MerchantInformationLanguageTemplate |

addMerchantAccountInformation
const id = "27";

const merchantAccountInformation = Merchant.buildMerchantAccountInformation();
merchantAccountInformation.setGloballyUniqueIdentifier("com.p2pqrpay");
merchantAccountInformation.addPaymentNetworkSpecific("01", "PAPHPHM1XXX");
merchantAccountInformation.addPaymentNetworkSpecific("02", "99964403");
merchantAccountInformation.addPaymentNetworkSpecific("04", "09985903943");
merchantAccountInformation.addPaymentNetworkSpecific("05", "+639985903943");

emvqr.addMerchantAccountInformation(id, merchantAccountInformation);

| Parameters | Description | Type | | ------ | ------ | ------ | | id | Tag ID | string | | value | Some merchant account information | string |

addUnreservedTemplates
const id = "80";

const unreservedTemplate = Merchant.buildUnreservedTemplate();
unreservedTemplate.setGloballyUniqueIdentifier("A011223344998877");
unreservedTemplate.addContextSpecificData("07", "12345678");

emvqr.addUnreservedTemplates(id, unreservedTemplate);

| Parameters | Description | Type | | ------ | ------ | ------ | | id | Tag ID | string | | value | Some unreserved template | string |

addRFUforEMVCo
const id = "03";
const value = "12345678";

emvqr.addRFUforEMVCo(id, value);

| Parameters | Description | Type | | ------ | ------ | ------ | | id | Tag ID | string | | value | Some value | string |

Consumer Module

You can use this Module by importing:

const { Consumer } = require('steplix-emv-qrcps')

Methods

buildBERTLV

const berTLV = Consumer.buildBERTLV();

// ... OR

const berTLV = Consumer.buildBERTLV(
    dataApplicationDefinitionFileName,
    dataApplicationLabel,
    dataTrack2EquivalentData,
    dataApplicationPAN,
    dataCardholderName,
    dataLanguagePreference,
    dataIssuerURL,
    dataApplicationVersionNumber,
    dataIssuerApplicationData,
    dataTokenRequestorID,
    dataPaymentAccountReference,
    dataLast4DigitsOfPAN,
    dataApplicationCryptogram,
    dataApplicationTransactionCounter,
    dataUnpredictableNumber
);

| Parameter | Description | Type | | ------ | ------ | ------ | | dataApplicationDefinitionFileName | Application Definition Name | string(in-hex-decimal-format) | | dataApplicationLabel | Application Label | string | | dataTrack2EquivalentData | Track to equivalent data | string(in-hex-decimal-format) | | dataApplicationPAN | Application PAN | string(in-hex-decimal-format) | | dataCardholderName | Cardholder Name | string | | dataLanguagePreference | Language Preference | string | | dataIssuerURL | Issuer URL | string | | dataApplicationVersionNumber | Application Version Number | string(in-hex-decimal-format) | | dataIssuerApplicationData | Issuer Application Data | string(in-hex-decimal-format) | | dataTokenRequestorID | Token Requestor ID | string(in-hex-decimal-format) | | dataPaymentAccountReference | Payment Account Reference | string(in-hex-decimal-format) | | dataLast4DigitsOfPAN | Last 4 digits of PAN | string(in-hex-decimal-format) | | dataApplicationCryptogram | Application Cryptogram | string(in-hex-decimal-format) | | dataApplicationTransactionCounter | Application Transaction Counter | string(in-hex-decimal-format) | | dataUnpredictableNumber | Unpredictable Number | string(in-hex-decimal-format) |

| Return Type | Description | | ------ | ------ | | BERTLV | It means the TLV Object of the consumer module. |

buildApplicationSpecificTransparentTemplate

const applicationSpecificTransparentTemplate = Consumer.buildApplicationSpecificTransparentTemplate();

// ... OR

const applicationSpecificTransparentTemplate = Consumer.buildApplicationSpecificTransparentTemplate(
	berTLV = BERTLV()
);

| Parameter | Description | Type | | ------ | ------ | ------ | | berTLV | BERTLV Object | BERTLV |

| Return Type | Description | | ------ | ------ | | ApplicationSpecificTransparentTemplate | It means an object that stores an application specific transparent template. |

buildApplicationTemplate

const applicationTemplate = Consumer.buildApplicationTemplate();

// ... OR

const applicationTemplate = Consumer.buildApplicationTemplate(
	berTLV = BERTLV(),
	applicationSpecificTransparentTemplates = []
);

| Parameter | Description | Type | | ------ | ------ | ------ | | berTLV | BERTLV Object | BERTLV | | applicationSpecificTransparentTemplates | Application specific transparent templates | array (ApplicationSpecificTransparentTemplate) |

| Return Type | Description | | ------ | ------ | | ApplicationTemplate | It means an object that stores an application template. |

buildCommonDataTransparentTemplate

const commonDataTransparentTemplate = Consumer.buildCommonDataTransparentTemplate();

// ... OR

const commonDataTransparentTemplate = Consumer.buildCommonDataTransparentTemplate(
    berTLV = BERTLV()
);

| Parameter | Description | Type | | ------ | ------ | ------ | | berTLV | BERTLV Object | BERTLV |

| Return Type | Description | | ------ | ------ | | CommonDataTransparentTemplate | It means an object that stores a common data transparent template. |

buildCommonDataTemplate

const commonDataTemplate = Consumer.buildCommonDataTemplate();

// ... OR

const commonDataTemplate = Consumer.buildCommonDataTemplate(
    berTLV = BERTLV(),
	commonDataTransparentTemplates = [] 
);

| Parameter | Description | Type | | ------ | ------ | ------ | | berTLV | BERTLV Object | BERTLV | | commonDataTransparentTemplates | Common data transparent templates | array (CommonDataTransparentTemplate) |

| Return Type | Description | | ------ | ------ | | CommonDataTemplate | It means an object that stores a common data template. |

buildEMVQR

const EMVQR = Consumer.buildEMVQR();

// ... OR

const EMVQR = Consumer.buildEMVQR(
    dataPayloadFormatIndicator,
    applicationTemplates,
    commonDataTemplates
);

| Parameter | Description | Type | | ------ | ------ | ------ | | dataPayloadFormatIndicator | Payload Format Indicator | string | | applicationTemplates | Application Templates | array [ ApplicationTemplate ] | | commonDataTemplates | Common Data templates | array [ CommonDataTemplate ] |

| Return Type | Description | | ------ | ------ | | EMVQR | It means an object that represents an EMV QRCode. |

Object Types

BERTLV

Represents a Basic Encoding Rules TAG + Length + Value.

const { Consumer } = require('steplix-emv-qrcps');
const { Constants } = Merchant;

const berTLV = Merchant.buildBERTLV();
Methods
setDataApplicationDefinitionFileName
berTLV.setDataApplicationDefinitionFileName("A0000000555555");

| Parameters | Description | Type | | ------ | ------ | ------ | | dataApplicationDefinitionFileName | Application Definition File (ADF) Name | string(in-hex-decimal-format) |

setDataApplicationLabel
berTLV.setDataApplicationLabel("Product1");

| Parameters | Description | Type | | ------ | ------ | ------ | | setDataApplicationLabel | Application Label | string |

setDataTrack2EquivalentData
berTLV.setDataTrack2EquivalentData("AABBCCDD");

| Parameters | Description | Type | | ------ | ------ | ------ | | dataTrack2EquivalentData | Track 2 Equivalent Data | string(in-hex-decimal-format) |

setDataApplicationPAN
berTLV.setDataApplicationPAN("1234567890123458");

| Parameters | Description | Type | | ------ | ------ | ------ | | dataApplicationPAN | Application PAN | string(in-hex-decimal-format) |

setDataCardholderName
berTLV.setDataCardholderName("CARDHOLDER/EMV");

| Parameters | Description | Type | | ------ | ------ | ------ | | dataCardholderName | Cardholder Name | string |

setDataLanguagePreference
berTLV.setDataLanguagePreference("ruesdeen");

| Parameters | Description | Type | | ------ | ------ | ------ | | dataLanguagePreference | Language Preference | string |

setDataIssuerURL
berTLV.setDataIssuerURL("http://someuri.com");

| Parameters | Description | Type | | ------ | ------ | ------ | | dataIssuerURL | Issuer URL | string |

setDataApplicationVersionNumber
berTLV.setDataApplicationVersionNumber("04");

| Parameters | Description | Type | | ------ | ------ | ------ | | dataApplicationVersionNumber | Application Version Number | string(in-hex-decimal-format) |

setDataIssuerApplicationData
berTLV.setDataIssuerApplicationData("06010A03000000");

| Parameters | Description | Type | | ------ | ------ | ------ | | dataIssuerApplicationData | Issuer application data | string(in-hex-decimal-format) |

setDataTokenRequestorID
berTLV.setDataTokenRequestorID("0601AABBCC");

| Parameters | Description | Type | | ------ | ------ | ------ | | dataTokenRequestorID | Token Requestor ID | string(in-hex-decimal-format) |

setDataPaymentAccountReference
berTLV.setDataPaymentAccountReference("0708AABBCCDD");

| Parameters | Description | Type | | ------ | ------ | ------ | | dataPaymentAccountReference | Payment Account Reference | string(in-hex-decimal-format) |

setDataLast4DigitsOfPAN
berTLV.setDataLast4DigitsOfPAN("07080201");

| Parameters | Description | Type | | ------ | ------ | ------ | | dataLast4DigitsOfPAN | Last 4 Digits of PAN | string(in-hex-decimal-format) |

setDataApplicationCryptogram
berTLV.setDataApplicationCryptogram("584FD385FA234BCC");

| Parameters | Description | Type | | ------ | ------ | ------ | | dataApplicationCryptogram | Application Cryptogram | string(in-hex-decimal-format) |

setDataApplicationTransactionCounter
berTLV.setDataApplicationTransactionCounter("0001");

| Parameters | Description | Type | | ------ | ------ | ------ | | dataApplicationTransactionCounter | Application Transaction Counter | string(in-hex-decimal-format) |

setDataUnpredictableNumber
berTLV.setDataUnpredictableNumber("6D58EF13");

| Parameters | Description | Type | | ------ | ------ | ------ | | dataUnpredictableNumber | Unpredictable Number | string(in-hex-decimal-format) |

format
berTLV.format();

| Return Type | Description | | ------ | ------ | | string | BERTLV in string format |

dataWithType
const berTlvBinaryFormat = berTLV.dataWithType(Constants.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)

// OR

const berTlvRawFormat = berTLV.dataWithType(Constants.DATA_TYPE.RAW, ' '); // Raw Data

| Parameters | Description | Type | | ------ | ------ | ------ | | dataType | Data type value | Constants.DATA_TYPE.BINARY | Constants.DATA_TYPE.RAW | | indent | Indent character (Ex.: ' ') | string |

| Return Type | Description | | ------ | ------ | | string | BERTLV in binary OR raw data format |

ApplicationSpecificTransparentTemplate

Represents an application specific transparent template.

const { Consumer } = require('steplix-emv-qrcps');
const { Constants } = Consumer;

const applicationSpecificTransparentTemplate = Consumer.buildApplicationSpecificTransparentTemplate();
Methods
setBERTLV
const berTLV = Consumer.buildBERTLV();

// Setters assignments in berTLV

applicationSpecificTransparentTemplate.setBERTLV(berTLV);

| Parameters | Description | Type | | ------ | ------ | ------ | | berTLV | BERTLV Object | BERTLV |

format
applicationSpecificTransparentTemplate.format();

| Return Type | Description | | ------ | ------ | | string | ApplicationSpecificTransparentTemplate in string format |

dataWithType
const binaryFormat = applicationSpecificTransparentTemplate.dataWithType(Constants.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)

// OR

const rawFormat = applicationSpecificTransparentTemplate.dataWithType(Constants.DATA_TYPE.RAW, ' '); // Raw Data

| Parameters | Description | Type | | ------ | ------ | ------ | | dataType | Data type value | Constants.DATA_TYPE.BINARY | Constants.DATA_TYPE.RAW | | indent | Indent character (Ex.: ' ') | string |

| Return Type | Description | | ------ | ------ | | string | Application specific transparent template in binary OR raw data format |

CommonDataTransparentTemplate

Represents a common data transparent template.

const { Consumer } = require('steplix-emv-qrcps');
const { Constants } = Consumer;

const commonDataTransparentTemplate = Consumer.buildCommonDataTransparentTemplate();
Methods
setBERTLV
const berTLV = Consumer.buildBERTLV();

// Setters assignments in berTLV

commonDataTransparentTemplate.setBERTLV(berTLV);

| Parameters | Description | Type | | ------ | ------ | ------ | | berTLV | BERTLV Object | BERTLV |

format
commonDataTransparentTemplate.format();

| Return Type | Description | | ------ | ------ | | string | CommonDataTransparentTemplate in string format |

dataWithType
const binaryFormat = commonDataTransparentTemplate.dataWithType(Constants.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)

// OR

const rawFormat = commonDataTransparentTemplate.dataWithType(Constants.DATA_TYPE.RAW, ' '); // Raw Data

| Parameters | Description | Type | | ------ | ------ | ------ | | dataType | Data type value | Constants.DATA_TYPE.BINARY | Constants.DATA_TYPE.RAW | | indent | Indent character (Ex.: ' ') | string |

| Return Type | Description | | ------ | ------ | | string | Common data transparent template in binary OR raw data format |

ApplicationTemplate

Represents an application template.

const { Consumer } = require('steplix-emv-qrcps');
const { Constants } = Consumer;

const applicationTemplate = Consumer.buildApplicationTemplate();
Methods
setBERTLV
const berTLV = Consumer.buildBERTLV();

// Setters assignments in berTLV

applicationTemplate.setBERTLV(berTLV);

| Parameters | Description | Type | | ------ | ------ | ------ | | berTLV | BERTLV Object | BERTLV |

addApplicationSpecificTransparentTemplate
const applicationSpecificTransparentTemplate = Consumer.buildApplicationSpecificTransparentTemplate();

const berTLV1 = Consumer.buildBERTLV();
berTLV1.setDataApplicationDefinitionFileName("A0000000555555");
berTLV1.setDataApplicationLabel("Product1");
applicationSpecificTransparentTemplate.setBERTLV(berTLV1);

applicationTemplate.addApplicationSpecificTransparentTemplate(applicationSpecificTransparentTemplate);

| Parameters | Description | Type | | ------ | ------ | ------ | | applicationSpecificTransparentTemplate | An application specific transparent template | ApplicationSpecificTransparentTemplate |

format
applicationTemplate.format();

| Return Type | Description | | ------ | ------ | | string | ApplicationTemplate in string format |

dataWithType
const binaryFormat = applicationTemplate.dataWithType(Constants.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)

// OR

const rawFormat = applicationTemplate.dataWithType(Constants.DATA_TYPE.RAW, ' '); // Raw Data

| Parameters | Description | Type | | ------ | ------ | ------ | | dataType | Data type value | Constants.DATA_TYPE.BINARY | Constants.DATA_TYPE.RAW | | indent | Indent character (Ex.: ' ') | string |

| Return Type | Description | | ------ | ------ | | string | Common data transparent template in binary OR raw data format |

CommonDataTemplate

Represents a common data template.

const { Consumer } = require('steplix-emv-qrcps');
const { Constants } = Consumer;

const commonDataTemplate = Consumer.buildCommonDataTemplate();
Methods
setBERTLV
const berTLV = Consumer.buildBERTLV();

// Setters assignments in berTLV

commonDataTemplate.setBERTLV(berTLV);

| Parameters | Description | Type | | ------ | ------ | ------ | | berTLV | BERTLV Object | BERTLV |

addCommonDataTransparentTemplate
const commonDataTransparentTemplate = Consumer.buildCommonDataTransparentTemplate();

const berTLV = Consumer.buildBERTLV();
berTLV.setDataIssuerApplicationData("06010A03000000");
berTLV.setDataApplicationCryptogram("584FD385FA234BCC");
berTLV.setDataApplicationTransactionCounter("0001");
berTLV.setDataUnpredictableNumber("6D58EF13");
commonDataTransparentTemplate.setBERTLV(berTLV);

commonDataTemplate.addCommonDataTransparentTemplate(commonDataTransparentTemplate);

| Parameters | Description | Type | | ------ | ------ | ------ | | commonDataTransparentTemplate | A common data transparent template | CommonDataTransparentTemplate |

format
commonDataTemplate.format();

| Return Type | Description | | ------ | ------ | | string | CommonDataTemplate in string format |

dataWithType
const binaryFormat = commonDataTemplate.dataWithType(Constants.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)

// OR

const rawFormat = commonDataTemplate.dataWithType(Constants.DATA_TYPE.RAW, ' '); // Raw Data

| Parameters | Description | Type | | ------ | ------ | ------ | | dataType | Data type value | Constants.DATA_TYPE.BINARY | Constants.DATA_TYPE.RAW | | indent | Indent character (Ex.: ' ') | string |

| Return Type | Description | | ------ | ------ | | string | Common data transparent template in binary OR raw data format |

EMVQR

Represents an EMV QRCode.

const { Consumer } = require('steplix-emv-qrcps');
const { Constants } = Consumer;

const emvqr = Consumer.buildEMVQR();
Methods
setDataPayloadFormatIndicator
emvqr.setDataPayloadFormatIndicator("CPV01");

| Parameters | Description | Type | | ------ | ------ | ------ | | dataPayloadFormatIndicator | Payload Format Indicator | string |

addApplicationTemplate
const applicationTemplate1 = Consumer.buildApplicationTemplate();
const berTLV1 = Consumer.buildBERTLV();
berTLV1.setDataApplicationDefinitionFileName("A0000000555555");
berTLV1.setDataApplicationLabel("Product1");
applicationTemplate1.setBERTLV(berTLV1);

emvqr.addApplicationTemplate(applicationTemplate1);

const applicationTemplate2 = Consumer.buildApplicationTemplate();
const berTLV2 = Consumer.buildBERTLV();
berTLV2.setDataApplicationDefinitionFileName("A0000000666666");
berTLV2.setDataApplicationLabel("Product2");
applicationTemplate2.setBERTLV(berTLV2);

emvqr.addApplicationTemplate(applicationTemplate2);

| Parameters | Description | Type | | ------ | ------ | ------ | | applicationTemplate | An application template | ApplicationTemplate |

addCommonDataTemplate
const commonDataTemplate = Consumer.buildCommonDataTemplate();

const berTLV1 = Consumer.buildBERTLV();
berTLV1.setDataApplicationPAN("1234567890123458");
berTLV1.setDataCardholderName("CARDHOLDER/EMV");
berTLV1.setDataLanguagePreference("ruesdeen");
commonDataTemplate.setBERTLV(berTLV1);

const commonDataTransparentTemplate = Consumer.buildCommonDataTransparentTemplate();

const berTLV2 = Consumer.buildBERTLV();
berTLV2.setDataIssuerApplicationData("06010A03000000");
berTLV2.setDataApplicationCryptogram("584FD385FA234BCC");
berTLV2.setDataApplicationTransactionCounter("0001");
berTLV2.setDataUnpredictableNumber("6D58EF13");
commonDataTransparentTemplate.setBERTLV(berTLV2);

commonDataTemplate.addCommonDataTransparentTemplate(commonDataTransparentTemplate);

emvqr.addCommonDataTemplate(commonDataTemplate);

| Parameters | Description | Type | | ------ | ------ | ------ | | commonDataTemplate | A common data template | CommonDataTemplate |

generatePayload
commonDataTemplate.generatePayload();

| Return Type | Description | | ------ | ------ | | string | EMVQR in base64 string format |

toBinary
const emvqrBinaryFormat = emvqr.toBinary(); // Binary Data (shown as hex bytes)

| Return Type | Description | | ------ | ------ | | string | EMV QRCode in binary format |

rawData
const emvqrBinaryFormat = emvqr.rawData(); // Raw Data

| Return Type | Description | | ------ | ------ | | string | EMV QRCode in raw data format |