สถานะและการหมดอายุ
ค่าสถานะของรายการรับเงินและจ่ายเงินออก พร้อมกฎการหมดอายุของรายการ
สร้างจาก public-api.md โดยอัตโนมัติเวอร์ชัน 1.2.0ปรับปรุงล่าสุด 2026-09-20
#สถานะของรายการ (Payment Statuses)
นี่คือสถานะทั้งหมดที่รายการหนึ่งเป็นได้ ค่า status ถูกคืนมาจาก
GET /v1/payments/{id} และตอนสร้างรายการ
| สถานะ | คำอธิบาย |
|---|---|
pending | สร้างแล้ว รอลูกค้าชำระเงิน (รับเงิน) หรือรอตรวจสอบ/ส่งออก (จ่ายเงินออก) |
processing | ส่งต่อให้ผู้ให้บริการรับ/จ่ายเงินแล้ว |
pending_approval | ถูกกันไว้รอการอนุมัติด้วยคน (เช่นรายการจ่ายเงินออกที่ต้องตรวจสอบ) |
completed | สำเร็จเรียบร้อย |
failed | ล้มเหลว หรือถูกคุณยกเลิกผ่าน POST /v1/payments/{id}/cancel |
expired | หมดเวลารอชำระเงินโดยไม่พบการชำระที่จับคู่ได้ |
refunded | รายการรับเงินที่สำเร็จแล้วถูกผู้ดูแลระบบกลับรายการ |
cancelled | มีนิยามไว้ในโครงสร้างข้อมูล แต่ ไม่ถูกสร้างขึ้น สำหรับรายการที่สร้างผ่าน API นี้ |
การเปลี่ยนสถานะที่เกิดขึ้นได้จริง:
pending→processing,pending_approval,completed,failed,expiredprocessing→pending_approval,completed,failed,expiredpending_approval→completed,failedcompleted→refundedfailed/expired→pending_approval,completed(นี่คือเส้นทางที่การอัปโหลดสลิป หรือการกู้รายการโดยผู้ดูแลระบบทำให้รายการกลับมามีผล)refundedเป็นสถานะสุดท้าย ไม่เปลี่ยนต่อ
การหมดเวลาให้สถานะ
expiredไม่ใช่failedรายการรับเงินที่ไม่มีการชำระจะจบที่expiredโดยมีเหตุผลความล้มเหลวภายในว่าTransaction expiredและ webhook จะส่งstatus: "expired"พร้อม eventtransaction.expired(เอกสารฉบับก่อนหน้านี้เคยระบุว่า การหมดเวลาจะกลายเป็นfailedซึ่งไม่เคยเป็นพฤติกรรมของโค้ดที่ใช้งานจริง)
#การหมดอายุของรายการ (Transaction Expiry)
- รายการรับเงินหมดอายุ 10 นาที หลังสร้างตามค่าเริ่มต้น เวลาที่แน่นอนถูกคืนมาในฟิลด์
expires_atให้ยึดค่านั้นเสมอ อย่าคำนวณจากระยะเวลาที่สมมติเอง - หากลูกค้าไม่ชำระเงินทันเวลา:
- สถานะจะกลายเป็น
expired(ไม่ใช่failed) โดยมีเหตุผลความล้มเหลวภายในว่าTransaction expired - ระบบส่ง webhook พร้อม
status: "expired"และ eventtransaction.expired
- สถานะจะกลายเป็น
- ตัวกวาดรายการหมดอายุทำงานทุก 1 นาที และพิจารณารายการรับเงินที่เป็น
pendingและprocessingดังนั้น webhook อาจมาถึงช้ากว่าexpires_atได้ถึงหนึ่งนาที - รายการที่หมดอายุไม่จำเป็นต้องสูญเปล่า หากลูกค้าชำระเงินมาแล้วจริง ให้อัปโหลดสลิปภายใน
24 ชั่วโมงผ่าน
POST /v1/payments/{id}/upload-slipเพื่อกู้รายการและเข้ายอดให้
PromptPay QR ไม่หมดอายุที่ฝั่งธนาคาร ลูกค้ายังสแกนและโอนได้หลังเวลา
expires_atเงินก้อนนั้นจะปรากฏเป็นรายการโอนที่จับคู่ไม่ได้ให้ฝ่ายปฏิบัติการตามแก้ ไม่ใช่การเข้ายอดอัตโนมัติ
หน้านี้แปลจากเอกสารต้นฉบับภาษาอังกฤษ ส่วนที่เป็นค่าทางเทคนิค — path, ชื่อฟิลด์, header, รหัสข้อผิดพลาด และชื่อคอลัมน์ในไฟล์ส่งออก — คงไว้เป็นภาษาอังกฤษตามที่ระบบใช้จริง

