PayPal API设置币种为SGD后交易仍为USD问题求助
币种不生效问题解决步骤
- 清理SDK缓存:PayPal SDK会缓存浏览器本地的配置,你可以先清除浏览器缓存,或者在加载SDK的URL末尾添加动态时间戳参数避免缓存,修改后的脚本加载代码如下:
const addPayPalScript = () => { const script = document.createElement("script"); script.type = "text/javascript"; // 末尾添加时间戳避免旧缓存影响 script.src = "https://www.paypal.com/sdk/js?client-id=CLIENT_ID¤cy=SGD&t=" + new Date().getTime(); script.async = true; script.onload = () => { setSdkReady(true); }; document.body.appendChild(script); };
- 修正PayPalButton组件的传参逻辑:你当前直接给组件传
currency属性的写法不符合多数版本react-paypal-button-v2的参数规范,需要同时在options配置和createOrder回调中明确指定SGD币种,避免组件默认使用USD,修改后的组件代码如下:
<PayPalButton amount={parcel.basePrice} onSuccess={successPaymentHandler} // 配置项中明确指定币种 options={{ currency: 'SGD' }} // 覆写创建订单逻辑,在订单参数中明确指定币种 createOrder={(data, actions) => { return actions.order.create({ purchase_units: [{ amount: { currency_code: 'SGD', value: parcel.basePrice } }] }) }} />
- 检查商家账户币种权限:登录你的PayPal商家后台,进入币种管理页面,确认已经添加SGD作为支持的收款币种。如果未开通对应币种的收款权限,PayPal会自动将所有交易转换为你的账户默认币种(通常为USD),导致配置不生效。
- 排查SDK重复加载问题:确认整个页面只加载了一次币种为SGD的PayPal SDK,如果你之前加载过其他币种的SDK且未清理,后续加载的同域名SDK配置会被忽略,导致币种沿用旧的配置。
内容的提问来源于stack exchange,提问作者peanutsee
相关产品推荐
相关产品推荐

