PayMeNow

การสนับสนุนและประวัติเวอร์ชัน

ช่องทางติดต่อทีมสนับสนุน และประวัติการเปลี่ยนแปลงของเอกสารชุดนี้

สร้างจาก public-api.md โดยอัตโนมัติเวอร์ชัน 1.2.0ปรับปรุงล่าสุด 2026-09-20

#การขอความช่วยเหลือ (Support)

หากต้องการความช่วยเหลือด้านเทคนิค ติดต่อผู้ดูแลบัญชีของคุณหรือช่องทางสนับสนุนที่ได้รับ มาพร้อมข้อมูลยืนยันตัวตน สำหรับแบรนด์ที่ให้บริการอยู่ตอนนี้:

  • Telegram: @paymenow_support_bot
  • ศูนย์ช่วยเหลือ: https://help.paymenow.asia

เมื่อแจ้งปัญหาคำขอที่ล้มเหลว กรุณาแจ้งค่า trace_id จาก details ของข้อผิดพลาด (หรือ response header X-Request-ID) มาด้วย

ปัจจุบันยังไม่มีหน้าสถานะระบบสาธารณะ ส่วน GET /health รายงานเฉพาะสถานะของ API gateway เท่านั้น

#ประวัติการเปลี่ยนแปลง (Changelog)

#v1.2.0 (2026-09-20)

