สร้างคำสั่งชำระเงิน — FLEX (หน้าชำระเงิน) ⭐ แนะนำ

FLEX คือวิธีสร้างคำสั่งฝากที่เราแนะนำ — เรียก API ครั้งเดียวได้ payment_url ของหน้าชำระเงินที่จัดการ flow ของลูกค้าให้ทั้งหมด กรุณาใช้ FLEX สำหรับการเชื่อมต่อใหม่ทั้งหมด และทยอยย้ายระบบเดิมมาที่ FLEX

ทำไมต้องใช้ FLEX?

⚠️ สำคัญ : ลูกค้าต้องทำรายการผ่าน payment page ของเราเท่านั้น ห้ามดึงข้อมูล QR / เลขบัญชี ไปแสดงในหน้าของร้านค้าเอง — ขั้นตอนบนหน้าชำระเงิน (แนะนำวิธีใช้งาน → โอนเงิน → แจ้งสลิป) เป็นส่วนหนึ่งของกระบวนการยืนยันรายการ

ขั้นตอนการทำงาน

  1. เรียก POST /payment-flex/create → ได้รับ payment_url
  2. Redirect (หรือเปิดแท็บใหม่) พาลูกค้าไปที่ payment_url
  3. หน้าชำระเงินจะพาลูกค้าทำรายการเอง: แสดงวิธีใช้งาน, แสดง QR Code หรือ เลขบัญชีปลายทาง, รับแจ้งสลิป (ถ้าต้องใช้) และแสดงสถานะแบบ real-time
  4. เมื่อการชำระเงินสำเร็จ ระบบจะเรียก 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 ความยาวสูงสุด = 40ORDER0123456789789445566
amountจำนวนเงิน ทศนิยม 2 ตำแหน่ง ไม่ใส่ตัวคั่นหลักพัน1000.00
bankธนาคารของลูกค้า (ดูรหัสธนาคาร)KBANK
account_nameชื่อบัญชีของลูกค้าสมชาย ใสสว่าง
account_noเลขที่บัญชีของลูกค้า1234567890
notify_urlURL สำหรับรับ 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_urlURL หน้าชำระเงินที่ส่งให้ลูกค้าเปิด

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ตัวอย่าง
Halohalo (ค่าเริ่มต้น)Halo theme
PristinepristinePristine theme
BlueblueBlue theme
VaultvaultVault theme
SunsetsunsetSunset theme
ObsidianobsidianObsidian theme
StackstackStack theme
SiennasiennaSienna theme
MintmintMint theme
PulsepulsePulse theme

การส่งค่า 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ธนาคารคลิกซ์