Stripe Charge接口迁移:如何用Payment Intents扣款关联账户余额
问题
原代码依赖已废弃的Stripe Charge接口,试图从关联账户余额扣款:
stripe.api_key = "sk_test_xxxxx" out = stripe.Charge.create( amount=1000, currency="eur", source="acct_yyyyyy", )
Charge接口已被标记为废弃,需迁移至Payment Intents,但无法找到从关联账户余额扣款的实现方式。
解决方案
根据实际业务场景,选择以下两种可行方案:
场景1:从关联账户余额扣除平台服务费/佣金
直接使用Stripe Connect的转账功能,将资金从关联账户划转至平台账户:
stripe.api_key = "sk_test_xxxxx" transfer = stripe.Transfer.create( amount=1000, # 金额为最小货币单位(例:1000=10欧元) currency="eur", source="acct_yyyyyy", # 待扣款的关联账户ID destination="your_platform_stripe_account_id" # 你的平台账户ID )
注意:若关联账户是Standard/Express类型,需确保已授权平台转账权限;若为Custom账户,平台默认拥有该权限。
场景2:用关联账户资金处理客户支付(代关联账户收款)
如果原需求是通过关联账户的资金完成客户支付(资金最终进入关联账户,可同步扣除平台服务费),创建Payment Intent时指定transfer_data参数:
stripe.api_key = "sk_test_xxxxx" payment_intent = stripe.PaymentIntent.create( amount=1000, currency="eur", payment_method_types=["card"], transfer_data={ "destination": "acct_yyyyyy", # 资金最终转入的关联账户ID }, # 可选:平台收取的服务费,单位为最小货币单位 # application_fee_amount=100, )
支付确认后,资金会按配置转入关联账户;若设置了application_fee_amount,平台会自动扣除对应费用。
关键注意事项
- 金额单位必须是对应货币的最小单位(如欧元分、美元分)
- 操作前需确认关联账户余额充足(场景1)或客户支付方式有效(场景2)
- 确保你的Stripe账户已启用Connect功能
内容的提问来源于stack exchange,提问作者cloudmania
相关产品推荐
相关产品推荐

