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 |