Stripe Invoices自定义动态价格实现相关技术问题咨询
Stripe动态价格关联产品的实现方案
方案1:使用Checkout Session的price_data参数实现动态定价(最适配现有流程)
你之前使用的是固定price ID的写法,实际上Checkout Session的line_items支持直接传入price_data字段动态生成一次性价格,同时绑定到指定产品ID,不需要提前创建数百个price对象。
示例代码如下:
session = stripe.checkout.Session.create( mode='payment', customer=customer_id, payment_method_types=['card'], line_items=[{ 'price_data': { 'currency': 'usd', 'product': YOUR_PRODUCT_ID, # 直接绑定提前创建的产品ID,后续交易记录都会关联到该产品 'unit_amount': 1099, # 自定义动态价格,单位为分,可根据用户场景实时计算传入 }, 'quantity': 5, }], )
该方案优势是完全复用现有Checkout支付流程,生成的Invoice、交易记录都会自动关联到指定产品,无需额外调整支付链路。
方案2:独立创建Invoice后生成支付链接
如果你的场景需要先给用户展示Invoice再发起支付,可以直接在后端创建自定义价格的Invoice,绑定产品后生成支付链接:
# 第一步:创建Invoice草稿 invoice = stripe.Invoice.create( customer=customer_id, collection_method='send_invoice', days_until_due=7, ) # 第二步:添加自定义价格的行项目,绑定对应产品 stripe.InvoiceItem.create( customer=customer_id, invoice=invoice.id, currency='usd', amount=5495, # 总价,也可拆分unit_amount+quantity配置 description='定制产品付费', product=YOUR_PRODUCT_ID, # 关联指定产品 ) # 第三步:定稿Invoice生成支付链接 invoice = invoice.finalize_invoice() # 可直接把invoice.hosted_invoice_url返回给用户跳转支付
方案3:Payment Intent绑定产品的改造方式
如果你坚持使用Payment Intent的流程,可以通过metadata字段关联产品ID,后续在Stripe后台可以通过metadata筛选关联产品的交易:
const paymentIntent = await stripe.paymentIntents.create({ amount: 1099, currency: "usd", metadata: { product_id: YOUR_PRODUCT_ID, product_name: "你的产品名称" } });
内容的提问来源于stack exchange,提问作者David Ferris
相关产品推荐
相关产品推荐

