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

PayPal Buttons传递items参数无效硬编码可正常运行问题求助

问题核心错误点

  • 第一个错误:PayPal JS SDK的purchase_units[].items参数要求传入原生JavaScript对象数组,你给它传了JSON.stringify(itemsArray)输出的字符串,类型不匹配自然无法正常解析。你手动把控制台输出的字符串写成对象字面量,相当于又把字符串转回了JS对象,所以才能正常运行。
  • 第二个隐藏错误:儿童款总价计算逻辑错误,代码里写的是ppvalue+= ppsml * 24.95,应该用ppcld而不是ppsml,这会导致订单总价和商品总金额不匹配,就算第一个问题修复后也会触发PayPal的金额校验错误。
  • 第三个隐藏错误:transaction.payer是对象不是数组,transaction.payer[0].email_address会抛出未定义错误,应该直接取值transaction.payer.email_address。

修正方案

  1. 首先修改儿童款总价计算逻辑:
// 把原儿童款判断里的ppvalue计算替换为这行
ppvalue+= ppcld * 24.95
  1. 修正PayPal配置的参数传递,直接传入itemsArray本身,不需要序列化:
paypal.Buttons({
    createOrder: function(data, actions) {
      return actions.order.create({
         "purchase_units": [{
            "amount": {
              "currency_code": "AUD",
              "value": ppvalue.toFixed(2),
              "breakdown": {
                "item_total": {
                  "currency_code": "AUD",
                  "value": ppvalue.toFixed(2)
                }
              }
            },
            // 直接传原生数组,不要转JSON字符串
            "items": itemsArray
          }]
      });
    },
    
    onApprove: function(data, actions) {
      return actions.order.capture().then(function(orderData) {
        console.log('Capture result', orderData, JSON.stringify(orderData, null, 2));
        let transaction = orderData.purchase_units[0].payments.captures[0];
        // 修正邮箱取值逻辑,payer是对象不是数组
        let email = transaction.payer.email_address;
        console.log(email);
        alert('Transaction '+ transaction.status + ': ' + transaction.id + '\n\nSee console for all available details');
        
        var element = document.getElementById('paypal-button-container');
        element.innerHTML = '';
        element.innerHTML = '<h3>Thank you for your payment!</h3>';
        element.innerHTML+= '<p>Paypal should be sending you an receipt with details of your order to '+email+'.</p>';
      });
    }
}).render('#paypal-button-container');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:12:02