支付应用 API 现在为被拒绝的支付会话提供了更细粒度的拒绝原因代码,在 PaymentSessionStateRejectedReason 枚举中添加了多个新的拒绝代码以及一个新的 source 字段,使支付应用能够以更标准化、可操作的方式向商户传达支付被拒的原因。
新的拒绝原因代码
以下错误代码在现有拒绝原因集合的基础上,提供了更具体的拒绝信息:
| 错误代码 | 描述 |
|---|---|
| AMOUNT_TOO_LARGE | 金额超过了允许的最大金额。 |
| AMOUNT_TOO_SMALL | 金额低于允许的最小金额。 |
| AUTHENTICATION_REQUIRED | 支付需要 3D Secure 身份验证,但尝试进行支付时未进行身份验证。 |
| CALL_ISSUER | 发卡行拒绝了该支付。买家应联系其发卡行以获取更多信息。 |
| CANCELLED_PAYMENT | 支付已取消。 |
| CARD_TESTING | 由于怀疑存在卡片测试行为,支付被阻止。 |
| DO_NOT_HONOR | 发卡行拒绝了支付,但未提供具体原因。 |
| FRAUD_SUSPECTED | 由于怀疑存在欺诈活动,支付被拒绝。 |
| HIGH_RISK_FRAUD_SUSPECTED | 由于存在高风险欺诈指标,支付被拒绝。支付工具可能已被报告为丢失或被盗。 |
| INSTRUMENT_DECLINED | 支付工具被拒绝。 |
| INSUFFICIENT_FUNDS | 支付方式余额不足,无法完成支付。 |
| INVALID_AMOUNT | 支付金额无效或计算错误。 |
| INVALID_CURRENCY | 不支持该货币。 |
| INVALID_PAYMENT_METHOD | 支付方式或其关联账户无效或不存在。 |
| INVALID_PURCHASE_TYPE | 此支付方式不支持所请求的支付类型。 |
| INVALID_REQUEST | 支付请求缺少必需参数或包含无效值。 |
| MERCHANT_ACCOUNT_ERROR | 由于商户账户问题,无法处理支付。 |
| MERCHANT_RULE | 因商户自定义支付风险规则,支付被阻止。 |
| PAYMENT_METHOD_UNSUPPORTED | 不支持该支付方式。 |
| PICK_UP_CARD | 该卡不能用于此支付。持卡人可能已将其报告为丢失或被盗。 |
| RETRY_DECLINED | 支付重试尝试被拒绝。 |
| TRANSACTION_LIMIT_EXCEEDED | 支付工具已超过处理频率限制。 |
新的拒绝来源
在 PaymentSessionRejectionReasonInput 输入和 PaymentSessionStateRejected 类型中都添加了一个新的 source 字段,该字段接受 PaymentSessionStateRejectedSource 枚举值以指示哪个实体拒绝了交易:
- NETWORK:支付网络或发卡行拒绝了支付。
- PROVIDER:提供商拒绝了支付。
弃用
RISKY 拒绝原因现已弃用,如果您的应用在调用 paymentSessionReject 时当前传递了 RISKY,请更新您的代码以改用 FRAUD_SUSPECTED。
示例
在您的 paymentSessionReject 突变中传递新的拒绝原因和来源:
mutation PaymentSessionReject($id: ID!, $reason: PaymentSessionRejectionReasonInput!) { paymentSessionReject(id: $id, reason: $reason) { paymentSession { id state { ... on PaymentSessionStateRejected { reason source } } } userErrors { field message } } }带变量:
{ "id": "gid://shopify/PaymentSession/1", "reason": { "code": "INSUFFICIENT_FUNDS", "source": "NETWORK" } }
