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

如何在已实现的Cybersource Silent Order API中添加3D Secure功能?

Cybersource Silent Order API 3D Secure 实现实操指引

我之前也踩过这个坑——Cybersource官方文档确实把3D Secure的大部分说明都放在了Simple Order API里,对Silent Order API的支持描述得非常零散,甚至有些地方直接没提。不过好在我折腾出来一套可行的方案,亲测在测试环境能正常跑,分享给你:

  • 先确认账户权限
    别上来就改代码!先联系Cybersource的商户支持团队,确认你的账户已经开通了Silent Order API的3D Secure功能。默认情况下这个权限是不开启的,很多人卡在这里都没意识到。

  • 修改请求参数,加入3D Secure字段
    在你现有的Silent Order API请求体里,给paymentInformation节点添加threeDSecure子节点,关键参数如下:

    "paymentInformation": {
      "card": {
        // 你原本的卡信息字段
      },
      "threeDSecure": {
        "authenticationIndicator": "01", // 01=需要身份验证,02=尝试验证但不强制,按需选择
        "challengeIndicator": "01" // 01=偏好触发挑战,02=无偏好,03=禁止挑战
      }
    }
    

    另外一定要确保请求里包含完整的持卡人账单地址(姓名、地址、邮编、电话这些),3D Secure的风险评估依赖这些数据,缺了可能会导致验证失败。

  • 处理3D Secure验证跳转
    如果Cybersource判定需要3D Secure验证,返回的响应里会多出threeDSecure节点,包含acsUrl、pareq、md这三个核心参数。你需要把这些参数组装成一个自动提交的HTML表单,引导用户跳转到银行的验证页面:

    <form id="3ds-form" method="POST" action="【这里填acsUrl的值】">
      <input type="hidden" name="PaReq" value="【这里填pareq的值】">
      <input type="hidden" name="MD" value="【这里填md的值】">
      <input type="hidden" name="TermUrl" value="【你的回调URL,提前在商户后台配置好】">
    </form>
    <script>document.getElementById('3ds-form').submit();</script>
    
  • 验证结果并完成订单
    用户完成3D Secure验证后,银行的ACS会把结果回调到你配置的TermUrl,回调参数里包含PaRes和MD。你需要拿着这两个参数,加上原订单的标识,再次调用Silent Order API的验证接口(具体端点可以咨询Cybersource支持,一般是/pts/v2/payments/validate-three-d-secure),确认验证通过后再继续完成后续的支付流程。

测试小技巧:用Cybersource提供的测试卡(比如4000000000000002)可以模拟不同的3D Secure场景,比如无需挑战、需要密码验证等,方便你测试各种分支流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:42:16