如何在Python(Django框架)中通过Stripe API实现欧元收款
代码侧调整建议
你的现有代码中stripe.Charge.create已经指定了currency="eur",交易币种的请求配置是正确的,仅需要修正3个问题:
- 优化金额计算逻辑:欧元金额拆分后直接用
float转换存在精度丢失风险,建议改用decimal.Decimal处理金额,避免因计算误差导致交易金额异常,修改示例:
from decimal import Decimal # 替换原有float转换逻辑 amount = Decimal(amount2[0]) # 转换为以分为单位的整数金额 int_amount = int(amount * 100)
- 替换废弃的Charge API:欧盟地区要求付款符合SCA强认证规则,旧版Charge API不支持SCA校验,会导致大量付款被拦截,建议改用Stripe官方推荐的Payment Intents API处理付款流程。
- 移除硬编码地址:现有代码中用户地址为固定测试值,上线时需替换为用户实际提交的地址信息,避免触发Stripe风控规则导致交易失败。
Stripe后台配置调整
你当前到账为美元的核心原因是Stripe后台未配置欧元结算路径,所有欧元交易被自动兑换为美元入账,需要调整以下配置:
- 开通欧元结算账户:登录Stripe后台,进入「设置」→「银行账户和借记卡」,添加支持接收欧元汇款的欧元结算账户,若仅绑定美元结算账户,Stripe会自动将所有外币交易兑换为美元后入账。
- 关闭自动兑换开关:进入「设置」→「付款设置」,找到结算货币相关配置,开启多币种结算功能,选择「以交易币种结算」,关闭「将所有交易自动兑换为默认货币(美元)」的选项。
- 确认多币种结算权限:如果你的Stripe账户注册地为非欧元区国家/地区,需确认账户已开通多币种结算权限,部分地区的Stripe账户默认仅支持本币结算,需要手动申请开通后才能保留欧元资金不被自动兑换。
内容的提问来源于stack exchange,提问作者Mukesh saw
相关产品推荐
相关产品推荐

