Skip to content

รหัส Error

รายการรหัส Error ทั้งหมดที่ EasySlip API ส่งกลับมา

เช็คด้วย error.code ไม่ใช่ข้อความ

สำหรับ v2 ให้ใช้ error.code (เช่น SLIP_NOT_FOUND) เป็น contract ที่คงที่ — เขียน logic ให้ match กับค่านี้ ส่วน error.message เป็นข้อความสำหรับให้คนอ่านและอาจเปลี่ยนได้โดยไม่แจ้งล่วงหน้า คอลัมน์ คำอธิบาย ด้านล่างเป็นคำอธิบายของแต่ละรหัส ไม่ใช่ error.message จริงที่ API ส่งกลับมา (สำหรับ v1 ฟิลด์ message จะเป็นตัวรหัสเอง)

รหัส Error ของ API v2

Error การยืนยันตัวตน (401)

รหัสคำอธิบายสาเหตุวิธีแก้ไข
MISSING_API_KEYAuthorization header is requiredไม่มี Authorization headerเพิ่ม header Authorization: Bearer YOUR_API_KEY
INVALID_API_KEYThe provided API key is invalidAPI Key ไม่มีอยู่หรือรูปแบบผิดตรวจสอบ API Key ให้ถูกต้อง

Error สิทธิ์การเข้าถึง (403)

รหัสคำอธิบายสาเหตุวิธีแก้ไข
BRANCH_INACTIVEThis API branch has been deactivatedBranch ถูกปิดใช้งานเปิดใช้งานใหม่ใน Developer Portal
SERVICE_BANNEDService has been bannedละเมิดเงื่อนไขการใช้งานติดต่อฝ่ายสนับสนุน
SERVICE_EXPIREDService has expiredแพ็กเกจ/สมาชิกหมดอายุต่ออายุแพ็กเกจ
IP_NOT_ALLOWEDYour IP address is not in the allowed listIP ไม่อยู่ใน Whitelistเพิ่ม IP เข้า Whitelist
QUOTA_EXCEEDEDYour API quota has been exceededใช้โควต้ารายเดือนหมดอัปเกรดแพ็กเกจหรือรอรีเซ็ต
USER_BANNEDUser has been bannedบัญชีผู้ใช้ละเมิดเงื่อนไขติดต่อฝ่ายสนับสนุน

Error การตรวจสอบข้อมูล (400)

รหัสคำอธิบายสาเหตุวิธีแก้ไข
VALIDATION_ERRORValidation failedRequest Body ไม่ถูกต้องตรวจสอบรูปแบบ Request
URL_PROTOCOL_NOT_ALLOWEDOnly HTTP/HTTPS allowedURL ไม่ใช่ HTTPใช้ URL แบบ HTTP หรือ HTTPS
URL_INVALID_IP_RANGEURL points to restricted IPIP ภายใน/ส่วนตัวใช้ URL สาธารณะ
IMAGE_URL_UNREACHABLEUnable to access URLเข้าถึง URL ไม่ได้ตรวจสอบว่า URL เข้าถึงได้จากภายนอก
IMAGE_SIZE_TOO_LARGEImage exceeds 4MB limitไฟล์ใหญ่เกินไปลดขนาดรูปภาพ
INVALID_IMAGE_FORMATFile is not a valid imageไฟล์เสียหรือรูปแบบผิดใช้ JPEG, PNG, GIF, WebP
INVALID_BANK_CODEThe provided bankCode is not supportedbankCode ไม่อยู่ในรายชื่อธนาคารใช้รหัสจาก GET /banks
INVALID_EXTRA_VERIFYextraVerify is not valid for this bankค่าที่ส่งมาไม่อยู่ในรายการตัวเลือกของธนาคารใช้ค่า extraVerify ของธนาคารจาก GET /banks
INVALID_EXTRA_VERIFYextraVerify is required for this bankธนาคารต้องการตัวเลือกแต่ไม่ได้ส่งมา (เช่น ตอนเปลี่ยน bankCode)ส่งค่า extraVerify ที่ถูกต้องจาก GET /banks

