PayMeNow

สถานะและการหมดอายุ

ค่าสถานะของรายการรับเงินและจ่ายเงินออก พร้อมกฎการหมดอายุของรายการ

สร้างจาก 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, expired
  • processing → pending_approval, completed, failed, expired
  • pending_approval → completed, failed
  • completed → refunded
  • failed / expired → pending_approval, completed (นี่คือเส้นทางที่การอัปโหลดสลิป หรือการกู้รายการโดยผู้ดูแลระบบทำให้รายการกลับมามีผล)
  • refunded เป็นสถานะสุดท้าย ไม่เปลี่ยนต่อ

การหมดเวลาให้สถานะ expired ไม่ใช่ failed รายการรับเงินที่ไม่มีการชำระจะจบที่ expired โดยมีเหตุผลความล้มเหลวภายในว่า Transaction expired และ webhook จะส่ง status: "expired" พร้อม event transaction.expired (เอกสารฉบับก่อนหน้านี้เคยระบุว่า การหมดเวลาจะกลายเป็น failed ซึ่งไม่เคยเป็นพฤติกรรมของโค้ดที่ใช้งานจริง)

#การหมดอายุของรายการ (Transaction Expiry)

  • รายการรับเงินหมดอายุ 10 นาที หลังสร้างตามค่าเริ่มต้น เวลาที่แน่นอนถูกคืนมาในฟิลด์ expires_at ให้ยึดค่านั้นเสมอ อย่าคำนวณจากระยะเวลาที่สมมติเอง
  • หากลูกค้าไม่ชำระเงินทันเวลา:
    • สถานะจะกลายเป็น expired (ไม่ใช่ failed) โดยมีเหตุผลความล้มเหลวภายในว่า Transaction expired
    • ระบบส่ง webhook พร้อม status: "expired" และ event transaction.expired
  • ตัวกวาดรายการหมดอายุทำงานทุก 1 นาที และพิจารณารายการรับเงินที่เป็น pending และ processing ดังนั้น webhook อาจมาถึงช้ากว่า expires_at ได้ถึงหนึ่งนาที
  • รายการที่หมดอายุไม่จำเป็นต้องสูญเปล่า หากลูกค้าชำระเงินมาแล้วจริง ให้อัปโหลดสลิปภายใน 24 ชั่วโมงผ่าน POST /v1/payments/{id}/upload-slip เพื่อกู้รายการและเข้ายอดให้

PromptPay QR ไม่หมดอายุที่ฝั่งธนาคาร ลูกค้ายังสแกนและโอนได้หลังเวลา expires_at เงินก้อนนั้นจะปรากฏเป็นรายการโอนที่จับคู่ไม่ได้ให้ฝ่ายปฏิบัติการตามแก้ ไม่ใช่การเข้ายอดอัตโนมัติ

หน้านี้แปลจากเอกสารต้นฉบับภาษาอังกฤษ ส่วนที่เป็นค่าทางเทคนิค — path, ชื่อฟิลด์, header, รหัสข้อผิดพลาด และชื่อคอลัมน์ในไฟล์ส่งออก — คงไว้เป็นภาษาอังกฤษตามที่ระบบใช้จริง