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

Node.js中如何将购物车商品填入paypal-rest-sdk的商品配置项

首先明确:不能直接在item_list对象内部写循环处理,JavaScript对象字面量语法不支持直接嵌入循环语句,你需要先把购物车的商品数据转换为符合PayPal要求的格式,再传入配置中,具体实现如下:

步骤1:转换购物车商品为PayPal要求的格式

你的cart.items是键值对结构,先把它的值提取出来遍历,转换为符合要求的数组:

const paypalItems = Object.values(cart.items).map(cartItem => {
  return {
    // 商品名称、SKU按需替换为你实际商品对象里的对应字段
    name: cartItem.item.name,
    sku: cartItem.item.id || cartItem.item.sku,
    // 价格必须转成保留两位小数的字符串,和下方币种保持一致
    price: cartItem.price.toFixed(2),
    currency: "USD",
    quantity: cartItem.qty
  }
})

如果你的cart.generateArray()方法已经是返回购物车商品数组的工具方法,也可以直接调用它替代Object.values(cart.items),减少重复逻辑。

步骤2:将处理好的数组填入PayPal配置

同时直接复用购物车已经计算好的总金额,避免手动计算出现误差导致PayPal校验失败:

const create_payment_json = {
    "intent": "sale",
    "payer": {
        "payment_method": "paypal"
    },
    "redirect_urls": {
        "return_url": "http://localhost:3000/success",
        "cancel_url": "http://localhost:3000/failed"
    },
    "transactions": [{
        "item_list": {
            "items": paypalItems // 直接传入提前处理好的商品数组
        },
        "amount": {
            "currency": "USD",
            "total": cart.totalPrice.toFixed(2) // 复用购物车总金额,转两位小数字符串
        },
        "description": "自定义支付描述"
    }]
};

注意事项

  • PayPal会严格校验所有商品金额的总和与amount.total的数值是否完全一致,直接复用购物车已经计算完成的totalPrice可以避免金额不匹配的报错。
  • 币种参数必须全局统一,商品的currency和amount.currency要完全相同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:54:08