Error ไม่พบข้อมูล (404)

รหัสคำอธิบายสาเหตุวิธีแก้ไข
SLIP_NOT_FOUNDSlip not found or invalidสลิปไม่ถูกต้องหรือไม่มี QRตรวจสอบความถูกต้องของสลิป
SLIP_PENDINGBangkok Bank slip is pendingสลิปโอนภายใน 5 นาทีรอสักครู่แล้วลองใหม่
BANK_ACCOUNT_NOT_FOUNDBank account not foundไม่พบบัญชี หรือบัญชีไม่ได้เชื่อมโยงกับ Branch ของคุณตรวจสอบ id บัญชีและการเชื่อมโยง Branch
NOT_FOUNDResource not foundEndpoint ผิดตรวจสอบ URL ของ Endpoint

Error ข้อมูลซ้ำ (409)

รหัสคำอธิบายสาเหตุวิธีแก้ไข
BANK_ACCOUNT_DUPLICATEAn active account with the same bank code and number already existsbankCode + bankNumber ซ้ำใน Service ของคุณใช้บัญชีเดิมหรือใช้ข้อมูลอื่น

Error เกิน Rate Limit (429)

รหัสคำอธิบายสาเหตุวิธีแก้ไข
RATE_LIMIT_EXCEEDEDToo many requestsเรียกตรวจสอบสลิปถี่เกินไปรอตามจำนวนวินาทีใน Retry-After แล้วลองใหม่ — ดู Rate Limits

Error ของเซิร์ฟเวอร์ (500)

รหัสคำอธิบายสาเหตุวิธีแก้ไข
API_SERVER_ERRORService temporarily unavailableข้อผิดพลาดชั่วคราวในการประมวลผลลองใหม่ภายหลัง
INTERNAL_SERVER_ERRORInternal server errorข้อผิดพลาดที่ไม่คาดคิดติดต่อฝ่ายสนับสนุน

รหัส Error ของ API v1

Error การยืนยันตัวตน (401)

รหัสคำอธิบายสาเหตุวิธีแก้ไข
unauthorizedUnauthorizedAPI Key ไม่ถูกต้องหรือไม่มีตรวจสอบ Authorization header

Error สิทธิ์การเข้าถึง (403)

รหัสคำอธิบายสาเหตุวิธีแก้ไข
access_deniedAccess deniedIP ไม่อยู่ใน Whitelistเพิ่ม IP เข้า Whitelist
application_expiredApplication expiredสมาชิกหมดอายุต่ออายุสมาชิก
application_deactivatedApplication deactivatedแอปถูกปิดใช้งานเปิดใช้งานใหม่ใน Portal
quota_exceededQuota exceededใช้โควต้ารายเดือนหมดอัปเกรดแพ็กเกจ

Error การตรวจสอบข้อมูล (400)

รหัสคำอธิบายสาเหตุวิธีแก้ไข
invalid_payloadInvalid payloadPayload QR ผิดรูปแบบตรวจสอบรูปแบบ Payload
invalid_check_duplicateInvalid checkDuplicateรูปแบบ boolean ผิดใช้ true หรือ false
invalid_urlInvalid URLURL ผิดรูปแบบหรือไม่ปลอดภัยตรวจสอบรูปแบบ URL
invalid_imageInvalid imageไม่ใช่รูปภาพที่ถูกต้องใช้รูปแบบที่รองรับ
image_size_too_largeImage too largeเกิน 4MBลดขนาดรูปภาพ
invalid_requestInvalid requestSchema ไม่ผ่านการตรวจสอบตรวจสอบ Request Body
duplicate_slipDuplicate slipตรวจสอบไปแล้วดูรายละเอียดใน data

