รหัส Error
รายการรหัส Error ทั้งหมดใน EasySlip API
รูปแบบ Error Response
json
{
"status": 400,
"message": "error_code",
"data": {
// ข้อมูลเพิ่มเติม (ถ้ามี)
}
}รหัส HTTP Status
| Status | ความหมาย |
|---|---|
| 200 | สำเร็จ |
| 400 | Request ไม่ถูกต้อง |
| 401 | ไม่ได้รับอนุญาต |
| 403 | ไม่มีสิทธิ์เข้าถึง |
| 404 | ไม่พบข้อมูล |
| 429 | เรียกใช้ API มากเกินไป (ดู Rate Limit) |
| 500 | Server Error |
Error สำหรับ Bank Account API v2
ข้อความของ VALIDATION_ERROR
สำหรับ VALIDATION_ERROR ค่า message จะบอกว่าฟิลด์ไหนไม่ผ่านและเพราะอะไร เช่น "bankNumber: Too small: expected string to have >=1 characters" หากมีหลายฟิลด์ที่ไม่ผ่าน ข้อความจะคั่นด้วย ; โดย code ยังคงเป็น VALIDATION_ERROR เสมอ
| รหัส | คำอธิบาย | วิธีแก้ไข |
|---|---|---|
VALIDATION_ERROR | Request ไม่ผ่าน validation | ตรวจสอบชื่อฟิลด์และสาเหตุใน message |
INVALID_BANK_CODE | ไม่รองรับ bankCode ที่ส่งมา | ใช้รหัสธนาคารจาก GET /banks |
INVALID_EXTRA_VERIFY | extraVerify ไม่ตรงกับตัวเลือกของธนาคาร หรือไม่ได้ส่งค่าที่ธนาคารบังคับ | ใช้ค่า extraVerify จาก GET /banks |
BANK_ACCOUNT_NOT_FOUND | ไม่พบบัญชี หรือบัญชีไม่ได้เชื่อมโยงกับ Branch ของคุณ | ตรวจสอบ ID บัญชีและการเชื่อมโยง Branch |
BANK_ACCOUNT_DUPLICATE | มีบัญชี bankCode + bankNumber เดียวกันอยู่แล้วใน Service | ใช้บัญชีเดิมหรือเปลี่ยนข้อมูลบัญชี |
Error สำหรับ Authentication
| รหัส | คำอธิบาย | วิธีแก้ไข |
|---|---|---|
unauthorized | API Key ไม่ถูกต้องหรือหมดอายุ | ตรวจสอบ API Key |
forbidden | ไม่มีสิทธิ์เข้าถึง Endpoint นี้ | ติดต่อฝ่ายสนับสนุน |
Error สำหรับการตรวจสอบสลิป
| รหัส | คำอธิบาย | วิธีแก้ไข |
|---|---|---|
invalid_payload | Payload ไม่ถูกต้อง | ตรวจสอบรูปแบบ Payload |
invalid_image | รูปภาพไม่ถูกต้อง | ใช้รูปภาพที่รองรับ (JPEG, PNG, GIF, WebP) |
invalid_url | URL ไม่ถูกต้อง | ตรวจสอบรูปแบบ URL |
image_size_too_large | รูปภาพใหญ่เกินไป | ลดขนาดรูปภาพให้ไม่เกิน 4 MB |
qrcode_not_found | ไม่พบ QR Code ในรูป | ใช้รูปที่มี QR Code ชัดเจน |
slip_not_found | ไม่พบข้อมูลสลิป | สลิปอาจหมดอายุหรือถูกลบ |
slip_pending | สลิปธนาคารกรุงเทพรอดำเนินการ | รอสักครู่แล้วลองใหม่ (ภายใน 5 นาที) |
slip_expired | สลิปหมดอายุ | ใช้สลิปที่ยังไม่หมดอายุ |
duplicate_slip | สลิปถูกใช้แล้ว | สลิปนี้เคยตรวจสอบมาก่อน |
Error สำหรับ QR Code
| รหัส | คำอธิบาย | วิธีแก้ไข |
|---|---|---|
invalid_request | Request ไม่ถูกต้อง | ตรวจสอบพารามิเตอร์ที่ส่ง |
invalid_type | ประเภท QR ไม่ถูกต้อง | ใช้ PROMPTPAY, KSHOP, MAE_MANEE หรือ TUNGNGERN |
invalid_msisdn | เบอร์โทรศัพท์ไม่ถูกต้อง | ใช้รูปแบบ 0xxxxxxxxx |
invalid_natId | เลขบัตรประชาชนไม่ถูกต้อง | ใช้เลข 13 หลัก |
invalid_ref1 | Reference 1 ไม่ถูกต้อง | ใช้ตัวอักษรพิมพ์ใหญ่ 1-20 ตัว |
Error สำหรับโควต้า
| รหัส | คำอธิบาย | วิธีแก้ไข |
|---|---|---|
quota_exceeded | โควต้าหมด | เติมโควต้าหรือรอรีเซ็ต |
Error สำหรับ Rate Limit
| รหัส | คำอธิบาย | วิธีแก้ไข |
|---|---|---|
rate_limit_exceeded (v1)RATE_LIMIT_EXCEEDED (v2) | เรียก API เกิน TPS ที่ใช้ได้ | รอตาม header Retry-After แล้วลองใหม่ |
มาพร้อม HTTP status 429 และ header Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset รายละเอียดเพิ่มเติมดูที่ Rate Limit
Error สำหรับ Account Matching (v2)
| รหัส | คำอธิบาย | วิธีแก้ไข |
|---|---|---|
account_not_match | บัญชีไม่ตรงกัน | ตรวจสอบหมายเลขบัญชีที่ส่ง |
amount_not_match | จำนวนเงินไม่ตรงกัน | ตรวจสอบจำนวนเงินที่ส่ง |
Error Response พร้อมข้อมูล
สลิปซ้ำ
json
{
"status": 400,
"message": "duplicate_slip",
"data": {
"transRef": "2024011512345678",
"date": "2024-01-15T10:30:00+07:00",
"amount": {
"amount": 1000.00
},
"verifiedAt": "2024-01-15T10:35:00+07:00"
}
}Validation Error
json
{
"status": 400,
"message": "invalid_request",
"data": {
"errors": [
{ "field": "ref1", "message": "Required" },
{ "field": "amount", "message": "Must be positive number" }
]
}
}การจัดการ Error
JavaScript
javascript
try {
const slip = await verifySlip(payload);
// สำเร็จ
} catch (error) {
switch (error.message) {
case 'invalid_payload':
console.error('Payload ไม่ถูกต้อง');
break;
case 'slip_not_found':
console.error('ไม่พบสลิป');
break;
case 'quota_exceeded':
console.error('โควต้าหมด กรุณาเติมเงิน');
break;
case 'duplicate_slip':
console.error('สลิปนี้ถูกใช้แล้ว');
console.log('ข้อมูลเดิม:', error.data);
break;
default:
console.error('เกิดข้อผิดพลาด:', error.message);
}
}PHP
php
try {
$slip = verifySlip($payload);
// สำเร็จ
} catch (EasySlipException $e) {
switch ($e->getMessage()) {
case 'invalid_payload':
echo 'Payload ไม่ถูกต้อง';
break;
case 'slip_not_found':
echo 'ไม่พบสลิป';
break;
case 'quota_exceeded':
echo 'โควต้าหมด กรุณาเติมเงิน';
break;
case 'duplicate_slip':
echo 'สลิปนี้ถูกใช้แล้ว';
print_r($e->data);
break;
default:
echo 'เกิดข้อผิดพลาด: ' . $e->getMessage();
}
}Python
python
try:
slip = verify_slip(payload)
# สำเร็จ
except EasySlipException as e:
if e.message == 'invalid_payload':
print('Payload ไม่ถูกต้อง')
elif e.message == 'slip_not_found':
print('ไม่พบสลิป')
elif e.message == 'quota_exceeded':
print('โควต้าหมด กรุณาเติมเงิน')
elif e.message == 'duplicate_slip':
print('สลิปนี้ถูกใช้แล้ว')
print('ข้อมูลเดิม:', e.data)
else:
print(f'เกิดข้อผิดพลาด: {e.message}')