在Django项目中实现Stripe自定义价格产品自动创建的方案咨询
问题
我正将Stripe集成到Django房屋租赁项目中,需要实现自定义支付价格功能,现提出两种方案:
- 自动化流程,编写脚本根据购物车总价创建对应价格的产品;
- 新增房源到数据库时创建对应的Stripe产品,后续直接选用该产品完成支付。
我更倾向第一种方案,但不确定是否可行,希望得到帮助。
目前我的代码如下:
checkout_session = stripe.checkout.Session.create( payment_method_types = ['card'], line_items = [{ 'price': total_post_gestion*100, 'quantity': 1,}] )
当前代码报错,Stripe提示需使用关联产品的价格ID,不能直接传入整数。
解决方案
第一种方案完全可行,Stripe支持动态创建产品和价格来适配自定义金额的场景,具体实现如下:
1. 修改代码实现动态创建
在生成Checkout Session前,先根据购物车总价创建对应的产品和价格,再用价格ID发起支付:
# 创建通用产品(名称可自定义,比如包含订单标识) product = stripe.Product.create(name=f"房屋租赁订单 - {order_id}") # 根据购物车金额创建价格,单位为分 price = stripe.Price.create( product=product.id, unit_amount=int(total_post_gestion * 100), currency="cny" # 替换为你实际使用的货币,如"usd" ) # 生成Checkout Session checkout_session = stripe.checkout.Session.create( payment_method_types=['card'], line_items=[{ 'price': price.id, 'quantity': 1, }], mode='payment', # 必填,指定支付模式 success_url='https://your-domain.com/payment-success', # 替换为你的成功页地址 cancel_url='https://your-domain.com/payment-cancel', # 替换为你的取消页地址 )
2. 两种方案的适用场景
- 动态创建方案:适合金额不固定的场景(比如多房源组合、附加服务叠加等),无需提前维护Stripe产品,灵活性拉满;唯一的额外成本是每次支付多两次Stripe API调用,这对业务性能几乎无影响。
- 提前创建方案:适合单房源固定定价的场景,房源入库时绑定Stripe产品,支付时直接复用;但如果房源价格调整,需要同步更新Stripe端的价格,维护成本较高。
3. 关键注意事项
- 确保Django项目中已正确配置Stripe的API密钥(建议用环境变量管理,避免硬编码)。
- 货币参数要和业务区域匹配,避免出现货币不兼容的报错。
- 动态创建产品时可以补充描述字段,方便在Stripe后台快速识别对应订单。
内容的提问来源于stack exchange,提问作者Álvaro Hidalgo Rodríguez
相关产品推荐
相关产品推荐

