引用错误
全部人员 API 错误返回 a JSON 带有 errors 数组。每个元素都携带
a detail 字符串和一些端点上的机器可读 code验证
失败列出每个字段的一个元素 。
规范定义是: §10 协议规格.
作为成功而出现的错误
追索、限制和反欺诈不拒绝支付 HTTP 错误。它们创建
交易并标记它 rejected,所以反应是 201 Created 与一个完全普通的
机构 :
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "rejected",
"error_description": "terminal not found"
}
代码只检查状态代码 记录未付订单的支付。 读取 status 每页
反应。 rejected 和 failed 意思是没有转移钱; charged 是唯一的解决结果。
错误响应格式
{
"errors": [
{ "code": "flow_not_continuable", "detail": "status_poll" }
]
}
几个结束点在此格式之前用QQ"error"回答:"......","message": 接受两种形状
HTTP 状态代码
| 代码 | 含义 | 共同事业 |
|---|---|---|
400 | 错误请求 | 格式错误 JSON,缺少所需字段——在某些端点上,缺少 x-organization-id 页眉 |
401 | 未经授权 | 证书遗失或无效 |
处理 400 和 401 当它们不带字段指针时同样如此: 都意味着请求是
没有认证,而你得到哪一个取决于终点。
| 403 | 禁止 | 有效凭据但不允许使用此资源 |
| 404 | 未找到 | 与给定的交易或资源 ID 不存在 |
| 409 | 冲突 | 交易不能按要求从当前状态移动 |
| 422 | 无法处理的实体 | 验证失败—— 1 errors 每个字段的元素 |
| 429 | 请求过多 | 超过的费率限额 |
| 500 | 内部服务器错误 | 平台错误——与交易的联系支持 ID |
交易错误代码
这些都出现在 error_description 在网络记录有效载荷和交易情况反应中:
| 代码 | 含义 | 建议采取的行动 |
|---|---|---|
insufficient_funds | 贺卡下降:资金不足 | 叫付款人用另一张卡 |
card_declined | 发卡人拒绝发卡 | 叫付款人联系银行 |
expired_card | 纸牌过期日期已过 | 要求付款人更新卡片细节 |
invalid_card_number | 纸牌号码无效 | 检查牌号格式 |
invalid_cvv | CVV 错误 | 请付款人重新入境 CVV |
do_not_honour | 银行普遍衰退 | 叫付款人联系银行 |
lost_card | 报失的卡片 | 不重试 |
stolen_card | 举报的卡片被盗 | 不重试 |
restricted_card | 此交易不能使用卡片 | 叫付款人用另一张卡 |
transaction_limit_exceeded | 超过贺卡/账户限额的数额 | 要求付款人使用另一种付款方法 |
3ds_failed | 3D 安全认证失败 | 要求付款人重试或使用另一张卡片 |
3ds_timeout | 3D Secure 验证超时 | 重试交易 |
provider_unavailable | 暂时无法提供付款服务 | 延迟后重试 |
routing_failed | 未找到此交易的提供者 | 联系您的平台操作员 |
duplicate_txid | txid 已存在此终端 | 使用一个独特的 txid 每笔交易 |
currency_not_supported | 此终端不支持的货币 | 检查终端配置 |
amount_too_low | 该提供者低于最低数额 | 增加交易额 |
amount_too_high | 该提供者超出上限的数额 | 拆分为较小的交易 |
antifraud_reject | 受到反欺诈规则的阻碍 | 联系您的平台操作员 |
校验错误( E)422)
校验错误列表 1 errors 每个问题,每个问题都有 detail
命名字段的字符串 :
{
"errors": [
{ "detail": "amount: can't be blank" },
{ "detail": "currency: is invalid" }
]
}
处理代码中的错误
重试策略
| 错误类型 | 重试? | 说明 |
|---|---|---|
provider_unavailable | 曰对. | 单单 30–60 秒, 最大数 3 复试 |
3ds_timeout | 曰对. | 立即重试一次 |
insufficient_funds | ❌ No | 显示替代支付方法 |
card_declined | ❌ No | 显示替代支付方法 |
lost_card, stolen_card | 永远不要 | 不重试或重现 |
duplicate_txid | ❌ No | 生成新的独有性 txid |
routing_failed | ❌ No | 联系您的平台操作员 |
实例错误处理( Python)
import requests
response = requests.post(
'https://4pay.online/api/v1/transactions',
headers={
'x-api-key': 'YOUR_API_KEY',
'x-organization-id': '00000000-1111-2222-3333-444444444444',
'Content-Type': 'application/json',
},
json={'params': {'type': 'payment', 'amount': '1000', 'currency': 'USD',
'txid': 'order-1', 'env': 'prod'}}
)
if response.status_code == 422:
for err in response.json().get('errors', []):
print(err.get('detail'))
elif response.status_code == 409:
print("The transaction cannot move as requested from its current state")
elif response.status_code >= 500:
print("Platform error — retry later or contact support")
else:
tx = response.json()
print(f"Transaction created: {tx['id']}")
联系支助
长期错误或意外 500 答复,联系人:
- 电子邮件 : 支助@4pay.online
- 包含交易
id(UUID用于更快的诊断