Error ไม่พบข้อมูล (404)

รหัสคำอธิบายสาเหตุวิธีแก้ไข
slip_not_foundSlip not foundสลิปไม่ถูกต้องหรือปลอมตรวจสอบความถูกต้องของสลิป
slip_pendingBangkok Bank slip is pendingสลิปโอนภายใน 5 นาทีรอสักครู่แล้วลองใหม่
qrcode_not_foundQR code not foundไม่มี QR ในรูปใช้รูปที่ชัดเจนขึ้น
not_foundNot foundEndpoint ผิดตรวจสอบ URL

Error เกิน Rate Limit (429)

รหัสคำอธิบายสาเหตุวิธีแก้ไข
rate_limit_exceededToo many requestsเรียกตรวจสอบสลิปถี่เกินไปรอตามจำนวนวินาทีใน Retry-After แล้วลองใหม่ — ดู Rate Limits

Error ของเซิร์ฟเวอร์ (500)

รหัสคำอธิบายสาเหตุวิธีแก้ไข
server_errorServer errorข้อผิดพลาดภายในลองใหม่ภายหลัง
api_server_errorService temporarily unavailableข้อผิดพลาดชั่วคราวในการประมวลผลลองใหม่ภายหลัง

รูปแบบ Error Response

API v2

json
{
  "success": false,
  "error": {
    "code": "SLIP_NOT_FOUND",
    "message": "The slip could not be found or is invalid"
  }
}

ข้อความของ VALIDATION_ERROR

สำหรับ VALIDATION_ERROR ค่า message จะบอกว่าฟิลด์ไหนไม่ผ่านและเพราะอะไร เช่น "bankNumber: Too small: expected string to have >=1 characters" หากมีหลายฟิลด์ที่ไม่ผ่าน จะถูกรวมเป็นข้อความเดียวคั่นด้วย ; ทั้งนี้ code จะเป็น VALIDATION_ERROR เสมอ (ไม่มีฟิลด์ details แยกต่างหาก — ให้ match ที่ code แล้วแสดง message ให้ผู้ใช้)

API v1

json
{
  "status": 404,
  "message": "slip_not_found"
}

สลิปซ้ำ (v1)

ส่งข้อมูลสลิปกลับมาพร้อมกับ Error:

json
{
  "status": 400,
  "message": "duplicate_slip",
  "data": {
    "payload": "...",
    "transRef": "...",
    "amount": { ... }
  }
}

แนวทางการจัดการ Error ที่ดี

1. ตรวจสอบ Success/Status ก่อน

javascript
// v2
if (!result.success) {
  console.error(`Error [${result.error.code}]: ${result.error.message}`);
}

// v1
if (result.status !== 200) {
  console.error(`Error: ${result.message}`);
}

2. จัดการ Error เฉพาะกรณี

javascript
switch (result.error.code) {
  case 'QUOTA_EXCEEDED':
    // แจ้งเตือนผู้ใช้หรือหยุดการทำงานชั่วคราว
    break;
  case 'SLIP_NOT_FOUND':
    // ให้ผู้ใช้ลองใหม่
    break;
  case 'API_SERVER_ERROR':
    // ลองใหม่แบบ exponential backoff
    break;
}

3. ใส่ Retry Logic

javascript
async function verifyWithRetry(payload, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    const result = await verify(payload);

    if (result.success) return result;

    if (result.error.code === 'API_SERVER_ERROR') {
      await sleep(1000 * (i + 1)); // Exponential backoff
      continue;
    }

    throw new Error(result.error.message);
  }
}

4. บันทึก Error เพื่อ Debug

javascript
if (!result.success) {
  console.error({
    timestamp: new Date().toISOString(),
    errorCode: result.error.code,
    errorMessage: result.error.message,
    payload: payload.substring(0, 20) + '...'
  });
}

ที่เกี่ยวข้อง

Bank Slip Verification API for Thai Banking