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

PayPal按钮与ApplePay共存异常:paypal.Buttons未定义及请求报错

解决PayPal集成中iOS端Buttons初始化失败及信用卡支付400错误问题

问题根源

同时加载带&components=applepay和不带该参数的PayPal SDK脚本,会导致全局paypal对象组件冲突;仅加载带applepay参数的脚本时,iOS端可能因缺少buttons组件的加载逻辑,引发TypeError: paypal.Buttons is not a function错误。

解决方案

  1. 统一加载包含所有所需组件的SDK脚本
    不要分开加载多个脚本,直接在src中指定所有需要的组件(buttons、card-fields、applepay),确保所有功能模块一次性加载完成:

    <script src="https://www.paypal.com/sdk/js?client-id=你的客户端ID&components=buttons,card-fields,applepay"></script>
    
  2. 确保SDK加载完成后再初始化组件
    iOS端脚本加载可能存在延迟,需等待SDK加载完成后再调用paypal.Buttons(),可通过paypal.LoadingPromise实现:

    paypal.LoadingPromise.then(() => {
      // 初始化PayPal和信用卡按钮
      paypal.Buttons(buttonsConfig).render('myDivId');
      // 同时执行ApplePay相关逻辑
      // 比如获取token并调用confirmOrder的代码
    }).catch(error => {
      console.error('PayPal SDK加载失败:', error);
    });
    
  3. 排查信用卡支付400错误

    • 确认PayPal后台已开启信用卡支付权限,客户端ID配置正确
    • 检查createOrder中传递的订单参数(金额、货币代码等)格式符合PayPal要求
    • 确保card-fields的初始化逻辑与Buttons组件使用同一SDK实例,避免参数冲突

验证步骤

  • 在iOS设备上测试PayPal按钮、信用卡按钮的渲染及支付流程
  • 在Mac端验证ApplePay功能是否正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 08:49:52