รหัสข้อผิดพลาดและแนวทางการรีทราย
API
รหัสข้อผิดพลาด
รีทราย
สถานะ HTTP
บทความนี้เหมาะสำหรับใคร
สำหรับนักพัฒนาที่ต้องการสร้างการจัดการข้อผิดพลาดของ API และลอจิกการรีทราย
สำหรับนักพัฒนาที่ต้องการสร้างการจัดการข้อผิดพลาดของ API และลอจิกการรีทราย
โครงสร้างของเรสปอนส์ข้อผิดพลาด
{
"error": {
"code": "invalid_parameter",
"message": "store_id is required",
"param": "store_id",
"request_id": "req_01HV6N..."
}
}
request_id จำเป็นต้องใช้เมื่อติดต่อฝ่ายสนับสนุน กรุณาใส่ไว้ในบันทึกข้อผิดพลาดเสมอ
รายการรหัสสถานะ HTTP
| รหัส | ความหมาย | รีทราย |
|---|---|---|
| 200 OK | สำเร็จ | ― |
| 201 Created | สร้างสำเร็จ | ― |
| 204 No Content | สำเร็จ (ไม่มีเนื้อหา) | ― |
| 400 Bad Request | พารามิเตอร์ไม่ถูกต้อง | ไม่ได้ (ต้องแก้ไข) |
| 401 Unauthorized | ยืนยันตัวตนล้มเหลว | 1 ครั้งหลังต่ออายุโทเคน |
| 403 Forbidden | สิทธิ์ไม่พอ・สโคปไม่พอ | ไม่ได้ |
| 404 Not Found | ไม่พบรีซอร์ส | ไม่ได้ |
| 409 Conflict | สถานะขัดแย้ง | แล้วแต่เงื่อนไข |
| 410 Gone | ถูกยกเลิกแล้ว | ไม่ได้ |
| 422 Unprocessable | ข้อผิดพลาดการตรวจสอบ | ไม่ได้ |
| 429 Too Many Requests | การจำกัดอัตรา | หลัง Retry-After |
| 500 Internal Error | ข้อผิดพลาดของเซิร์ฟเวอร์ | ด้วย exponential backoff |
| 502 Bad Gateway | ข้อผิดพลาดต้นทาง | ด้วย exponential backoff |
| 503 Service Unavailable | ใช้งานไม่ได้ชั่วคราว | ด้วย exponential backoff |
| 504 Gateway Timeout | หมดเวลา | ด้วย exponential backoff |
รหัสข้อผิดพลาดหลัก
| code | การรับมือ |
|---|---|
invalid_parameter | ตรวจสอบเนื้อหาของฟิลด์ param |
missing_parameter | เพิ่มพารามิเตอร์ที่จำเป็น |
invalid_token | ต่ออายุโทเคน |
expired_token | ต่ออายุด้วยรีเฟรชโทเคน |
insufficient_scope | เพิ่มสโคปที่จำเป็นแล้วขออนุญาตใหม่ |
app_not_approved | ต้องยื่นขอตรวจสอบสำหรับสโคปฝั่ง User |
resource_not_found | ตรวจสอบการมีอยู่ของ ID |
duplicate_resource | อัปเดตรีซอร์สที่มีอยู่ หรือสร้างด้วย ID อื่น |
rate_limited | รอ Retry-After วินาที |
plan_limit_exceeded | อัปเกรดแพลน |
แนวทางการรีทราย
เงื่อนไขที่รีทรายได้
- สถานะ HTTP เป็น
429หรือ5xx - เน็ตเวิร์กไทม์เอาต์・ข้อผิดพลาดการเชื่อมต่อ
- กรณี POST ให้ตั้ง
Idempotency-Keyเสมอ (เพื่อป้องกันการสร้างซ้ำ)
ระยะห่างการรีทราย (exponential backoff + jitter)
function retryDelay(attempt) {
// 1, 2, 4, 8, 16 วินาที (สูงสุด 32 วินาที)
const base = Math.min(Math.pow(2, attempt), 32);
// jitter ±25% เพื่อเลี่ยงการเข้าถึงแบบกระจุกตัว
const jitter = base * (Math.random() * 0.5 - 0.25);
return (base + jitter) * 1000;
}
จำนวนรีทรายสูงสุด
- API ทั่วไป:สูงสุด 5 ครั้ง
- การประมวลผลแบบแบตช์:สูงสุด 10 ครั้ง
- เกิดจากการกระทำของผู้ใช้:สูงสุด 2 ครั้ง (ไม่ให้รอนานเกินไป)
กรณี 429 ให้ให้ความสำคัญกับเฮดเดอร์ Retry-After
HTTP/1.1 429 Too Many Requests Retry-After: 30 → รอ 30 วินาทีแล้วค่อยลองใหม่
กรณีที่ห้ามรีทราย
4xx(ยกเว้น 429):เพราะปัญหาอยู่ที่ตัวรีเควสต์เอง ลองกี่ครั้งก็เหมือนเดิม- กรณี POST/PUT ที่ไม่ได้แนบ
Idempotency-Key:เสี่ยงต่อการสร้างซ้ำ
คู่มือที่เกี่ยวข้อง
วันที่เผยแพร่: 2569-04-27
วันที่อัปเดต: 2569-07-05
หมวดหมู่
แท็ก
API (22)
OAuth (15)
Android (10)
iOS (9)
Webhook (8)
api (7)
oauth (5)
getting-started (4)
การลงทะเบียนแอป (4)
การแก้ปัญหา (4)
บทความที่เกี่ยวข้อง
-
วิธีใช้ Reservations APIคู่มือ Reservations API ของ ReceiptRoller (/api/v1/reservations) อธิบายการทำ CRUD และอัปเดตสถานะการจอง การดึง・สร้าง・สร้างชุดของช่องจอง (สล็อต) การดึงข้อมูลโต๊ะ (โต๊ะ・ห้องส่วนตัว・เคาน์เตอร์) ที่ลงทะเบียนไว้ในเลย์เอาต์ร้าน และสถิติการจอง
-
วิธีใช้ In-Store Media Display API (Display API)ภาพรวมของ In-Store Android Display API ของ ReceiptRoller (/api/v1/displays/*) และขั้นตอนการจับคู่・heartbeat・การดึงเพลย์ลิสต์・การรายงานผลการเล่น คู่มือเริ่มต้นสำหรับสร้างแอปเล่นมีเดียลูปบนเครื่อง Android แบบ POS ควบคู่หรือเครื่องไซเนจของร้าน
-
การเชื่อมต่อข้อมูลการซื้อและใบเสร็จอธิบายโครงสร้างข้อมูลการซื้อและใบเสร็จที่ ReceiptRoller จัดการ วิธีการดึงข้อมูล สโคปที่เกี่ยวข้อง Webhook และกรณีการใช้งานที่พบบ่อย
-
สารบัญความช่วยเหลือสำหรับนักพัฒนาสารบัญความช่วยเหลือสำหรับนักพัฒนา ReceiptRoller รวบรวมตั้งแต่การสมัครเป็นนักพัฒนา การลงทะเบียนแอปพลิเคชัน การยืนยันตัวตน OAuth และสโคป คู่มือการพัฒนา (แอปวอลเล็ต, Webhook สำหรับร้านค้า, Survey API) คู่มือแยกตามโดเมนข้อมูล การใช้งานและความปลอดภัย คอมมูนิตี ไปจนถึงการแก้ปัญหา
-
ดึงรายการบัญชีธุรกิจ・ร้านค้า・เครื่อง POSคู่มือสรุปขั้นตอนการดึงรายการบัญชีธุรกิจที่ผู้ใช้สังกัด ร้านค้าภายใต้บัญชีนั้น และเครื่อง POS ของแต่ละร้านผ่าน REST API จากแอปมือถือ/แอปเซิร์ฟเวอร์ของ ReceiptRoller