Skip to content

Sandbox payment API ที่รองรับ ​

ใช้ host https://api.sandbox.<โดเมน White Label> กับ test key และวิธีเซ็น request เดิม ผู้ดูแลต้องเปิดรุ่นที่รองรับ simulator ให้ก่อน ข้อมูลทุกใบมี livemode: false และ environment: "sandbox"

ขอบเขตของ simulator รุ่นนี้

รองรับ test balance การจำลองผลรายการ และ signed webhook ผ่าน test endpoint ที่ตั้งค่าไว้ ยังไม่สร้าง QR, checkout หรือรับสลิป ผลทดสอบนี้ยังไม่ยืนยันว่า เส้นทางชำระเงินจริงพร้อมแล้ว ตารางยอด 100.00–116.00 ใน แผน Sandbox ยังเป็นเป้าหมายส่วนที่ต้องพัฒนาต่อ

เริ่มทดสอบ ​

  1. สร้าง test API key จากหน้า API Keys ใน test Merchant session เลือกสิทธิ์ deposits:read/write, withdrawals:read/write, wallet:read และ sandbox:write ตามงานที่ต้องใช้ เฉพาะ sandbox:write เท่านั้นที่ห้ามให้ Live key สิทธิ์รับ/จ่ายและอ่าน wallet ของ Live ดู Live P2P profile
  2. เติมยอดทดสอบด้วย POST /v1/pay/sandbox/topups body {"amount_minor":10000000,"currency":"THB"} และ Idempotency-Key
  3. สร้างรายการด้วย POST /v1/pay/deposits หรือ POST /v1/pay/withdrawals ใช้ field และวิธีเซ็นของ API เรา จำนวนเงินยังเป็น สตางค์
  4. ตรวจ GET /v1/pay/balance, รายการตาม ID และ GET /v1/pay/events ใช้ since_sequence และ limit อ่าน event ต่อให้ครบ

ทุกคำขอซ้ำต้องใช้ nonce ใหม่ เมื่อ retry mutation ให้เก็บ body และ Idempotency-Key เดิมไว้ การเปลี่ยน body กับ key เดิมได้ 409 idempotency_key_reused โดยไม่เพิ่มยอดหรือสร้าง event ซ้ำ

ยอดทดสอบและผลที่ได้ ​

ยอดบาทPayinPayout
1,001–2,000settledsettled
2,001–3,000rejectedrejected
3,001–4,000reversedrejected
4,001–5,000expiredexpired
ยอดอื่น รวมถึงมากกว่า 5,000awaiting_paymentopen

ใช้ยอดเต็มบาท ตั้งแต่ 1 ถึง 10,000,000 บาทต่อคำขอ ค่าธรรมเนียมทดสอบรุ่นนี้ เป็นศูนย์ ผลอัตโนมัติจะเกิดพร้อมสร้างรายการ ไม่ต้องรอ callback

Payin ช่วง 3,001–4,000 บาทจะ settled ที่ version 1 แล้ว reversed ที่ version 2 ใน transaction เดียวกัน มี ledger สองฝั่งหักล้างกัน และ event ทั้งคู่ ยอดสุทธิในกระเป๋าจึงเป็นศูนย์

รายการค้างจำลองได้จาก POST /v1/pay/sandbox/deposits/{id}/simulate ด้วย {"outcome":"succeed"}, {"outcome":"fail"} หรือ {"outcome":"expire"} ส่วน .../withdrawals/{id}/simulate รับเฉพาะ succeed และ fail ต้องมี sandbox:write และสิทธิ์ write ของรายการนั้น รายการที่จบแล้วได้ 409 sandbox_transaction_not_pending

Payout จะกันยอดทดสอบไว้ทันที ถ้าไม่พอได้ 402 insufficient_balance เมื่อ succeed ยอดที่กันไว้จะถูกใช้ เมื่อ fail จะคืนสู่ยอด available

ทดสอบ Webhook ​

ตั้งค่า endpoint ใน Merchant test session ก่อนสร้างรายการใหม่ ระบบจะส่ง canonical payload พร้อมลายเซ็น Ed25519 ตาม วิธีตรวจ webhook โดยมี X-Environment: sandbox, livemode: false และ environment: "sandbox" ต้องเปิด scheduler และตั้ง signing keyring ให้ครบ เหตุการณ์เก่าไม่ถูกส่งย้อนหลัง การส่งอาจซ้ำหรือสลับลำดับ จึงต้อง dedupe ด้วย event ID และตรวจ version หากไม่สำเร็จจะใช้ตาราง retry เดิม 11 attempts

ในหน้า เครื่องมือ Sandbox ของ Merchant test session สามารถเติมยอดและเลือกผล รายการค้างได้ด้วยบัญชีพนักงานที่มีสิทธิ์ sandbox_tools:write โดยไม่ต้องใส่ API key หน้านี้ใช้ยอด รายการ และ event ชุดเดียวกับ Sandbox API

ส่วน ประวัติ Callback แสดงสถานะส่งและความพยายามแต่ละครั้ง กรองทั้งหมด รอส่ง หรือส่งไม่สำเร็จได้ แสดงเฉพาะ hostname และเวอร์ชัน endpoint ไม่มี payload หรือ ข้อมูลลับ การส่งซ้ำด้วยผู้ใช้งานยังไม่เปิดใช้ อ่านประวัติผ่าน GET /v1/bo/sandbox/tools/callbacks ด้วย cookie session และ sandbox_tools:read cursor มีอายุ 15 นาทีและใช้ต่อได้เฉพาะบัญชี ตัวกรอง และขนาดหน้าเดิม

ข้อจำกัด ​

  • Payment API และ Tools ใช้โควตาร่วมกัน 60 requests/นาที รวมคำขออ่าน และสร้างรายการ/เติมยอดใหม่ได้ 500 ครั้ง/วัน UTC ต่อ Merchant โควตารายวันไม่ปิดการอ่านหรือจำลองรายการค้างเดิม
  • ประวัติและใบรับ idempotency เก็บ 30 วันแบบ cleanup เมื่อใช้งาน รายการค้างและยอดที่กันไว้ไม่ถูกลบทิ้งอัตโนมัติ
  • helper สำหรับ customer, fee editor, reset, manual webhook replay และ advanced slip scenarios ยังไม่อยู่ในรุ่นนี้ path ที่ไม่รองรับตอบ SANDBOX_UNSUPPORTED
  • ตรวจ environment จาก response ทุกครั้ง และแยก handler ของ test กับเงินจริง

เอกสารชุดนี้อิงสัญญา API เวอร์ชัน 2026-08-01