UNPKG

@walletfactory/emvqr

Version:

Decode emv qr code specification for payments

141 lines (128 loc) • 2.37 kB
const scheme = { '00': { name: 'Payload Format Indicator', }, '01': { name: 'Point of Initiation Method', }, '02-51': { name: 'Merchant Account Information', scheme: { '00': { name: 'Globally Unique Identifier', }, '01-63': { name: 'Context Specific Data', }, } }, '52': { name: 'Merchant Category Code', }, '53': { name: 'Transaction Currency', }, '54': { name: 'Transaction Amount', }, '55': { name: 'Tip or Convenience Indicator', }, '56': { name: 'Value of Convenience Fee Fixed', }, '57': { name: 'Value of Convenience Fee Percentage', }, '58': { name: 'Country Code', }, '59': { name: 'Merchant Name', }, '60': { name: 'Merchant City', }, '61': { name: 'Postal Code', }, '62': { name: 'Additional Data Field Template', scheme: { '01': { name: 'Additional Data Field', }, '02': { name: 'Additional Data Field', }, '03': { name: 'Additional Data Field', }, '04': { name: 'Additional Data Field', }, '05': { name: 'Additional Data Field', }, '06': { name: 'Additional Data Field', }, '07': { name: 'Additional Data Field', }, '08': { name: 'Additional Data Field', }, } }, '63': { name: 'CRC', }, '64': { name: 'Merchant Information— Language Template', }, '65-79': { name: 'RFU for EMVCo', }, '80-99': { name: 'Unreserved Templates', }, } const getTag = (tagId) => { const tag = scheme[tagId] if (!tag) { const id = parseInt(tagId) switch (true) { case id >= 2 && id <= 51: return scheme['02-51'] case id >= 65 && id <= 79: return scheme['65-79'] case id >= 80 && id <= 99: return scheme['80-99'] default: return } } return tag } const getSubTag = (tagId, subTagid) => { const tag = getTag(tagId) if (!tag || !tag.scheme) { return } const subTag = tag.scheme[subTagid] if (!subTag) { const id = parseInt(subTagid) switch (true) { case id >= 1 && id <= 63: return scheme['01-63'] default: return } } return subTag } module.exports = { getTag, getSubTag }