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

如何为Stripe Charge添加数量字段?JavaScript开发问询

关于Stripe Charge添加数量字段的问题

首先明确说:Stripe的charges.create()方法本身确实不支持直接传入quantity参数——这不是你漏看了文档,而是Charge作为单笔交易的核心对象,它只关注最终的收款金额,数量属于你的业务逻辑范畴,而非Stripe Charge本身需要处理的属性(订阅的quantity是因为涉及周期性计费的额度调整,和单次Charge逻辑不同)。

那要实现让客户看到订购数量、同时在后台记录数量的需求,可以这么做:

方案1:自己计算总金额+用metadata存储数量

你需要在业务逻辑里先计算出总金额(注意Stripe的amount参数要用最小货币单位,比如美元传美分),然后通过metadata字段把数量存下来,这样在Stripe后台的交易详情里能看到这个数据,同时前端可以提前把数量和单价展示给客户:

stripe(STRIPE_SECRET_KEY).charges.create({
  amount: 2000, // 假设单价10美元,数量2,总金额20美元(转成2000美分)
  currency: 'usd',
  source: 'tok_visa', // 替换成前端获取的支付token
  metadata: {
    quantity: 2 // 这里存储订购数量,Stripe后台可查
  },
  receipt_email: 'customer@example.com'
});

方案2:使用Stripe Checkout Session(推荐)

如果是前端集成付款,Stripe现在更推荐用Checkout Session来处理单次付款,它天然支持quantity参数,而且会在Checkout页面自动给客户展示数量、单价、总价的明细,体验更友好:

stripe.checkout.sessions.create({
  payment_method_types: ['card'],
  line_items: [
    {
      price_data: {
        currency: 'usd',
        product_data: {
          name: '你的商品名称'
        },
        unit_amount: 1000 // 单价10美元(转成1000美分)
      },
      quantity: 2 // 直接传入数量,Checkout页面会自动显示
    }
  ],
  mode: 'payment',
  success_url: 'https://yourdomain.com/success',
  cancel_url: 'https://yourdomain.com/cancel'
});

这种方式下,客户在跳转的Stripe Checkout页面里能清晰看到“商品名称 x 2”的条目和总价,完全满足你的需求。

总结一下:Charge本身没有quantity参数,但你可以通过metadata记录数量,或者改用更适合的Checkout Session来实现前端展示数量的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:22:55