ตรวจทานเอกสารฉบับนี้เทียบกับโค้ดที่ใช้งานจริงทั้งฉบับ สิ่งที่แก้ไข:

  • แบรนด์และโฮสต์: เปลี่ยน gateway.i-pay.one / pay.i-pay.one / docs.i-pay.one / [email protected] เป็นตัวแทน <domain> พร้อมค่าจริงที่ใช้อยู่ (api.paymenow.asia, sandbox-api.paymenow.asia)
  • การเลือก sandbox ใช้โฮสต์ ไม่ใช่ดูจากประเภทร้านค้าอย่างเดียว — production กับ sandbox เป็นคนละ base URL และคำกล่าวเดิมที่ว่าทั้งสองใช้ URL เดียวกันนั้นผิด
  • การยืนยันตัวตน: ระบุให้ชัดว่า PATH ไม่รวม query string, ต้องตัด | ตัวท้ายเมื่อไม่มี body, รูปแบบคีย์ที่ถูกต้อง (pk_prod_/pk_demo_ 40 ตัวอักษร, sk_prod_/sk_demo_ 72 ตัวอักษร ไม่ใช่ "64 ตัวอักษร"), การแคชคีย์ 5 นาที และพฤติกรรมของ 403 IP_NOT_WHITELISTED
  • เพิ่มเอกสารของ endpoint ใหม่: GET /v1/payments/get-balance, POST /v1/payments/{id}/upload-slip (พร้อมรูปแบบลายเซ็นที่ใช้แฮชไฟล์), /v1/merchant-reports/*, /health และตัวช่วย /sandbox/*
  • การรับเงิน: เพิ่ม paid_amount (ยอดสตางค์ไม่ซ้ำที่ลูกค้าต้องโอนจริง) แก้เวลาหมดอายุ เริ่มต้นจาก 15 เป็น 10 นาที ระบุขั้นต่ำ 50 บาทและขั้นต่ำ/ขั้นสูงของร้านค้า และระบุว่า reference_id ไม่ใช่กุญแจกันรายการซ้ำ
  • payment_url: บันทึกเดิมเคยระบุว่าฟิลด์นี้ไม่เคยมีค่าจริงและไม่มีหน้าชำระเงินที่โฮสต์ให้ ทั้งสองข้อเลิกเป็นความจริงตั้งแต่กันยายน 2026 — หน้านั้นเปิดใช้แล้ว ฟิลด์นี้มีลิงก์จริง และตารางฟิลด์กับตัวอย่างด้านบนแสดงไว้แล้ว
  • การจ่ายเงินออก: ระบุขั้นต่ำ 100 บาท การกันจ่ายซ้ำ 5 นาที สถานะตอนสร้างเป็น pending/processing และค่า bank_code: "PROMPTPAY" ถูกปฏิเสธตั้งแต่ขั้นตรวจสอบ (เส้นทาง PromptPay proxy เรียกผ่าน API นี้ไม่ได้)
  • การดูรายการ: แก้ให้ถูกต้องว่าไม่เคยคืน qr_code, qr_code_image หรือ paid_amount
  • การยกเลิก: แก้ให้ถูกต้องว่ารายการที่ยกเลิกแล้วรายงาน status: "failed" ไม่ใช่ cancelled
  • สถานะ: ระบุครบทั้งหมด (pending, processing, pending_approval, completed, failed, expired, refunded, cancelled) พร้อมกฎการเปลี่ยนสถานะจริง การหมดเวลาให้ expired ไม่ใช่ failed ซึ่งกลับคำที่ v1.1.0 ระบุไว้ผิด
  • Webhook: เพิ่ม paidAmount และ failureReason เพิ่มเอกสารของ refunded / transaction.refunded ระบุว่า expired เป็นค่าปัจจุบันไม่ใช่ของเก่า ระบุสูตรลายเซ็นที่แน่นอน (timestamp + "|" + raw_body เซ็นด้วย secret key ของ API ไม่ใช่ secret จากการตั้งค่า webhook) เพิ่ม header X-Webhook-Event และ X-Transaction-ID เวลารอส่ง 10 วินาที ช่วงส่งซ้ำคงที่ 1 นาที ซองของ event กลุ่มรายงาน และ ข้อควรระวังเรื่องการส่งซ้ำ อย่างน้อยหนึ่งครั้ง ของ webhook รายการธุรกรรม
  • ข้อผิดพลาด: แทนรายการรหัสที่กุขึ้นด้วยรหัสที่ระบบส่งออกจริง พร้อมรหัสสถานะ HTTP ของแต่ละตัว ระบุว่า PAYMENT_NOT_FOUND, PAYMENT_ERROR, DUPLICATE_REFERENCE และ INVALID_BANK_CODE ไม่ได้ถูกใช้ และเพิ่มเอกสารของ details.reason / details.trace_id กับ X-Request-ID
  • ขีดจำกัดการเรียกใช้: แก้จากตารางสมมติ 100/30/20 รายการ endpoint เป็นโควตาจริง คือ 60/นาที ต่อร้านค้าสำหรับ /v1/payments/* อีก 60/นาที แยกต่างหากสำหรับ /v1/merchant-reports/* และ 300/นาที ต่อ IP สำหรับตัวช่วยของ sandbox
  • Sandbox: แก้ตารางจำนวนเงินทดสอบ (888.88 ไม่ใช่ตัวกระตุ้น timeout) แยกผลลัพธ์ของ การรับเงินกับการจ่ายเงินออก และเขียนเอกสารของสถานการณ์ timeout/invalid_account ให้ตรงความจริง
  • รหัสธนาคาร: เพิ่ม 032, 039, 045, 052 และอธิบายว่าระบบตรวจรหัสแค่ความยาว ส่วนตารางคือชุดรหัสที่แปลงเป็นชื่อธนาคารได้
  • การขอความช่วยเหลือ: แทน URL อีเมล/เอกสาร/สถานะที่ไม่มีอยู่จริงด้วยช่องทาง Telegram และศูนย์ช่วยเหลือที่ใช้งานได้จริง

#v1.1.0 (2025-12-24)

  • เปลี่ยนรูปแบบ payload ของ webhook เป็นโครงสร้างแบน
  • เพิ่มฟิลด์ qr_code_image ใน response ของการรับเงิน (PNG แบบ Base64)
  • เพิ่มฟิลด์ของการรับเงิน: bank_code, bank_account_no, bank_account_name
  • เพิ่มรหัสธนาคาร
  • เพิ่มเอกสารเรื่องขีดจำกัดการเรียกใช้
  • เพิ่มเอกสารเรื่องการหมดอายุของรายการ
  • (รุ่นนี้ระบุไว้ด้วยว่าการหมดเวลาทำให้สถานะเป็น failed ซึ่งไม่ถูกต้อง และแก้แล้วใน v1.2.0)

#v1.0.0 (2024-12-12)

  • รุ่นแรก
  • รับเงินด้วย PromptPay QR
  • จ่ายเงินออกเข้าบัญชีธนาคาร
  • การยืนยันตัวตนด้วย HMAC-SHA256
  • การแจ้งเตือนผ่าน webhook
  • การแยกเส้นทางตามประเภทร้านค้า Sandbox/Production

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