2.1.0 • Published 4 months ago

ts-khqr v2.1.0

Weekly downloads
-
License
ISC
Repository
github
Last release
4 months ago

TypeScript KHQR

Bakong KHQR re-implement in TypeScript

Link to the official package bakong-khqr

KHQR (Khmer QRCode)

KHQR is the centralized QRCode for Cambodia, where every mobile banking app in Cambodia can scan and pay.

KHQR ~ Scan.Pay.Done.

Installation

npm install ts-khqr

Usage

import { KHQR, CURRENCY, TAG } from "ts-khqr"

Generate KHQR

import { KHQR, CURRENCY, COUNTRY, TAG } from "ts-khqr"

const result = KHQR.generate({
    tag: TAG.INDIVIDUAL, // TAG.MERCHANT
    accountID: "ishinvin@devb",
    merchantName: "Ishin Vin",
    // optional
    merchantID: "012345678",
    acquiringBank: "Dev Bank",
    merchantCity: "Phnom Penh", // default 'Phnom Penh'
    currency: CURRENCY.KHR, // default KHR
    amount: 10000, // default 0
    countryCode: COUNTRY.KH, // default KH
    additionalData: {
        mobileNumber: "85512345678",
        billNumber: "INV-2022-12-25",
        storeLabel: "Ishin Shop",
        terminalLabel: "012345",
        purposeOfTransaction: "Payment"
    },
    languageData: {
        languagePreference: "ZH",
        merchantNameAlternateLanguage: "文山",
        merchantCityAlternateLanguage: "金边"
    },
    upiMerchantAccount: ""
})

console.log(result);

Output:

{
  status: { code: 0, errorCode: null, message: null },
  data: "00020101021229420013ishinvin@devb01090123456780208Dev Bank5204599953031165405100005802KH5909Ishin Vin6010Phnom Penh62680114INV-2022-12-250211855123456780310Ishin Shop07060123450807Payment64180002ZH0102文山0202金边9917001316935559673876304AE27"
}

Verify KHQR

import { KHQR } from "ts-khqr";

const khqrString = "00020101021229420013ishinvin@devb01090123456780208Dev Bank5204599953031165405100005802KH5909Ishin Vin6010Phnom Penh62680114INV-2022-12-250211855123456780310Ishin Shop07060123450807Payment64180002ZH0102文山0202金边9917001316935559673876304AE27";

const isKHQR = KHQR.verify(khqrString).isValid;

console.log(isKHQR);
// true

Parse KHQR

import { KHQR } from "ts-khqr";

cconst khqrString = "00020101021229420013ishinvin@devb01090123456780208Dev Bank5204599953031165405100005802KH5909Ishin Vin6010Phnom Penh62680114INV-2022-12-250211855123456780310Ishin Shop07060123450807Payment64180002ZH0102文山0202金边9917001316935559673876304AE27";

const result = KHQR.parse(khqrString);

console.log(result);

Output:

{
  status: { code: 0, errorCode: null, message: null },
  data: {
    merchantType: '29',
    bakongAccountID: 'ishinvin@devb',
    accountInformation: '012345678',
    merchantID: null,
    acquiringBank: 'Dev Bank',
    billNumber: 'INV-2022-12-25',
    mobileNumber: '85512345678',
    storeLabel: 'Ishin Shop',
    terminalLabel: '012345',
    purposeOfTransaction: 'Payment',
    languagePreference: 'ZH',
    merchantNameAlternateLanguage: '文山',
    merchantCityAlternateLanguage: '金边',
    payloadFormatIndicator: '01',
    pointofInitiationMethod: '12',
    unionPayMerchant: null,
    merchantCategoryCode: '5999',
    transactionCurrency: '116',
    transactionAmount: '10000',
    countryCode: 'KH',
    merchantName: 'Ishin Vin',
    merchantCity: 'Phnom Penh',
    timestamp: '00131693555967387',
    crc: 'AE27'
  }
}
2.1.0

4 months ago

2.0.5

6 months ago

2.0.4

6 months ago

2.0.3

8 months ago

2.0.2

8 months ago

2.0.1

8 months ago

2.0.0

8 months ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago