ข้อผิดพลาดและวิธีแก้

error ของ API เป็น JSON รูปแบบ {"error":"CODE"}

โค้ด error

HTTPโค้ดความหมาย
400INVALID_REQUESTช่องผิดรูปแบบ หรือส่งช่องที่ไม่อนุญาต
400IDEMPOTENCY_KEY_REQUIREDไม่มี header Idempotency-Key หรือรูปแบบผิด
401LIVE_KEY_REQUIREDไม่มี header Authorization หรือไม่ใช่ key ez2_live_... ที่ถูกต้อง
401INVALID_API_KEYไม่รู้จัก key นี้ หรือถูกเพิกถอนแล้ว
401INVALID_MCP_TOKENMCP token ผิดรูปแบบ หมดอายุ หรือถูกเพิกถอน
403MCP_FORBIDDENMCP token เรียก route หรือ scope ที่ไม่อนุญาต
403MCP_DRAFT_ONLYMCP พยายามสร้าง SKU ในเกมที่ไม่ใช่ draft หรือตั้ง Webhook URL ของเกมที่ไม่ใช่ draft หรือเกมที่มี Order แล้ว
404SKU_NOT_FOUNDไม่มี SKU ที่ active รหัสนี้ในเกมนี้ SKU ที่เป็น pending หรือ suspended ขายไม่ได้
404ORDER_NOT_FOUNDไม่มี Order นี้ หรือเป็นของเกมอื่น
404GAME_NOT_FOUNDไม่มีเกมนี้ หรือไม่ใช่เกมของคุณ
409IDEMPOTENCY_CONFLICTใช้ Idempotency-Key นี้กับข้อมูลอื่นไปแล้ว
409GAME_APPROVAL_REQUIREDเกมยังไม่ approved
409ORDER_NOT_NOTIFIEDแจ้งส่งของแล้วขณะที่ Order ไม่ใช่ NOTIFYING, NOTIFIED หรือ DELIVERED
409GAME_SLUG_UNAVAILABLEมีเกมอื่นใช้ slug นี้แล้ว
409SKU_CODE_EXISTSเกมนี้มี SKU รหัสนี้แล้ว
413PAYLOAD_TOO_LARGEbody ยาวเกิน 16 KiB
415JSON_REQUIREDต้องส่ง Content-Type: application/json
422UNSAFE_WEBHOOK_URLWebhook URL ไม่ใช่ HTTPS สาธารณะ
500INTERNAL_ERRORเกิดข้อผิดพลาดที่ไม่คาดคิด ให้ลองใหม่

ข้อผิดพลาดที่พบบ่อย

ตรวจลายเซ็นไม่ผ่าน

framework แปลง JSON ก่อนที่คุณจะอ่าน ทำให้ byte เปลี่ยน ให้อ่าน raw body ก่อน ดูFramework อื่น

ถ้าไม่ผ่านแค่บางครั้ง ให้ดูชื่อผู้เล่นที่มีอักษรนอก ASCII ต้องลงนามจาก byte ดิบ ไม่ใช่ string ที่แปลงรหัสใหม่

ถ้าทุก Webhook เริ่มไม่ผ่านหลังมีคนกด สร้าง secret ใหม่ แปลว่าเซิร์ฟเวอร์ยังใช้ secret เดิม ดูเปลี่ยน Webhook secret

เวลาเครื่องไม่ตรง

นาฬิกาเซิร์ฟเวอร์ห่างเกิน 5 นาที ให้ซิงก์ด้วย NTP

Webhook มาซ้ำไม่หยุด

เซิร์ฟเวอร์ตอบค่าอื่นที่ไม่ใช่ 200 ส่วน 201 และ 204 นับว่าไม่สำเร็จ ต้องตอบ 200 พอดี

ส่งของซ้ำ

เก็บสถานะ "เคยให้แล้ว" ไว้ในหน่วยความจำหรือนอก transaction ให้เก็บ order_id ใน transaction เดียวกับการให้ของ ดูให้ของครั้งเดียว

Order ยังไม่ยืนยันว่าจ่ายแล้ว

Order ไม่อยู่ในสถานะจ่ายแล้ว หรือ sku/buyer ไม่ตรงกับ Webhook ห้ามให้ของ ถ้าผู้เล่นบอกว่าจ่ายแล้ว ให้ค้น Order ใน Dashboard

400 ตอนสร้าง Order

ส่งช่องที่ไม่อนุญาต เช่น amount หรือ price ให้ส่งเฉพาะ sku, buyer, customer_email และ return_url

409 IDEMPOTENCY_CONFLICT

ใช้ key เดิมกับข้อมูลใหม่ การซื้อแต่ละครั้งต้องใช้ key ใหม่ การลองซ้ำของการซื้อเดิมต้องส่งข้อมูลเดิม

SKU_NOT_FOUND ทั้งที่เห็น SKU

SKU เป็น pending หรือ suspended หรืออยู่คนละเกม ขายได้เฉพาะ SKU ที่ active

Order ค้างที่ NOTIFIED

แจ้งส่งของแล้วไม่สำเร็จ เช่น เซิร์ฟเวอร์ล่มหลังให้ของ ตรวจว่าของเข้าแล้ว จากนั้นเรียก POST /v1/orders/{id}/delivered เรียกซ้ำได้

Webhook URL ไม่ผ่าน

URL ต้องเป็น HTTPS พอร์ต 443 และชี้ไปที่อยู่สาธารณะ localhost และที่อยู่ภายในถูกปฏิเสธ และระบบไม่ตาม redirect

เงินเพี้ยนจากทศนิยม

0.1 + 0.2 ไม่เท่ากับ 0.3 ใน float ให้เก็บจำนวนเต็มสตางค์ amount เป็นสตริงเช่น "100.00" เทียบเป็นสตริง หรือแปลงเป็นจำนวนเต็มสตางค์

ผู้เล่นจ่ายแล้วแต่ของไม่เข้า

  1. ผู้เล่นเปิดใบเสร็จแล้วติดต่อทีมเกมของคุณ
  2. ค้น Order ใน Dashboard ด้วย Order ID หรือ Player ID
  3. ถ้าเป็น NOTIFY_FAILED ให้กดส่งแจ้งซ้ำ
  4. ถ้าแก้ไม่ได้ ให้ส่งเรื่องให้ EZ2Pay จากหน้าเดียวกัน

ยังแก้ไม่ได้

ส่งเรื่องจากหน้าค้น Order ใน Dashboard พร้อม Order ID