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

Apple Pay Web集成报错:countryCode必填且需为DOMString类型

解决Apple Pay Web支付中countryCode类型错误的问题

可能的原因及排查方向

  • JSON序列化的类型偏差:Java的String类型字段,若内容是纯数字(比如"840"),部分后端序列化框架(如Jackson)可能默认将其转为Number类型输出,导致前端接收后字段类型不符合ApplePaySession要求的DOMString。
  • 前端自动类型转换:Ajax返回的JSON数据中,纯数字格式的字符串会被JS自动解析为Number,而硬编码的字符串字面量类型是String,两者表面内容一致但底层类型不匹配。

具体解决方案

  1. 后端强制字符串序列化

    • 在Java实体类的countryCode字段上添加序列化注解,确保无论内容是什么,都输出为JSON字符串:
      @JsonProperty("countryCode")
      @JsonFormat(shape = JsonFormat.Shape.STRING)
      private String countryCode;
      
    • 若使用其他序列化框架,检查全局配置,禁用纯数字字符串自动转数字的行为。
  2. 前端显式转换字段类型

    • 在创建ApplePaySession前,手动将countryCode转为字符串,确保类型匹配:
      // var2为后端返回的请求体对象
      var2.countryCode = String(var2.countryCode);
      const session = new ApplePaySession(3, var2);
      
  3. 提前验证字段类型

    • 在报错代码前打印字段类型,确认问题根源:
      console.log(typeof var2.countryCode); // 对比硬编码时的输出,若为number则说明类型不匹配
      

额外注意

除countryCode外,ApplePayPaymentRequest中的其他必填字段(如currencyCode)也可能存在类似类型问题,建议一并检查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:14:55