การจัดการ Error
การจัดการ Error
รูปแบบ Response
API ตอบกลับในรูปแบบเดียวกันเสมอ ทั้งกรณีสำเร็จและล้มเหลว:
{
"status": "OK",
"description": "Success",
"data": { ... }
}
{
"status": "INVALID_PAYMENT_AMOUNT",
"description": "Request amount [0] must be greater than 0.00"
}
สำคัญ: HTTP status code
200ไม่ได้แปลว่าสำเร็จเสมอไป — ต้องตรวจstatusใน JSON body ด้วยเสมอ
HTTP Status Codes
| Code | ความหมาย |
|---|---|
200 |
Server รับ request แล้ว — ดู status ใน body อีกครั้ง |
400 |
ข้อมูลที่ส่งมาไม่ถูกต้อง |
401 |
API Key ไม่ถูกต้องหรือไม่ได้ส่งมา |
403 |
ไม่มีสิทธิ์เข้าถึง resource นี้ |
404 |
ไม่พบ resource ที่ร้องขอ |
422 |
IP ต้นทางติด blacklist ของ merchant นี้ — ดู description ใน body สำหรับรายละเอียด |
500 |
ข้อผิดพลาดภายใน server |
Status Codes ใน Response Body
| Status | คำอธิบาย |
|---|---|
OK |
สำเร็จ |
REF_ID_MISSING |
ไม่ได้ส่ง RefId มา |
INVALID_PAYMENT_AMOUNT |
RequestedAmount ต้องมากกว่า 0 |
ERROR_NO_PAYIN_ACCOUNT |
ไม่มีบัญชีรับเงินที่ตั้งค่าไว้สำหรับ Merchant นี้ |
INVALID_API_KEY |
API Key ไม่ถูกต้องหรือถูกปิดใช้งาน |
MERCHANT_NOT_FOUND |
ไม่พบ Merchant ID ที่ระบุ |
UUID_INVALID |
รูปแบบ UUID ไม่ถูกต้อง |
NOTFOUND |
ไม่พบ Payment Request ที่ระบุ |
ตัวอย่างการจัดการ Error
Python
import requests
def create_payment(org_id, merchant_id, api_key, ref_id, amount):
url = f"https://api.please-payment.com/api/PaymentRequest/org/{org_id}/action/SubmitPayInRequest/{merchant_id}"
try:
response = requests.post(
url,
auth=("api", api_key),
json={"RefId": ref_id, "RequestedAmount": amount},
timeout=10
)
response.raise_for_status()
result = response.json()
if result.get("status") != "OK":
print(f"API Error [{result['status']}]: {result.get('description')}")
return None
return result["data"]
except requests.exceptions.Timeout:
print("Request timed out — กรุณาลองใหม่")
return None
except requests.exceptions.RequestException as e:
print(f"Network error: {e}")
return None
JavaScript (fetch)
async function createPayment(orgId, merchantId, apiKey, refId, amount) {
const credentials = btoa(`api:${apiKey}`)
const url = `https://api.please-payment.com/api/PaymentRequest/org/${orgId}/action/SubmitPayInRequest/${merchantId}`
try {
const res = await fetch(url, {
method: 'POST',
headers: {
'Authorization': `Basic ${credentials}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ RefId: refId, RequestedAmount: amount }),
})
const data = await res.json()
if (data.status !== 'OK') {
console.error(`API Error [${data.status}]: ${data.description}`)
return null
}
return data.data
} catch (err) {
console.error('Network error:', err)
return null
}
}