Appearance
Error Codes
GameSO API ใช้ HTTP status codes มาตรฐาน และส่ง error response ในรูปแบบ JSON
Error Response Format
json
{
"status": 400,
"code": "BAD_REQUEST",
"message": "reference_id is required"
}| Field | Type | Description |
|---|---|---|
status | integer | HTTP status code |
code | string | Error code สำหรับ programmatic handling |
message | string | รายละเอียดข้อผิดพลาดที่อ่านได้ |
HTTP Status Codes
| Status | ความหมาย |
|---|---|
200 | สำเร็จ |
400 | Bad Request — ข้อมูลที่ส่งมาไม่ถูกต้อง |
401 | Unauthorized — API Key ไม่ถูกต้องหรือไม่ได้ส่งมา |
404 | Not Found — ไม่พบ resource ที่ขอ |
409 | Conflict — ข้อมูลซ้ำ เช่น reference_id ซ้ำ |
503 | Service Unavailable — ยอดเงินไม่เพียงพอหรือระบบมีปัญหา |
Error Codes
400 Bad Request
| Code | สาเหตุ | วิธีแก้ |
|---|---|---|
BAD_REQUEST | ข้อมูลที่ส่งมาไม่ครบหรือไม่ถูกต้อง | ตรวจสอบ request body |
VALIDATION_ERROR | ข้อมูลไม่ผ่าน validation | ดู message สำหรับรายละเอียด |
INVALID_SKU | SKU ไม่ถูกต้องหรือไม่มีในระบบ | ตรวจสอบ SKU ที่ใช้ |
401 Unauthorized
| Code | สาเหตุ | วิธีแก้ |
|---|---|---|
UNAUTHORIZED | ไม่มี API Key หรือ Key ไม่ถูกต้อง | ตรวจสอบ X-API-Key header |
404 Not Found
| Code | สาเหตุ | วิธีแก้ |
|---|---|---|
NOT_FOUND | ไม่พบ order ที่ขอ | ตรวจสอบ reference_id |
409 Conflict
| Code | สาเหตุ | วิธีแก้ |
|---|---|---|
DUPLICATE_REFERENCE | reference_id ซ้ำกับ order ที่มีอยู่แล้ว | ใช้ reference_id ใหม่ หรือ query order เดิม |
503 Service Unavailable
| Code | สาเหตุ | วิธีแก้ |
|---|---|---|
INSUFFICIENT_BALANCE | ยอดเงินในกระเป๋าไม่เพียงพอ | เติมเงินในกระเป๋าก่อน |
SERVICE_UNAVAILABLE | ระบบมีปัญหาชั่วคราว | ลองใหม่ภายหลัง |
ตัวอย่าง Error Handling
javascript
async function createOrder(orderData) {
const response = await fetch("https://api.gameso.io/v1/orders", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": process.env.GAMESO_API_KEY,
},
body: JSON.stringify(orderData),
});
if (!response.ok) {
const error = await response.json();
switch (error.code) {
case "DUPLICATE_REFERENCE":
// reference_id ซ้ำ — ดึง order เดิมมาแทน
return getOrder(orderData.reference_id);
case "INSUFFICIENT_BALANCE":
throw new Error("กระเป๋าเงินไม่เพียงพอ กรุณาเติมเงินก่อน");
case "UNAUTHORIZED":
throw new Error("API Key ไม่ถูกต้อง");
default:
throw new Error(`API Error: ${error.message}`);
}
}
return response.json();
}