Giter VIP home page Giter VIP logo

ts-khqr's Introduction

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'
  }
}

ts-khqr's People

Contributors

ishinvin avatar dependabot[bot] avatar

Stargazers

Thorn Chorn avatar

Watchers

Jean-Francois Laflamme avatar  avatar

Forkers

phyrom

ts-khqr's Issues

does it has md5 hash ?

because in official SDK Document
I saw the result of other language contain md5 property in there.

image

and your ReturnType doesn't have md5 hash string property.

image

the reason I open this issue because I want to implement check transaction status .

Inconsistent Result of KHQR.generate method

While using bakong-khqr, response of generateIndividual returns qr and md5. Then why this version only return qr data.

  • Javascript package response
{
    "status": {
        "code": 0,
        "errorCode": null,
        "message": null
    },
    "data": {
        "qr": "00020101021229460015jonh_smith@devb0111855122334550208DevBank5204599953038405406100.505802KH5910JonhSmith6010PHNOMPENH62430211855122334550311CoffeeShop0709Cashier_199170013163115460356263048065",
        "md5": "f5a7dca43bcda57276d4fb175c17fd51"
    }
}
  • Ts package response
{
    "status": {
        "code": 0,
        "errorCode": null,
        "message": null
    },
    "data": "00020101021229460015jonh_smith@devb0111855122334550208DevBank5204599953038405406100.505802KH5910JonhSmith6010PHNOMPENH62430211855122334550311CoffeeShop0709Cashier_199170013163115460356263048065"
}

image

Later I found that the js version only hash using md5 library on return statement. It would be nice if this ts version return the same result. :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.