Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/maythiwat/promptparse
All-in-one JS library for PromptPay & EMVCo QR Codes
https://github.com/maythiwat/promptparse
emvco emvco-qr promptpay promptpay-qr qrcode thai-qr-payment thai-qr-standard truemoney
Last synced: 6 days ago
JSON representation
All-in-one JS library for PromptPay & EMVCo QR Codes
- Host: GitHub
- URL: https://github.com/maythiwat/promptparse
- Owner: maythiwat
- License: mit
- Created: 2022-11-18T10:20:54.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-05-02T13:48:08.000Z (9 months ago)
- Last Synced: 2025-01-07T08:10:02.144Z (13 days ago)
- Topics: emvco, emvco-qr, promptpay, promptpay-qr, qrcode, thai-qr-payment, thai-qr-standard, truemoney
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/promptparse
- Size: 148 KB
- Stars: 106
- Watchers: 1
- Forks: 18
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
README
![PromptParse](https://github.com/maythiwat/promptparse/assets/23092256/889e8f80-b1b3-44b2-ace5-ffbbce6e673b)
# PromptParse [![npm version](https://badge.fury.io/js/promptparse.svg)](https://badge.fury.io/js/promptparse)
"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
```ts
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
```ts
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
```ts
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
```ts
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)
```ts
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
```html
;(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}">`,
)
})()```
## References
- [EMV QR Code](https://www.emvco.com/emv-technologies/qrcodes/)
- [Thai QR Payment Standard](https://www.bot.or.th/content/dam/bot/fipcs/documents/FPG/2562/ThaiPDF/25620084.pdf)
- [Slip Verify API Mini QR Data](https://developer.scb/assets/documents/documentation/qr-payment/extracting-data-from-mini-qr.pdf)
- [BOT Barcode Standard](https://www.bot.or.th/content/dam/bot/documents/th/our-roles/payment-systems/about-payment-systems/Std_Barcode.pdf)## See also
- [phoomin2012/promptparse-php](https://github.com/phoomin2012/promptparse-php) PromptParse port for PHP
## License
This project is MIT licensed (see [LICENSE.md](LICENSE.md))