Order และลิงก์จ่าย

Order คือการซื้อ 1 ครั้ง เซิร์ฟเวอร์เกมสร้างเมื่อผู้เล่นกดซื้อ

Base URL: https://api.ez2pay.gg

ทุก request ใช้ API key ของเกม:

Authorization: Bearer ez2_live_...

เรียก API จากเซิร์ฟเวอร์เท่านั้น error เป็น JSON รูปแบบ {"error":"CODE"} ดูข้อผิดพลาดและวิธีแก้ body ของ request จำกัด 16 KiB

สร้าง Order

curl -X POST https://api.ez2pay.gg/v1/orders \
  -H "Authorization: Bearer $EZ2PAY_API_KEY" \
  -H "Idempotency-Key: purchase-7f3a9c" \
  -H "Content-Type: application/json" \
  -d '{"sku":"gem_pack_100","buyer":"p_123","customer_email":"[email protected]","return_url":"https://game.example/topup/result"}'
ช่องความหมายกติกา
skuรหัส SKUยาว 1-100 ต้องเป็น SKU ที่ active ในเกมนี้
buyerรหัสผู้เล่นในเกมยาว 1-200 ใช้ระบุว่าส่งของให้ใคร
customer_emailอีเมลผู้เล่นสำหรับใบเสร็จอีเมลถูกต้อง ยาวไม่เกิน 254 ไม่ส่งให้ AI ผ่าน MCP
return_urlหน้าผลลัพธ์ของเกมHTTPS ยาวไม่เกิน 2048 ห้ามมี username หรือ password

ไม่มีช่องราคา EZ2Pay ดึงราคาจาก SKU เสมอ ช่องอื่นนอกตารางนี้จะได้ 400

เกมต้องเป็น approved ไม่เช่นนั้นได้ 409 GAME_APPROVAL_REQUIRED

Idempotency-Key

header นี้บังคับ ใช้กันการสร้าง Order ซ้ำเมื่อเซิร์ฟเวอร์ลองใหม่

  • key เดิม ข้อมูลเดิม: ได้ Order เดิมกลับมาพร้อม 200
  • key เดิม ข้อมูลเปลี่ยน: 409 IDEMPOTENCY_CONFLICT
  • การซื้อครั้งใหม่ต้องใช้ key ใหม่
  • รูปแบบ: ตัวอักษร ASCII ที่พิมพ์ได้ 1-200 ตัว ห้ามมีช่องว่าง

คำตอบ

Order ใหม่ตอบ 201 การส่งซ้ำด้วย key เดิมตอบ 200

{
  "order_id": "ord_00000000-0000-4000-8000-000000000001",
  "sku": "gem_pack_100",
  "buyer": "p_123",
  "status": "CREATED",
  "amount": "100.00",
  "currency": "THB",
  "checkout_url": "https://pay.ez2pay.gg/my-fantasy-town?t=Xk29fQ...",
  "expires_at": "2026-11-09T05:10:00.000Z",
  "paid_at": null,
  "delivered_at": null,
  "paid_channel": null,
  "unlock_at": null,
  "void_reason": null
}
ช่องความหมาย
order_idord_ ตามด้วย UUID
amountราคาเต็มที่ผู้เล่นจ่ายให้ EZ2Pay เป็นสตริงทศนิยม 2 ตำแหน่ง ไม่ใช่เงินที่คุณได้รับ
currencyTHB เสมอ
checkout_urlพาผู้เล่นมาที่นี่
expires_atเวลาที่ Order หยุดรับการจ่ายใหม่ เป็น UTC
paid_atเวลาที่ยืนยันเงินเข้าครั้งแรก เป็น UTC แก้ไม่ได้
delivered_atเวลาที่คุณแจ้งส่งของแล้ว เป็น UTC
paid_channelpromptpay หรือ card เมื่อจ่ายแล้ว
unlock_atวันที่รับเงินค่าสินค้าของรายการนี้ได้ เป็น UTC
void_reasonเหตุผลที่ยกเลิก ถ้ามี

ใช้ลิงก์จ่าย

  1. พาผู้เล่นไปที่ checkout_url
  2. หน้าจ่ายแสดงชื่อเกม ของ ราคา และ ผู้ขาย: EZ2Pay
  3. ผู้เล่นจ่าย ตอนนี้เปิด PromptPay QR ส่วนบัตรเครดิตแสดง "เร็วๆ นี้" จนกว่าจะเปิด

Order รับการจ่ายใหม่ได้ 10 นาที QR มีอายุ 10 นาทีนับจากตอนออก ผู้เล่นที่เริ่มจ่ายก่อน expires_at เล็กน้อยจึงจ่ายต่อจนจบได้ สถานะจะเป็น EXPIRED แล้วเปลี่ยนเป็น PAID ให้ถือว่า Webhook นั้นเป็นการขายปกติ

หลัง expires_at ให้สร้าง Order ใหม่ด้วย Idempotency-Key ใหม่ ถ้าใช้ key เดิมจะได้ Order ที่หมดอายุกลับมา

return_url คือหน้าที่ผู้เล่นกลับมาหลังจ่าย ใช้แสดงผลเท่านั้น การมาถึงหน้านี้ไม่พิสูจน์อะไร ห้ามส่งของจากหน้านี้

อ่าน Order

curl https://api.ez2pay.gg/v1/orders/ord_00000000-0000-4000-8000-000000000001 \
  -H "Authorization: Bearer $EZ2PAY_API_KEY"

ตอบช่องเดียวกับด้านบน Order ของเกมอื่นได้ 404 ORDER_NOT_FOUND

สถานะ Order

สถานะความหมาย
CREATEDสร้างแล้ว ผู้เล่นยังไม่เริ่มจ่าย
PENDING_PAYMENTออกรายการจ่ายแล้ว รอผู้เล่น
PAIDยืนยันเงินเข้าแล้ว
NOTIFYINGกำลังส่ง Webhook ไปที่เซิร์ฟเวอร์เกม
NOTIFIEDเซิร์ฟเวอร์เกมตอบ 200 แล้ว
DELIVEREDเซิร์ฟเวอร์เกมตอบ 200 และแจ้งส่งของแล้ว
EXPIREDหมดเวลาจ่าย
NOTIFY_FAILEDส่ง Webhook ไม่สำเร็จทุกรอบ Order ยังถือว่าจ่ายแล้ว กดส่งซ้ำใน Dashboard ได้
MISMATCHข้อมูลการจ่ายไม่ตรง ทีม EZ2Pay ตรวจเอง ห้ามส่งของ
VOIDEDEZ2Pay ยกเลิกแล้ว
FAILEDสร้างรายการจ่ายไม่สำเร็จ

สถานะที่ถือว่าจ่ายแล้วมีเท่านี้: PAID, NOTIFYING, NOTIFIED, NOTIFY_FAILED, DELIVERED

การยกเลิกและส่งแจ้งซ้ำ

API ไม่มี endpoint สำหรับยกเลิก Order หรือส่ง Webhook ซ้ำ ให้ทำใน Dashboard: ค้น Order ด้วย Order ID หรือ Player ID แล้วกดส่งแจ้งซ้ำ หรือส่งเรื่องให้ EZ2Pay

ต่อไป: Webhook และการส่งมอบของ