使用react-paypal-js实现多币种PayPal按钮时遇币种配置错误
解决PayPal按钮切换为EUR币种的问题
问题1:设置currency_code: 'EUR'时触发错误
错误提示核心原因是SDK脚本加载时未正确携带currency=EUR参数——即便你在initialOptions里配置了currency: 'EUR',也可能因浏览器缓存或参数传递异常,导致SDK实际加载的是默认币种(USD)。此时在createOrder中指定currency_code: 'EUR'就会触发币种不匹配的错误。
修复步骤:
- 保留
PayPalScriptProvider的initialOptions中currency: 'EUR'的配置,彻底移除createOrder里amount对象的currency_code字段。SDK会自动沿用初始化时指定的币种,无需重复声明。 - 强制刷新浏览器缓存,或在
initialOptions中添加防缓存参数确保SDK重新加载,比如:const initialOptions = { 'client-id': 'test', currency: 'EUR', intent: 'capture', 'data-sdk-integration-source': 'react-custom' };
问题2:仅设置initialOptions后内容不全为欧元
若金额显示为USD转换为EUR的形式,说明SDK已加载EUR币种,但存在以下潜在问题:
- 确认
createOrder中amount.value是欧元计价的金额,确保数值本身就是欧元金额,而非USD金额被自动转换。 - 检查PayPal商家账户的默认币种设置,若账户默认币种为USD,需在商家后台切换默认币种为EUR,避免订单创建时出现币种混淆。
修正后的完整代码示例:
const initialOptions = { 'client-id': 'test', currency: 'EUR', intent: 'capture', }; <PayPalScriptProvider options={initialOptions}> <PayPalButtons createOrder={(data, actions) => { return actions.order.create({ purchase_units: [{ description: `Rechnung ${dayjs(date, 'MM/YYYY').format('MMMM YYYY')}`, amount: { value: 2 // 直接传入欧元金额,无需指定currency_code } }] }); }} /> </PayPalScriptProvider>
内容的提问来源于stack exchange,提问作者zuzuzuu
相关产品推荐
相关产品推荐

