如何为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
相关产品推荐
相关产品推荐

