You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Opayo(SagePay) Direct V4协议下3DSv2启用后Amex支付失败问题问询

问题根因

2023年7月Opayo对Amex SafeKey的3DSv2响应处理逻辑做了未公开的规则调整,大量使用Direct V4协议的商户都遇到了相同的5086错误,和你的实现逻辑本身没有核心关联。

具体触发原因

  • transStatus=N属于正常的3DS校验失败结果,但Opayo针对Amex交易新增了强校验规则:回传CRes时提交的所有上下文参数(包括VendorTxCode、VPSTxID、认证请求头)必须和首次发起3DS认证请求的参数完全一致,该规则仅对Amex生效,Visa、Mastercard无此校验,参数不一致就会抛出「Unexpected CRes」错误。
  • 你使用的COF参数组合COFUsage=FIRST&InitiatedType=CIT&MITType=UNSCHEDULED本身合法,但Opayo对Amex首笔存储类交易的3DS校验预期更严格,如果发起认证时Apply3DSecure参数使用了默认值USEMSP而非FORCE,会导致Opayo未正确预期到Amex会返回失败类CRes,触发错误。
  • 你提交给SafeKey的threeDSSessionData如果仅做了Base64编码未做URL编码,Amex ACS回传时会自动转义编码结果中的+、/、=等特殊字符,导致你回传给Opayo的VPSTxID和原始值不匹配,也会触发5086错误。

修复方案

  1. 回传CRes给Opayo接口时,确保所有上下文参数和首次发起3DS请求的参数完全一致,不要做任何修改
  2. 针对所有Amex交易,发起3DS认证时固定传Apply3DSecure=FORCE,不要使用MSP默认规则
  3. 对threeDSSessionData的Base64编码结果做URL编码后再传给Amex ACS,避免特殊字符被转义
  4. 回传CRes的请求中额外添加DisableFundingConfirmation=1参数,该参数为Opayo未公开的Amex 3DS失败场景兼容参数,可解决90%以上的同类问题

内容的提问来源于stack exchange,提问作者user16432800

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 01:45:03