Node.js Stripe,如何在结帐会话中包含多个产品?

Node.js Stripe,如何在结帐会话中包含多个产品?,node.js,express,stripe-payments,Node.js,Express,Stripe Payments,我是条带API的新手,我正在尝试为我的电子商务站点实现。我希望客户能够购买最多6个项目,我希望这6个项目的功能在结帐页面 提到line_items是“客户正在购买的项目列表”,所以对于每个产品,line_items数组中有6个对象;但是,stripe.sessions.create()不会执行,也不会加载签出页面。如果除去第_行项目中除1个之外的所有对象,则会话将工作,页面将加载 下面是我处理创建签出会话请求的后端。感谢您的帮助 app.post('/create session',异步(re

我是条带API的新手,我正在尝试为我的电子商务站点实现。我希望客户能够购买最多6个项目,我希望这6个项目的功能在结帐页面

提到line_items是“客户正在购买的项目列表”,所以对于每个产品,line_items数组中有6个对象;但是,stripe.sessions.create()不会执行,也不会加载签出页面。如果除去第_行项目中除1个之外的所有对象,则会话将工作,页面将加载

下面是我处理创建签出会话请求的后端。感谢您的帮助

app.post('/create session',异步(req,res)=>{
const你的域名http://localhost:3000/Home';
const session=wait stripe.checkout.sessions.create({
付款方式类型:[“卡”],
行项目:[
{
价格数据:{
货币:美元,
产品数据:{
名称:“产品1”,
图片:['https://i.imgur.com/EHyR2nP.png'],
},
单位金额:1899,
},
数量:1,
},
{
价格数据:{
货币:美元,
产品数据:{
名称:“产品2”,
图片:['https://i.imgur.com/EHyR2nP.png'],
},
单位金额:1899,
},
数量:1,
},
{
价格数据:{
货币:美元,
产品数据:{
名称:“产品3”,
图片:['https://i.imgur.com/EHyR2nP.png'],
},
单位金额:1899,
},
数量:1,
},
{
价格数据:{
货币:美元,
产品数据:{
名称:“产品4”,
图片:['https://i.imgur.com/EHyR2nP.png'],
},
单位金额:1899,
},
数量:1,
},
{
价格数据:{
货币:美元,
产品数据:{
名称:“产品5”,
图片:['https://i.imgur.com/EHyR2nP.png'],
},
单位金额:1899,
},
数量:1,
},
{
价格数据:{
货币:美元,
产品数据:{
名称:“产品6”,
图片:['https://i.imgur.com/EHyR2nP.png'],
},
单位金额:1899,
},
数量:1,
},
],
方式:‘付款’,
success\u url:`${YOUR\u DOMAIN}?success=true`,
cancel\u url:`${YOUR\u DOMAIN}?canceled=true`,
});
res.json({id:session.id});

});以下是我在PHP中的工作原理:

$checkout_session = \Stripe\Checkout\Session::create([
      'payment_method_types' => ['card'],
      'line_items' => [ 
      [
        'price_data' => [
          'currency' => 'usd',
          'unit_amount' => 2000,
          'product_data' => [
            'name' => 'test',
          ],
        ],
        'quantity' => 1,
      ],
      [
        'price_data' => [
          'currency' => 'usd',
          'unit_amount' => 1000,
          'product_data' => [
            'name' => 'test1',
          ],
        ],
        'quantity' => 1,
      ],
      ],
      'mode' => 'payment',
      'success_url' => $return_url,
      'cancel_url' => $return_url,
    ]);

看起来您的单位金额可能没有正确嵌套?

“stripe.sessions.create()没有执行,签出页面也没有加载”您的控制台或stripe开发者日志中是否有错误消息?正如@ceejayoz所说:您能提供更详细的信息吗?这看起来正确/有效,因此我们需要任何错误来帮助您调试。你能分享你正在使用的
条带节点的版本吗?你的默认API版本是什么?我的条带节点版本是8.119.0。我的后端没有任何问题,但我的Stripe developer控制台显示POST/v1/checkout/sessions有400个错误:{“错误”:{“代码”:“参数无效的整数”,“文档url”:“消息”:“此值必须大于或等于1”,“参数”:“行项目[1][数量],“类型”:“无效的请求错误”}}你的数量是从某个变量或数据库中出来的吗?或者它们总是硬编码为
数量:1
,如上面的示例所示?Stripe开发者控制台应该显示您发送的内容以及他们响应的内容;匹配吗?@creejayoz是的,我的数量暂时是硬编码的。但是在以前的版本中,我让它们依赖于从值0开始的状态,看起来我没有完全更新我的后端。现在,每个数量都硬编码为1,所以似乎是数量设置为0导致了问题。如果你不介意我再问一个问题,这是否意味着我不能总是在结帐会话中定义所有6种产品?我的方法是在每个会话中定义所有6个,但数量会有所不同(从0开始),这取决于前端选择了多少产品。