ฝั่งฝาก (Deposit)
ผลลัพธ์ที่เป็นไปได้ ข้อบังคับของรายการ ข้อพิพาท และการเปลี่ยนไปใช้ช่องทางธนาคาร
ระบบต้นทางเป็นผู้สร้าง session ฝากและดูแลหน้าโอนเงิน/แนบสลิปของผู้ฝาก หน้านี้อธิบายเฉพาะผลลัพธ์ที่ร้านค้าต้องจัดการ ติดตามสถานะด้วย GET /v1/p2p/public/flow/:flowId เนื่องจากเหตุการณ์ระหว่างดำเนินการไม่มี webhook (ดู Webhook)
1. ผลลัพธ์ที่เป็นไปได้ของรายการฝาก
2. ข้อบังคับของรายการฝาก
โอนภายใน 15 นาที
นับตั้งแต่ระบบเปิดเผยบัญชีปลายทาง
หากเกินเวลาจะไม่ได้รับเครดิต ยกเว้นเปิดข้อพิพาทไว้ก่อน
โอนจากบัญชีที่ระบุไว้เท่านั้น
ต้องเป็น sender_bank + sender_account ที่ส่งตอนสร้างรายการ แม้เป็นเจ้าของคนเดียวกันก็ใช้บัญชีอื่นไม่ได้
หากใช้บัญชีอื่น สลิปจะไม่ผ่านและไม่ได้รับเครดิต
QR ผูกกับรายการเดียว ใช้ครั้งเดียว
ห้ามเก็บไว้ใช้ซ้ำหรือส่งต่อ การฝากครั้งใหม่ต้องสร้างรายการใหม่
หากใช้ซ้ำจะถือเป็นสลิปซ้ำ (DUPLICATE_SIGNATURE)
ttl_seconds คืออายุของลิงก์หน้าชำระเงิน ส่วน 15 นาทีคือเวลาโอนจริงที่เริ่มนับเมื่อจับคู่สำเร็จ — เป็นค่าคนละตัวกัน
3. ข้อพิพาท (dispute)
เมื่อโอนแล้วแต่แนบสลิปไม่สำเร็จ ผู้ฝากเปิดข้อพิพาทได้จากหน้า session (scope match:dispute) รายการจะถูกล็อกไว้แทนที่จะหมดอายุ จนกว่าแอดมินจะตัดสิน — ผลต่อฝั่งร้านค้าเป็นดังนี้ (ดูตารางเทียบสองทางที่หน้า Webhook)
| ตรวจสอบสถานะ | GET /v1/p2p/match/:matchId → match_status — การเปิดและปิดข้อพิพาทไม่มี webhook |
| ใครตัดสิน | แอดมินเท่านั้น ไม่มีระบบตัดสินอัตโนมัติ — รายการค้างอยู่จนกว่าจะมีการตัดสิน และย้อนกลับไม่ได้ |
| ระยะเวลา | ไม่มี SLA รับประกัน อาจใช้เวลาหลายชั่วโมงถึงหลายวัน — อย่าตั้ง timeout ฝั่งร้านแล้วปิดออเดอร์เอง |
| ตัดสินให้ผู้ฝาก | payment กลายเป็น PAYMENT_PAID และส่ง webhook ตามปกติ ยอดที่ได้หักค่าธรรมเนียมฝากแล้ว · ฝั่งถอนได้ WITHDRAWAL_PARTIALLY_FUNDED (reason LEG_SETTLED) ถ้ายังขาดยอด บัญชีบริษัทจะโอนส่วนที่เหลือตามปกติ |
| ตัดสินให้ผู้ถอน | payment ไม่เปลี่ยนแปลง · ฝั่งถอนได้ webhook ปิดรายการตาม outcome.result และคืนเงินตาม summary · reputation ของผู้ฝากถูกหัก |
4. classic fallback
หากไม่มีรายการให้จับคู่ ระบบอาจเปลี่ยนรายการไปใช้ช่องทางธนาคารในคำขอเดียวกัน — response จะส่งข้อมูลช่องทาง classic แทน match ของ P2P
- ใช้
payment.idเป็นคีย์กระทบยอด อย่าผูก logic กับช่องทางที่ขอ deposit_typeจะเป็นCLASSICแต่ยังเป็นออเดอร์เดียวกัน- ถ้าไม่ส่ง
order_idระบบจะสร้างให้เอง และorder_user_referenceกลายเป็นเลขบัญชีผู้โอน - client ต้องอ่าน response ได้ทั้งสองรูปแบบ ไม่ใช่สมมติว่าเป็น P2P เสมอ
