ทดลองใช้งาน
ครอบคลุมทุก wire format และทุกตัวเลือก — playground เต็มรูปแบบของ public API ทั้งหมด ทำงานในเบราว์เซอร์ของคุณ
หน้า demo ด้านล่าง import thai-qr-payment มาจาก bundle ของเว็บนี้โดยตรง และ render SVG ใหม่ทุกครั้งที่กดแป้นพิมพ์ กรอกเบอร์ PromptPay ลงในฟอร์ม กำหนดยอดเงิน แล้ว สแกนด้วยแอปธนาคารของคุณ
EMVCo wire payload (98 chars)
00020101021229370016A000000677010111011300668123456785303764540550.005802TH5911Acme Coffee63048A44Parsed
{
"payloadFormat": "01",
"pointOfInitiation": "dynamic",
"merchant": {
"kind": "promptpay",
"recipientType": "mobile",
"recipient": "0812345678"
},
"amount": 50,
"currency": "764",
"country": "TH",
"merchantName": "Acme Coffee",
"crc": {
"value": "8A44",
"valid": true,
"truncated": false
},
"rawTags": [
{
"tag": "00",
"value": "01"
},
{
"tag": "01",
"value": "12"
},
{
"tag": "29",
"value": "0016A00000067701011101130066812345678"
},
{
"tag": "53",
"value": "764"
},
{
"tag": "54",
"value": "50.00"
},
{
"tag": "58",
"value": "TH"
},
{
"tag": "59",
"value": "Acme Coffee"
},
{
"tag": "63",
"value": "8A44"
}
]
}ขั้นตอนการทำงาน
หัวข้อที่มีชื่อว่า “ขั้นตอนการทำงาน”payloadFor()สร้าง wire string ตามมาตรฐาน EMVCo MPM จาก input ที่ระบุparsePayload()ทำ round-trip กลับเพื่อตรวจสอบ CRC และถอด merchant templateencodeQR()ดำเนินการ Reed-Solomon ECC ตาม ISO/IEC 18004 และเลือก maskrenderThaiQRPayment()ประกอบ SVG สุดท้าย (โหมด card) ส่วนrenderThaiQRPaymentMatrix()ส่งออกเฉพาะ QR matrix
ทุกขั้นตอนทำงานฝั่ง client โดยไม่มีการเรียก network และไม่มี server — ใช้ code path เดียวกับแอปใน production
ข้อจำกัดของ demo
หัวข้อที่มีชื่อว่า “ข้อจำกัดของ demo”- เบอร์ตัวอย่าง
0812345678ไม่ใช่บัญชี PromptPay จริง — แอปธนาคารจะสแกนได้ถูกต้อง แต่จะปฏิเสธผู้รับในขั้นตอน “ยืนยัน” - โหมด card มีการฝัง mark ของ Thai QR Payment + PromptPay ไว้ แอปใน production ต้องปฏิบัติตาม official brand guidelines เมื่อใช้โลโก้เหล่านี้