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