Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

maythiwat/promptparse

Open more actions menu

Repository files navigation

PromptParse

PromptParse npm version

"All-in-one JS library for PromptPay & EMVCo QR Codes"

No dependency & Cross-platform. You can use it anywhere (Node.js, Deno, Bun), even in the browser!

Features

  • Parse — PromptPay & EMVCo QR Code data strings into object
  • Generate — QR Code data from pre-made templates (for example: PromptPay AnyID, PromptPay Bill Payment, TrueMoney, etc.)
  • Manipulate — any values from parsed QR Code data (for example: transfer amount, account number) and encodes back into QR Code data
  • Validate — checksum and data structure for known QR Code formats (for example: Slip Verify API Mini QR)

Usage

Parsing data and get value from tag

import { parse } from 'promptparse'

// Example data
const ppqr = parse('000201010211...')

// Get Value of Tag ID '00'
ppqr.getTagValue('00') // Returns '01'

Build QR data and append CRC tag

import { encode, tag, withCrcTag } from 'promptparse'

// Example data
const data = [
  tag('00', '01'),
  tag('01', '11'),
  // ...
]

// Set CRC Tag ID '63'
withCrcTag(encode(data), '63') // Returns '000201010211...'

Generate PromptPay Bill Payment QR

import { billPayment } from 'promptparse/generate'

const payload = billPayment({
  billerId: '1xxxxxxxxxxxx',
  amount: 300.0,
  ref1: 'INV12345',
})

// TODO: Create QR Code from payload

Validate & extract data from Slip Verify QR

import { slipVerify } from 'promptparse/validate'

const data = slipVerify('00550006000001...')

if (!data) {
  console.error('Invalid Payload')
}

const { sendingBank, transRef } = data

// TODO: Inquiry transaction from Bank Open API

Convert BOT Barcode to PromptPay QR Tag 30 (Bill Payment)

import { parseBarcode } from 'promptparse'

const botBarcode = parseBarcode('|310109999999901\r...')

if (!botBarcode) {
  console.error('Invalid Payload')
}

const payload = botBarcode.toQrTag30()

// TODO: Create QR Code from payload

Use on browser via CDN

<script src="https://cdn.jsdelivr.net/npm/promptparse"></script>

<script>
  ;(function () {
    // Generate QR code payload (use function from "promptparse" global)
    const payload = promptparse.generate.trueMoney({
      mobileNo: '08xxxxxxxx',
      amount: 10.0,
      message: 'Hello World!',
    })

    // Quick & dirty way to show QR Code image
    document.write(
      `<img src="https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=${payload}">`,
    )
  })()
</script>

References

See also

License

This project is MIT licensed (see LICENSE.md)

Morty Proxy This is a proxified and sanitized view of the page, visit original site.