错误处理
错误处理
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并不总是代表成功 — 你必须始终检查 JSON body 中的status字段。
HTTP Status Codes
| Code | 含义 |
|---|---|
200 |
服务器已接收请求 — 请再次查看 body 中的 status |
400 |
提交的数据格式不正确 |
401 |
API Key 不正确或未提供 |
403 |
无权访问该资源 |
404 |
未找到请求的资源 |
422 |
来源 IP 已被该商户列入黑名单 — 详情请查看 body 中的 description |
500 |
服务器内部错误 |
Response Body 中的 Status Codes
| 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 |
错误处理示例
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
}
}