This library was made to help people that to generate and parse EMV QRcode according with the specifications:
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:
using emv_qrcps.QrCode.Merchant;
Instances
TLV
TLV tlv = new TLV(tag, length, value);
Parameter |
Description |
Type |
tag |
Payload Format Indicator |
string |
length |
Point of Initiation Method |
int |
value |
Merchant Account Information |
string |
| TLV
| It means an object that stores a Tag + Lenght + Value. |
MerchantEMVQR
MerchantEMVQR emvqr = new MerchantEMVQR();
// ... OR
MerchantEMVQR emvq = new MerchantEMVQR()
(
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 |
Dictionary<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 |
TLV[] |
unreservedTemplates |
Unreserved Templates |
Dictionary<string, UnreservedTemplate> |
Return Type |
Description |
MerchantEMVQR |
It means an object that represents an EMV QRCode. |
AdditionalDataFieldTemplate
AdditionalDataFieldTemplate additionalDataFieldTemplate = new AdditionalDataFieldTemplate();
// ... OR
AdditionalDataFieldTemplate additionalDataFieldTemplate = new AdditionalDataFieldTemplate
(
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 |
TLV[] |
paymentSystemSpecific |
Payment System specific templates |
Dictionary<string, PaymentSystemSpecific> |
Return Type |
Description |
AdditionalDataFieldTemplate |
It means an object that represents an additional data field template. |
MerchantInformationLanguageTemplate merchantInformationLanguageTemplate = new MerchantInformationLanguageTemplate();
// ... OR
MerchantInformationLanguageTemplate merchantInformationLanguageTemplate = new MerchantInformationLanguageTemplate
(
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 |
TLV[] |
Return Type |
Description |
MerchantInformationLanguageTemplate |
It means an object that represents a merchant information language template. |
MerchantAccountInformation merchantAccountInformation = new MerchantAccountInformation();
// ... OR
MerchantAccountInformation merchantAccountInformation = new MerchantAccountInformation(
globallyUniqueIdentifier,
paymentNetworkSpecific,
);
Parameter |
Description |
Type |
globallyUniqueIdentifier |
Globally unique identifier |
TLV |
paymentNetworkSpecific |
Array of payment network specific |
TLV[] |
Return Type |
Description |
MerchantAccountInformation |
It means an object that represents a merchant account information. |
UnreservedTemplate
UnreservedTemplate unreservedTemplate = new UnreservedTemplate();
// ... OR
UnreservedTemplate unreservedTemplate = new UnreservedTemplate
(
globallyUniqueIdentifier,
paymentNetworkSpecific,
);
Parameter |
Description |
Type |
globallyUniqueIdentifier |
Globally unique identifier |
TLV |
contextSpecificData |
Array of context of specific data |
TLV[] |
Return Type |
Description |
UnreservedTemplate |
It means an object that represents an unreserved template. |
Object Types
TLV
Represents a TAG + Length + Value.
using emv_qrcps.QrCode.Merchant;
string tag = "01";
string value = "Example";
int length = value.Length;
TLV tlv = new TLV(tag, length, value);
Methods
ToString
string tlvStringFormat = TLV.ToString();
Return Type |
Description |
string |
TLV in string format |
DataWithType
string tlvBinaryFormat = TLV.DataWithType(MerchantConsts.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)
// OR
string tlvRawFormat = TLV.DataWithType(MerchantConsts.DATA_TYPE.RAW, ' '); // Raw Data
Parameters |
Description |
Type |
dataType |
Data type value |
MerchantConsts.DATA_TYPE.BINARY | MerchantConsts.DATA_TYPE.RAW |
indent |
Indent character (Ex.: ' ') |
string |
Return Type |
Description |
string |
TLV in binary OR raw data format |
Represents a merchant account information.
using emv_qrcps.QrCode.Merchant;
MerchantAccountInformation merchantAccountInformation = new MerchantAccountInformation();
Methods
ToString
string merchantAccountInformationStringFormat = merchantAccountInformation.ToString();
Return Type |
Description |
string |
MerchantAccountInformation in TLV string format |
DataWithType
string merchantAccountInformationBinaryFormat = merchantAccountInformation.DataWithType(MerchantConsts.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)
// OR
string merchantAccountInformationRawFormat = merchantAccountInformation.DataWithType(MerchantConsts.DATA_TYPE.RAW, ' '); // Raw Data
Parameters |
Description |
Type |
dataType |
Data type value |
MerchantConsts.DATA_TYPE.BINARY | MerchantConsts.DATA_TYPE.RAW |
indent |
Indent character (Ex.: ' ') |
string |
Return Type |
Description |
string |
MerchantAccountInformation in TLV binary OR TLV raw data format |
SetGloballyUniqueIdentifier
string value = "15600000000";
merchantAccountInformation.SetGloballyUniqueIdentifier(value);
Parameters |
Description |
Type |
value |
Some value |
string |
AddPaymentNetworkSpecific ( Replaced by AddContextSpecificData)
string id = "03";
string value = "12345678";
//merchantAccountInformation.AddPaymentNetworkSpecific(id, value);
merchantAccountInformation.AddContextSpecificData(id, value);
Parameters |
Description |
Type |
id |
Tag ID |
string |
value |
Some value |
string |
Represents a merchant information language template.
using emv_qrcps.QrCode.Merchant;
MerchantInformationLanguageTemplate merchantInformationLanguageTemplate = new MerchantInformationLanguageTemplate();
Methods
ToString
string merchantInformationLanguageTemplateStringFormat = merchantInformationLanguageTemplate.ToString();
Return Type |
Description |
string |
MerchantInformationLanguageTemplate in TLV string format |
DataWithType
string merchantInformationLanguageTemplateBinaryFormat = merchantInformationLanguageTemplate.DataWithType(MerchantConsts.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)
// OR
string merchantInformationLanguageTemplateRawFormat = merchantInformationLanguageTemplate.DataWithType(MerchantConsts.DATA_TYPE.RAW, ' '); // Raw Data
Parameters |
Description |
Type |
dataType |
Data type value |
MerchantConsts.DATA_TYPE.BINARY | MerchantConsts.DATA_TYPE.RAW |
indent |
Indent character (Ex.: ' ') |
string |
Return Type |
Description |
string |
MerchantInformationLanguageTemplate in TLV binary OR TLV raw data format |
Validate
bool isValid = merchantInformationLanguageTemplate.Validate();
Return Type |
Description |
boolean |
True if required properties is valid otherwise throw an Error |
SetLanguagePreference
string value = "PT";
merchantInformationLanguageTemplate.SetLanguagePreference(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetMerchantName
string value = "Merchant Organization";
merchantInformationLanguageTemplate.SetMerchantName(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetMerchantCity
string value = "Brasilia";
merchantInformationLanguageTemplate.SetMerchantCity(value);
Parameters |
Description |
Type |
value |
Some value |
string |
AddRFUforEMVCo
string id = "03";
string value = "12345678";
merchantInformationLanguageTemplate.AddRFUforEMVCo(id, value);
Parameters |
Description |
Type |
id |
Tag ID |
string |
value |
Some value |
string |
UnreservedTemplate
Represents a merchant account information.
using emv_qrcps.QrCode.Merchant;
UnreservedTemplate unreservedTemplate = new UnreservedTemplate();
Methods
ToString
string unreservedTemplateStringFormat = unreservedTemplate.ToString();
Return Type |
Description |
string |
UnreservedTemplate in TLV string format |
DataWithType
string unreservedTemplateBinaryFormat = unreservedTemplate.DataWithType(MerchantConsts.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)
// OR
string unreservedTemplateRawFormat = unreservedTemplate.DataWithType(MerchantConsts.DATA_TYPE.RAW, ' '); // Raw Data
Parameters |
Description |
Type |
dataType |
Data type value |
MerchantConsts.DATA_TYPE.BINARY | MerchantConsts.DATA_TYPE.RAW |
indent |
Indent character (Ex.: ' ') |
string |
Return Type |
Description |
string |
UnreservedTemplate in TLV binary OR TLV raw data format |
SetGloballyUniqueIdentifier
string 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.
using emv_qrcps.QrCode.Merchant;
PaymentSystemSpecific paymentSystemSpecific = new PaymentSystemSpecific();
Methods
ToString
string paymentSystemSpecificStringFormat = paymentSystemSpecific.ToString();
Return Type |
Description |
string |
PaymentSystemSpecific in TLV string format |
DataWithType
string paymentSystemSpecificBinaryFormat = paymentSystemSpecific.DataWithType(MerchantConsts.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)
// OR
string paymentSystemSpecificRawFormat = paymentSystemSpecific.DataWithType(MerchantConsts.DATA_TYPE.RAW, ' '); // Raw Data
Parameters |
Description |
Type |
dataType |
Data type value |
MerchantConsts.DATA_TYPE.BINARY | MerchantConsts.DATA_TYPE.RAW |
indent |
Indent character (Ex.: ' ') |
string |
Return Type |
Description |
string |
PaymentSystemSpecific in TLV binary OR TLV raw data format |
SetGloballyUniqueIdentifier
string value = "15600000000";
paymentSystemSpecific.SetGloballyUniqueIdentifier(value);
Parameters |
Description |
Type |
value |
Some value |
string |
AddPaymentSystemSpecific ( Replaced by AddContextSpecificData)
string id = "03";
string value = "12345678";
paymentSystemSpecific.AddContextSpecificData(id, value);
Parameters |
Description |
Type |
id |
Tag ID |
string |
value |
Some value |
string |
AdditionalDataFieldTemplate
Represents an additional data field template.
using emv_qrcps.QrCode.Merchant;
AdditionalDataFieldTemplate additionalDataFieldTemplate = new AdditionalDataFieldTemplate();
Methods
ToString
string additionalDataFieldTemplateStringFormat = additionalDataFieldTemplate.ToString();
Return Type |
Description |
string |
AdditionalDataFieldTemplate in TLV string format |
DataWithType
string additionalDataFieldTemplateBinaryFormat = additionalDataFieldTemplate.DataWithType(MerchantConsts.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)
// OR
string additionalDataFieldTemplateRawFormat = additionalDataFieldTemplate.DataWithType(MerchantConsts.DATA_TYPE.RAW, ' '); // Raw Data
Parameters |
Description |
Type |
dataType |
Data type value |
MerchantConsts.DATA_TYPE.BINARY | MerchantConsts.DATA_TYPE.RAW |
indent |
Indent character (Ex.: ' ') |
string |
Return Type |
Description |
string |
AdditionalDataFieldTemplate in TLV binary OR TLV raw data format |
SetBillNumber
string value = "34250";
additionalDataFieldTemplate.SetBillNumber(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetMobileNumber
string value = "+5561991112222";
additionalDataFieldTemplate.SetMobileNumber(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetStoreLabel
string value = "1234";
additionalDataFieldTemplate.SetStoreLabel(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetLoyaltyNumber
string value = "12345";
additionalDataFieldTemplate.SetLoyaltyNumber(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetReferenceLabel
string value = "example";
additionalDataFieldTemplate.SetReferenceLabel(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetCustomerLabel
string value = "***";
additionalDataFieldTemplate.SetCustomerLabel(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetTerminalLabel
string value = "A6008667";
additionalDataFieldTemplate.SetTerminalLabel(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetPurposeTransaction
string value = "Some purpose";
additionalDataFieldTemplate.SetPurposeTransaction(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetAdditionalConsumerDataRequest
string value = "ME";
additionalDataFieldTemplate.SetAdditionalConsumerDataRequest(value);
Parameters |
Description |
Type |
value |
Some value |
string |
AddRFUforEMVCo
string id = "03";
string value = "12345678";
additionalDataFieldTemplate.AddRFUforEMVCo(id, value);
Parameters |
Description |
Type |
id |
Tag ID |
string |
value |
Some value |
string |
AddPaymentSystemSpecific ( Replaced by AddContextSpecificData)
string id = "03";
string value = new PaymentSystemSpecific();
value.SetGloballyUniqueIdentifier("15600000000");
value.AddPaymentSystemSpecific("03", "12345678");
additionalDataFieldTemplate.AddContextSpecificData(id, value);
Parameters |
Description |
Type |
id |
Tag ID |
string |
value |
Some value |
string |
MerchantEMVQR
Represents an EMV QRCode.
using emv_qrcps.QrCode.Merchant;
string emvqr = new MerchantEMVQR();
Methods
GeneratePayload
string emvqrStringFormat = emvqr.GeneratePayload();
Return Type |
Description |
string |
EMV QRCode payload in string format. |
DataWithType
string emvqrBinaryFormat = emvqr.DataWithType(MerchantConsts.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)
// OR
string emvqrRawFormat = emvqr.DataWithType(MerchantConsts.DATA_TYPE.RAW, ' '); // Raw Data
Parameters |
Description |
Type |
dataType |
Data type value |
MerchantConsts.DATA_TYPE.BINARY | MerchantConsts.DATA_TYPE.RAW |
indent |
Indent character (Ex.: ' ') |
string |
Return Type |
Description |
string |
EMV QRCode in binary OR raw data format |
ToBinary
string emvqrBinaryFormat = emvqr.ToBinary(); // Binary Data (shown as hex bytes)
Return Type |
Description |
string |
EMV QRCode in binary format |
RawData
string emvqrBinaryFormat = emvqr.RawData(); // Raw Data
Return Type |
Description |
string |
EMV QRCode in raw data format |
Validate
bool isValid = emvqr.Validate();
Return Type |
Description |
boolean |
True if required properties is valid otherwise throw an Error |
string value = "01";
emvqr.SetPayloadFormatIndicator(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetPointOfInitiationMethod
string value = "00";
emvqr.setPointOfInitiationMethod(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetMerchantCategoryCode
string value = "Technology";
emvqr.setMerchantCategoryCode(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetTransactionCurrency
string value = "BRL";
emvqr.SetTransactionCurrency(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetTransactionAmount
string value = "20.5";
emvqr.SetTransactionAmount(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetTipOrConvenienceIndicator
string value = "2";
emvqr.SetTipOrConvenienceIndicator(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetValueOfConvenienceFeeFixed
string value = "2.00";
emvqr.SetValueOfConvenienceFeeFixed(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetValueOfConvenienceFeePercentage
string value = "0.90";
emvqr.SetValueOfConvenienceFeePercentage(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetCountryCode
string value = "55";
emvqr.SetCountryCode(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetMerchantName
string value = "Merchant Organization";
emvqr.SetMerchantName(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetMerchantCity
string value = "Brasilia";
emvqr.SetMerchantCity(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetPostalCode
string value = "71715-000";
emvqr.SetPostalCode(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetCRC
string value = "AF35";
emvqr.SetCRC(value);
Parameters |
Description |
Type |
value |
Some value |
string |
SetAdditionalDataFieldTemplate
AdditionalDataFieldTemplate additionalDataFieldTemplate = new AdditionalDataFieldTemplate();
additionalDataFieldTemplate.SetStoreLabel("1234");
additionalDataFieldTemplate.SetCustomerLabel("***");
additionalDataFieldTemplate.SetTerminalLabel("A6008667");
additionalDataFieldTemplate.SetAdditionalConsumerDataRequest("ME");
emvqr.SetAdditionalDataFieldTemplate(additionalDataFieldTemplate);
Parameters |
Description |
Type |
additionalDataFieldTemplate |
Some additional data field template |
AdditionalDataFieldTemplate |
MerchantInformationLanguageTemplate merchantInformationLanguageTemplate = new MerchantInformationLanguageTemplate();
merchantInformationLanguageTemplate.SetLanguagePreference("PT");
merchantInformationLanguageTemplate.SetMerchantName("Merchant Organization");
merchantInformationLanguageTemplate.SetMerchantCity("Brasilia");
emvqr.SetMerchantInformationLanguageTemplate(merchantInformationLanguageTemplate);
Parameters |
Description |
Type |
merchantInformationLanguageTemplate |
Some merchant information language template |
MerchantInformationLanguageTemplate |
string id = "27";
MerchantAccountInformation merchantAccountInformation = new MerchantAccountInformation();
merchantAccountInformation.SetGloballyUniqueIdentifier("com.p2pqrpay");
merchantAccountInformation.AddContextSpecificData("01", "PAPHPHM1XXX");
merchantAccountInformation.AddContextSpecificData("02", "99964403");
merchantAccountInformation.AddContextSpecificData("04", "09985903943");
merchantAccountInformation.AddContextSpecificData("05", "+639985903943");
emvqr.AddMerchantAccountInformation(id, merchantAccountInformation);
Parameters |
Description |
Type |
id |
Tag ID |
string |
value |
Some merchant account information |
string |
AddUnreservedTemplates
string id = "80";
string unreservedTemplate = new UnreservedTemplate();
unreservedTemplate.SetGloballyUniqueIdentifier("A011223344998877");
unreservedTemplate.AddContextSpecificData("07", "12345678");
emvqr.AddUnreservedTemplates(id, unreservedTemplate);
Parameters |
Description |
Type |
id |
Tag ID |
string |
value |
Some unreserved template |
string |
AddRFUforEMVCo
string id = "03";
string 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:
using emv_qrcps.QrCode.Consumer;
Instances
BERTLV
BERTLV berTLV = new BERTLV();
// ... OR
BERTLV berTLV = new BERTLV(
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. |
ApplicationSpecificTransparentTemplate
ApplicationSpecificTransparentTemplate applicationSpecificTransparentTemplate = new ApplicationSpecificTransparentTemplate();
// ... OR
ApplicationSpecificTransparentTemplate applicationSpecificTransparentTemplate = new ApplicationSpecificTransparentTemplate(
berTLV = BERTLV()
);
Parameter |
Description |
Type |
berTLV |
BERTLV Object |
BERTLV |
Return Type |
Description |
ApplicationSpecificTransparentTemplate |
It means an object that stores an application specific transparent template. |
ApplicationTemplate
ApplicationTemplate applicationTemplate = new ApplicationTemplate();
// ... OR
ApplicationTemplate applicationTemplate = new ApplicationTemplate(
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. |
CommonDataTransparentTemplate
CommonDataTransparentTemplate commonDataTransparentTemplate = new CommonDataTransparentTemplate();
// ... OR
CommonDataTransparentTemplate commonDataTransparentTemplate = new CommonDataTransparentTemplate(
berTLV = BERTLV()
);
Parameter |
Description |
Type |
berTLV |
BERTLV Object |
BERTLV |
Return Type |
Description |
CommonDataTransparentTemplate |
It means an object that stores a common data transparent template. |
CommonDataTemplate
CommonDataTemplate commonDataTemplate = new CommonDataTemplate();
// ... OR
CommonDataTemplate commonDataTemplate = new CommonDataTemplate(
berTLV = BERTLV(),
commonDataTransparentTemplates = []
);
Parameter |
Description |
Type |
berTLV |
BERTLV Object |
BERTLV |
commonDataTransparentTemplates |
Common data transparent templates |
AppTemplate[] |
Return Type |
Description |
CommonDataTemplate |
It means an object that stores a common data template. |
ConsumerEMVQR
ConsumerEMVQR emvqr = new ConsumerEMVQR();
// ... OR
ConsumerEMVQR emvqr = new ConsumerEMVQR(
dataPayloadFormatIndicator,
applicationTemplates,
commonDataTemplates
);
Parameter |
Description |
Type |
dataPayloadFormatIndicator |
Payload Format Indicator |
string |
applicationTemplates |
Application Templates |
AppTemplate[] |
commonDataTemplates |
Common Data templates |
CommonTemplate[] |
Return Type |
Description |
ConsumerEMVQR |
It means an object that represents an EMV QRCode. |
Object Types
BERTLV
Represents a Basic Encoding Rules TAG + Length + Value.
using emv_qrcps.QrCode.Consumer;
using emv-qrcps.QrCode.Merchant;
BERTLV berTLV = new BERTLV();
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) |
berTLV.Format();
Return Type |
Description |
string |
BERTLV in string format |
DataWithType
string berTlvBinaryFormat = berTLV.DataWithType(MerchantConsts.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)
// OR
string berTlvRawFormat = berTLV.DataWithType(MerchantConsts.DATA_TYPE.RAW, ' '); // Raw Data
Parameters |
Description |
Type |
dataType |
Data type value |
MerchantConsts.DATA_TYPE.BINARY | MerchantConsts.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.
using emv_qrcps.QrCode.Consumer;
using emv_qrcps.QrCode.Merchant;
ApplicationSpecificTransparentTemplate applicationSpecificTransparentTemplate = new ApplicationSpecificTransparentTemplate();
Methods
SetBERTLV
BERTLV berTLV = new BERTLV();
// Setters assignments in berTLV
applicationSpecificTransparentTemplate.SetBERTLV(berTLV);
Parameters |
Description |
Type |
berTLV |
BERTLV Object |
BERTLV |
applicationSpecificTransparentTemplate.Format();
Return Type |
Description |
string |
ApplicationSpecificTransparentTemplate in string format |
DataWithType
string binaryFormat = applicationSpecificTransparentTemplate.DataWithType(MerchantConsts.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)
// OR
string rawFormat = applicationSpecificTransparentTemplate.DataWithType(MerchantConsts.DATA_TYPE.RAW, ' '); // Raw Data
Parameters |
Description |
Type |
dataType |
Data type value |
MerchantConsts.DATA_TYPE.BINARY | MerchantConsts.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.
using emv_qrcps.QrCode.Consumer;
using emv_qrcps.QrCode.Merchant;
CommonDataTransparentTemplate commonDataTransparentTemplate = new CommonDataTransparentTemplate();
Methods
SetBERTLV
BERTLV berTLV = new BERTLV();
// Setters assignments in berTLV
commonDataTransparentTemplate.SetBERTLV(berTLV);
Parameters |
Description |
Type |
berTLV |
BERTLV Object |
BERTLV |
commonDataTransparentTemplate.Format();
Return Type |
Description |
string |
CommonDataTransparentTemplate in string format |
DataWithType
string binaryFormat = commonDataTransparentTemplate.DataWithType(MerchantConsts.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)
// OR
string rawFormat = commonDataTransparentTemplate.DataWithType(MerchantConsts.DATA_TYPE.RAW, ' '); // Raw Data
Parameters |
Description |
Type |
dataType |
Data type value |
MerchantConsts.DATA_TYPE.BINARY | MerchantConsts.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.
using emv_qrcps.QrCode.Consumer;
using emv_qrcps.QrCode.Merchant;
ApplicationTemplate applicationTemplate = new ApplicationTemplate();
Methods
SetBERTLV
BERTLV berTLV = new BERTLV();
// Setters assignments in berTLV
applicationTemplate.SetBERTLV(berTLV);
Parameters |
Description |
Type |
berTLV |
BERTLV Object |
BERTLV |
AddApplicationSpecificTransparentTemplate
ApplicationSpecificTransparentTemplate applicationSpecificTransparentTemplate = Consumer.buildApplicationSpecificTransparentTemplate();
BERTLV berTLV1 = new BERTLV();
berTLV1.SetDataApplicationDefinitionFileName("A0000000555555");
berTLV1.SetDataApplicationLabel("Product1");
applicationSpecificTransparentTemplate.SetBERTLV(berTLV1);
applicationTemplate.AddApplicationSpecificTransparentTemplate(applicationSpecificTransparentTemplate);
Parameters |
Description |
Type |
applicationSpecificTransparentTemplate |
An application specific transparent template |
ApplicationSpecificTransparentTemplate |
applicationTemplate.Format();
Return Type |
Description |
string |
ApplicationTemplate in string format |
DataWithType
string binaryFormat = applicationTemplate.DataWithType(MerchantConsts.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)
// OR
string rawFormat = applicationTemplate.DataWithType(MerchantConsts.DATA_TYPE.RAW, ' '); // Raw Data
Parameters |
Description |
Type |
dataType |
Data type value |
MerchantConsts.DATA_TYPE.BINARY | MerchantConsts.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.
using emv_qrcps.QrCode.Consumer;
using emv_qrcps.QrCode.Merchant;
CommonDataTemplate commonDataTemplate = new CommonDataTemplate();
Methods
SetBERTLV
BERTLV berTLV = new BERTLV();
// Setters assignments in berTLV
commonDataTemplate.SetBERTLV(berTLV);
Parameters |
Description |
Type |
berTLV |
BERTLV Object |
BERTLV |
AddCommonDataTransparentTemplate (Replaced by AddCommonAppTemplate)
CommonDataTransparentTemplate commonDataTransparentTemplate = new ommonDataTransparentTemplate();
BERTLV berTLV = new BERTLV();
berTLV.SetDataIssuerApplicationData("06010A03000000");
berTLV.SetDataApplicationCryptogram("584FD385FA234BCC");
berTLV.SetDataApplicationTransactionCounter("0001");
berTLV.SetDataUnpredictableNumber("6D58EF13");
commonDataTransparentTemplate.SetBERTLV(berTLV);
commonDataTemplate.AddCommonAppTemplate(commonDataTransparentTemplate);
Parameters |
Description |
Type |
commonDataTransparentTemplate |
A common data transparent template |
CommonDataTransparentTemplate |
commonDataTemplate.Format();
Return Type |
Description |
string |
CommonDataTemplate in string format |
DataWithType
string binaryFormat = commonDataTemplate.DataWithType(MerchantConsts.DATA_TYPE.BINARY, ' '); // Binary Data (shown as hex bytes)
// OR
string rawFormat = commonDataTemplate.DataWithType(MerchantConsts.DATA_TYPE.RAW, ' '); // Raw Data
Parameters |
Description |
Type |
dataType |
Data type value |
MerchantConsts.DATA_TYPE.BINARY | MerchantConsts.DATA_TYPE.RAW |
indent |
Indent character (Ex.: ' ') |
string |
Return Type |
Description |
string |
Common data transparent template in binary OR raw data format |
ConsumerEMVQR
Represents an EMV QRCode.
using emv_qrcps.QrCode.Consumer;
using emv_qrcps.QrCode.Merchant;
ConsumerEMVQR emvqr = new ConsumerEMVQR();
Methods
emvqr.SetDataPayloadFormatIndicator("CPV01");
Parameters |
Description |
Type |
dataPayloadFormatIndicator |
Payload Format Indicator |
string |
AddApplicationTemplate (Replaced by AddCommonAppTemplate)
ApplicationTemplate applicationTemplate1 = new ApplicationTemplate();
BERTLV berTLV1 = new BERTLV();
berTLV1.SetDataApplicationDefinitionFileName("A0000000555555");
berTLV1.SetDataApplicationLabel("Product1");
applicationTemplate1.SetBERTLV(berTLV1);
emvqr.AddCommonAppTemplate(applicationTemplate1);
ApplicationTemplate applicationTemplate2 = new ApplicationTemplate();
BERTLV berTLV2 = new BERTLV();
berTLV2.SetDataApplicationDefinitionFileName("A0000000666666");
berTLV2.SetDataApplicationLabel("Product2");
applicationTemplate2.SetBERTLV(berTLV2);
emvqr.AddCommonAppTemplate(applicationTemplate2);
Parameters |
Description |
Type |
applicationTemplate |
An application template |
ApplicationTemplate |
AddCommonDataTemplate (Replaced by AddCommonAppTemplate)
CommonDataTemplate commonDataTemplate = new CommonDataTemplate();
BERTLV berTLV1 = new BERTLV();
berTLV1.SetDataApplicationPAN("1234567890123458");
berTLV1.SetDataCardholderName("CARDHOLDER/EMV");
berTLV1.SetDataLanguagePreference("ruesdeen");
commonDataTemplate.SetBERTLV(berTLV1);
CommonDataTemplate commonDataTransparentTemplate = Consumer.buildCommonDataTransparentTemplate();
BERTLV berTLV2 = new BERTLV();
berTLV2.SetDataIssuerApplicationData("06010A03000000");
berTLV2.SetDataApplicationCryptogram("584FD385FA234BCC");
berTLV2.SetDataApplicationTransactionCounter("0001");
berTLV2.SetDataUnpredictableNumber("6D58EF13");
commonDataTransparentTemplate.SetBERTLV(berTLV2);
commonDataTemplate.AddCommonAppTemplate(commonDataTransparentTemplate);
emvqr.AddCommonAppTemplate(commonDataTemplate);
Parameters |
Description |
Type |
commonDataTemplate |
A common data template |
CommonDataTemplate |
GeneratePayload
commonDataTemplate.GeneratePayload();
Return Type |
Description |
string |
ConsumerEMVQR in base64 string format |
ToBinary
string emvqrBinaryFormat = emvqr.ToBinary(); // Binary Data (shown as hex bytes)
Return Type |
Description |
string |
EMV QRCode in binary format |
RawData
string emvqrBinaryFormat = emvqr.rawData(); // Raw Data
Return Type |
Description |
string |
EMV QRCode in raw data format |