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

NAB 3DS集成异常:请求仅发送cardholderInfo参数

针对NAB 3DS集成中onRequestInputData回调参数缺失的排查方案
  • 严格核对参数命名
    NAB的3DS SDK对参数名的大小写、拼写有严格要求,哪怕是微小的差异(比如accountdata写成accountData)都会导致参数被忽略。请对照NAB 3DS集成指南第12页的参数定义,逐字核对accountData、billingAddress及其嵌套字段的命名,确保完全一致。

  • 确认返回值类型为原生对象
    禁止返回字符串化后的JSON,SDK仅能识别原生JS对象。检查你的回调代码:

    // 错误写法:返回JSON字符串
    function onRequestInputData() {
      return JSON.stringify({
        cardholderInfo: {},
        accountData: {},
        billingAddress: {}
      });
    }
    
    // 正确写法:返回原生JS对象
    function onRequestInputData() {
      return {
        cardholderInfo: {},
        accountData: {},
        billingAddress: {}
      };
    }
    
  • 排查参数值的合法性
    SDK会自动过滤不符合格式要求的参数:

    • 检查accountData和billingAddress的必填字段是否存在且非空(比如accountData.accountId、billingAddress.countryCode);
    • 验证字段格式是否符合要求(比如countryCode必须是两位大写字母,postcode需符合澳大利亚邮编格式)。
      若某参数的字段存在非法值,整个参数会被SDK丢弃,仅保留格式正确的cardholderInfo。
  • 确保回调同步返回数据
    回调函数必须同步返回参数对象,不能包含异步操作(如fetch请求、setTimeout)。如果需要从后端获取用户数据,应先完成数据获取,再调用initAndStartThreeDS方法。

  • 用最简合法数据测试错误码180
    错误码180表示3DS请求数据不完整,建议先使用最简合法参数结构测试:

    function onRequestInputData() {
      return {
        cardholderInfo: { firstName: "Test", lastName: "Demo" },
        accountData: { accountId: "NAB_TEST_001" },
        billingAddress: { 
          street: "1 Demo Street", 
          city: "Melbourne", 
          postcode: "3000", 
          countryCode: "AU" 
        }
      };
    }
    

    确认最简数据能正常携带三个参数后,再逐步添加业务字段排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 04:21:17