สร้างคำสั่งชำระเงิน — FLEX (หน้าชำระเงิน) ⭐ แนะนำ
✅ FLEX คือวิธีสร้างคำสั่งฝากที่เราแนะนำ — เรียก API ครั้งเดียวได้
payment_urlของหน้าชำระเงินที่จัดการ flow ของลูกค้าให้ทั้งหมด กรุณาใช้ FLEX สำหรับการเชื่อมต่อใหม่ทั้งหมด และทยอยย้ายระบบเดิมมาที่ FLEX
ทำไมต้องใช้ FLEX?
- API เดียว ครบทุกช่องทาง — FLEX จะเลือกใช้ทุกช่องทางการชำระเงินที่เรามี โดยอัตโนมัติ และเลือกช่องทางที่ดีที่สุดให้กับแต่ละรายการ เพื่อให้บริการได้ดีที่สุดและมีอัตราสำเร็จสูงสุด
- ง่ายสำหรับลูกค้าของท่าน — ลูกค้าจะได้รับคำสั่งโอนเงินในรูปแบบ QR Code หรือ เลขบัญชีธนาคาร ตามช่องทางที่ระบบเลือกให้
- หน้าชำระเงินของเราจัดการให้ทั้งหมด — ลูกค้าทำรายการผ่าน payment page ของเราเท่านั้น โดยหน้าชำระเงินจะ handle flow ของลูกค้าเองทั้งหมด ตั้งแต่ แนะนำวิธีใช้งาน การโอนเงิน ไปจนถึงการแจ้งสลิป — พร้อมตัวนับเวลา สถานะแบบ real-time และการพากลับไปยังเว็บไซต์ของท่าน
- ฝั่งร้านค้าไม่ต้องพัฒนาอะไรเพิ่ม — เพียงเรียก API เดียว รับ
payment_urlแล้วส่งลูกค้าไปที่หน้านั้น ไม่ต้องทำหน้าแสดง QR หน้าแสดงเลขบัญชี หรือหน้าอัปโหลดสลิปเอง - ปรับหน้าตาได้ — payment page รองรับ theme หลายแบบให้เข้ากับแบรนด์ของท่าน —
ดูหัวข้อ Theme ของหน้าชำระเงิน ด้านล่าง (theme เริ่มต้น:
halo)
⚠️ สำคัญ : ลูกค้าต้องทำรายการผ่าน payment page ของเราเท่านั้น ห้ามดึงข้อมูล QR / เลขบัญชี ไปแสดงในหน้าของร้านค้าเอง — ขั้นตอนบนหน้าชำระเงิน (แนะนำวิธีใช้งาน → โอนเงิน → แจ้งสลิป) เป็นส่วนหนึ่งของกระบวนการยืนยันรายการ
ขั้นตอนการทำงาน
- เรียก
POST /payment-flex/create→ ได้รับpayment_url - Redirect (หรือเปิดแท็บใหม่) พาลูกค้าไปที่
payment_url - หน้าชำระเงินจะพาลูกค้าทำรายการเอง: แสดงวิธีใช้งาน, แสดง QR Code หรือ เลขบัญชีปลายทาง, รับแจ้งสลิป (ถ้าต้องใช้) และแสดงสถานะแบบ real-time
- เมื่อการชำระเงินสำเร็จ ระบบจะเรียก
notify_urlของท่าน (ดู Callback การชำระเงิน) และหน้าชำระเงินจะพาลูกค้ากลับไปที่redirect_url(ถ้าระบุไว้)
URL : /payment-flex/create
Method : POST
ข้อกำหนดข้อมูล
{
"merchant_id" : "[Merchant id]",
"token" : "[Auth Token]",
"time" : "[Time Stamp]",
"merchant_order_id" : "[unique merchant order id]",
"amount" : "[amount]",
"bank" : "[bank]",
"account_name" : "[account_name]",
"account_no" : "[account_no]",
"notify_url" : "[notify url]",
"redirect_url" : "[redirect url] (optional)",
"payment_theme" : "[theme name] (optional)"
}
คำอธิบาย
| ชื่อพารามิเตอร์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| merchant_order_id | หมายเลขอ้างอิงที่ไม่ซ้ำกันในระบบของร้านค้า อนุญาตตัวอักษร: 0-9 a-z A-Z ความยาวสูงสุด = 40 | ORDER0123456789789445566 |
| amount | จำนวนเงิน ทศนิยม 2 ตำแหน่ง ไม่ใส่ตัวคั่นหลักพัน | 1000.00 |
| bank | ธนาคารของลูกค้า (ดูรหัสธนาคาร) | KBANK |
| account_name | ชื่อบัญชีของลูกค้า | สมชาย ใสสว่าง |
| account_no | เลขที่บัญชีของลูกค้า | 1234567890 |
| notify_url | URL สำหรับรับ Webhook แจ้งเตือน | https://merchant.com/callback/payment |
| redirect_url | (ไม่บังคับ) URL ที่จะพากลับเมื่อชำระเงินสำเร็จ | https://merchant.com/return |
| payment_theme | (ไม่บังคับ) ชื่อ theme ของหน้าชำระเงิน — ดูหัวข้อ Theme ของหน้าชำระเงิน ด้านล่าง หากไม่ส่ง ระบบจะใช้ค่า default ของ client → partner → halo (theme เริ่มต้น) | halo |
payment_theme — ลำดับการเลือก: ค่าใน request → ค่า default ที่ตั้งไว้ที่ client → ค่า default ที่ตั้งไว้ที่ partner → theme เริ่มต้น (
halo) ค่าที่ได้จะถูกบันทึกกับคำสั่งซื้อทันทีตอนสร้างรายการ
ตัวอย่างข้อมูล
{
"merchant_id": "AA12345678",
"token": "testtokentesttokentesttokentesttokentesttoken",
"time": 1656272222,
"merchant_order_id" : "ORDER0123456789789445566",
"amount" : "1000.00",
"bank" : "KBANK",
"account_name" : "สมชาย ใสสว่าง",
"account_no" : "1234567890",
"notify_url" : "https://merchant.com/callback/payment",
"redirect_url" : "https://merchant.com/return",
"payment_theme" : "halo"
}
Response
| พารามิเตอร์ | คำอธิบาย |
|---|---|
| platform_order_id | รหัสคำสั่งซื้อเฉพาะของระบบ |
| merchant_order_id | รหัสคำสั่งซื้อของร้านค้า |
| payment_method | วิธีชำระที่ระบบเลือกให้ (TRANSFER หรือ QR) |
| payment_url | URL หน้าชำระเงินที่ส่งให้ลูกค้าเปิด |
Response สำเร็จ
Code : 200 OK
{
"success": 200,
"data": {
"platform_order_id": "THBP20260531...",
"merchant_order_id": "ORDER0123456789789445566",
"payment_method": "TRANSFER",
"payment_url": "https://payment.example.com/THBP20260531.../<hash>"
}
}
Response ข้อผิดพลาด
Code : 403 (auth) หรือ 500 (อื่น ๆ)
{ "error": { "code": 500, "message": "amount must be greater than 20" } }
Pending-order guard (
409) — ลูกค้าหนึ่งบัญชีเปิด FLEX order ค้างได้ครั้งละ 1 รายการ ถ้าสร้างซ้ำจะได้{"success":false,"code":409,"error":"you have a pending payment order...","data":{"pending_order_id":"THBP..."}}ให้ยกเลิกออเดอร์นั้นด้วย ยกเลิกคำสั่งชำระเงิน (หรือให้ลูกค้ายกเลิกบนหน้าชำระเงิน) แล้วจึงสร้างใหม่อีกครั้ง
Theme ของหน้าชำระเงิน
หน้าชำระเงินสามารถเลือกรูปแบบได้ผ่านพารามิเตอร์ payment_theme
หากไม่ส่งค่ามา (และไม่ได้ตั้งค่า default ไว้กับบัญชีของท่าน)
ระบบจะใช้ theme เริ่มต้นคือ halo
Theme ที่มีให้เลือก:
| Theme | ตัวอย่าง |
|---|---|
Halo — halo (ค่าเริ่มต้น) | ![]() |
Pristine — pristine | ![]() |
Blue — blue | ![]() |
Vault — vault | ![]() |
Sunset — sunset | ![]() |
Obsidian — obsidian | ![]() |
Stack — stack | ![]() |
Sienna — sienna | ![]() |
Mint — mint | ![]() |
Pulse — pulse | ![]() |
การส่งค่า
payment_theme: "default"จะแสดงผลเป็น theme Halo เช่นกัน หากส่งค่าpayment_themeที่ไม่รู้จัก / ไม่ถูกต้อง ระบบจะใช้ theme เริ่มต้นแทน ท่านสามารถตั้งค่า theme เริ่มต้นประจำบัญชีร้านค้าได้ — ติดต่อฝ่าย support หรือตั้งค่าผ่าน client portal
รหัสธนาคาร
| รหัสธนาคาร | ธนาคาร |
|---|---|
| KBANK | ธนาคารกสิกรไทย |
| BBL | ธนาคารกรุงเทพ |
| KTB | ธนาคารกรุงไทย |
| TTB | ธนาคารทีทีบี |
| SCB | ธนาคารไทยพาณิชย์ |
| UOB | ธนาคารยูโอบี |
| BAY | ธนาคารกรุงศรีอยุธยา |
| CIMB | ธนาคารซีไอเอ็มบี ไทย |
| LH | ธนาคารแลนด์ แอนด์ เฮ้าส์ |
| GSB | ธนาคารออมสิน |
| KK | ธนาคารเกียรตินาคินภัทร |
| CITI | ธนาคารซิตี้แบงก์ |
| GHB | ธนาคารอาคารสงเคราะห์ |
| BAAC | ธนาคารเพื่อการเกษตรและสหกรณ์การเกษตร |
| TISCO | ธนาคารทิสโก้ |
| CLICX | ธนาคารคลิกซ์ |









