基于django-stripe的Stripe Checkout:如何向客户转嫁手续费?
解决Stripe Checkout手续费按支付方式转嫁的问题
针对你遇到的「创建Checkout Session时无法预知用户支付方式,无法精准计算对应手续费」的问题,有两种主流解决方案:
方案一:利用Stripe内置的支付方式附加费(推荐)
Stripe Checkout原生支持针对不同支付方式自动加收对应手续费,无需提前计算,用户选择支付方式后系统会自动展示最终金额。操作步骤:
在Stripe后台配置附加费规则:
- 进入「设置」→「支付方式」→「附加费」菜单
- 为每种你支持的支付方式(如信用卡、PayPal、借记卡等)设置手续费比例或固定金额
- 开启「在结账时向客户显示附加费」选项,确保用户能看到明细
Django端创建Checkout Session时,直接传入产品原始价格即可:
import stripe stripe.checkout.Session.create( payment_method_types=['card', 'paypal'], # 列出你支持的支付方式 line_items=[{ 'price': 'price_xxxxxx', # 产品的原始价格ID 'quantity': 1, }], mode='payment', success_url='https://your-domain.com/success', cancel_url='https://your-domain.com/cancel', )用户在Checkout页面选择支付方式后,Stripe会自动叠加对应手续费并展示最终付款金额,全程无需你手动计算。
方案二:自定义两步支付流程(适合复杂逻辑场景)
如果Stripe内置配置满足不了你的个性化手续费计算需求,可以采用「先选支付方式,再算价扣款」的流程:
先创建Setup Intent收集用户支付方式:
stripe.SetupIntent.create( customer=your_customer_id, # 关联你的系统用户ID payment_method_types=['card', 'paypal'], )用Stripe Elements渲染支付选择表单,让用户先完成支付方式的验证选择。
获取用户选定的支付方式ID,根据预设规则或调用Stripe API查询该支付方式的手续费率,计算最终金额(原始价格+对应手续费)。
创建Payment Intent完成扣款:
# 假设final_amount为计算后的总金额(单位:货币最小单位,如美分) stripe.PaymentIntent.create( amount=final_amount, currency='usd', customer=your_customer_id, payment_method=user_selected_pm_id, # 用户选择的支付方式ID confirm=True, )这种方式需要自行搭建前端支付表单,但能实现更灵活的手续费逻辑。
关键注意事项
- 无论采用哪种方案,都必须在结账页面明确公示不同支付方式的手续费规则,符合合规要求,避免用户纠纷。
- 方案一中的附加费功能需要确保你的Stripe账户已开启对应支付方式的支持,部分地区可能需要额外申请。
内容的提问来源于stack exchange,提问作者Globuli
相关产品推荐
相关产品推荐

