Django接入Stripe订阅功能报错:需提供至少一个recurring price
问题解决:Stripe订阅模式下InvalidRequestError错误
错误核心原因
你遇到的错误是因为订阅模式(mode='subscription')要求line_items必须配置重复计费规则,你的代码存在两个关键问题:
- 注释掉了
recurring配置,Stripe无法识别这是一个订阅类价格 unit_amount字段错误使用了settings.STRIPE_PRICE_ID,这个字段应填写金额(单位为货币最小单位,比如100代表1INR),而非价格ID
修正后的完整代码片段
checkout_session = stripe.checkout.Session.create( success_url=request.build_absolute_uri(reverse('main:complete')) + "?session_id={CHECKOUT_SESSION_ID}", cancel_url=request.build_absolute_uri(reverse('main:cancelled_transaction')), client_reference_id=request.user.id if request.user.is_authenticated else None, customer_email=email, payment_method_types=['card'], line_items=[ { 'quantity': 1, 'price_data': { 'product': 'PRODUCT_ID', # 替换为你在Stripe后台创建的产品ID 'unit_amount': 9900, # 示例:99INR,单位为货币最小单位 'currency': 'INR', 'recurring': { 'interval': 'month', # 计费周期:可选day/week/month/year # 可选配置:interval_count,比如填2代表每2个月计费一次 } } } ], mode='subscription', )
关键修正细节
- 恢复并正确配置
recurring:它是一个字典结构,必须包含interval键,明确订阅的计费周期 - 修正
unit_amount:确保是数值类型,对应实际订阅价格的最小货币单位(比如人民币分、印度卢比派萨) - 确认
product字段为Stripe后台生成的有效产品ID字符串
内容的提问来源于stack exchange,提问作者Ronak Saroj
相关产品推荐
相关产品推荐

