emv-qrcps

Project to generate QRCode in EMV specification formmat.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
emv-qrcps
0.0.75 years ago5 years agoMinified + gzip package size for emv-qrcps in KB

Readme

This library was made to help people that are using NodeJS to generate and parse EMV QRcode according with the specifications:
Installing
npm install 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('emv-qrcode');

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('emv-qrcode');
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.DATATYPE.BINARY \| Constants.DATATYPE.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('emv-qrcode');
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.DATATYPE.BINARY \| Constants.DATATYPE.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('emv-qrcode');
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.DATATYPE.BINARY \| Constants.DATATYPE.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('emv-qrcode');
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.DATATYPE.BINARY \| Constants.DATATYPE.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('emv-qrcode');
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.DATATYPE.BINARY \| Constants.DATATYPE.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('emv-qrcode');
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.DATATYPE.BINARY \| Constants.DATATYPE.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('emv-qrcode');
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.DATATYPE.BINARY \| Constants.DATATYPE.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('emv-qrcode')

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('emv-qrcode');
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.DATATYPE.BINARY \| Constants.DATATYPE.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('emv-qrcode');
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.DATATYPE.BINARY \| Constants.DATATYPE.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('emv-qrcode');
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.DATATYPE.BINARY \| Constants.DATATYPE.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('emv-qrcode');
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.DATATYPE.BINARY \| Constants.DATATYPE.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('emv-qrcode');
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.DATATYPE.BINARY \| Constants.DATATYPE.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('emv-qrcode');
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 |