You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PayPalScriptProvider设为zh-CN时提示异常的解决咨询

问题

在多语言Web应用中集成PayPalScriptProvider时,根据用户选择的语言设置locale:

  • 当locale设为en_HK和zh_HK时,PayPal按钮可正常打开内嵌HTML表单
  • 当locale设为zh_CN时,弹出错误提示:We're sorry, things don't appear to be working at the moment. Please try again later.

相关React代码如下:

// React App
<PayPalScriptProvider key='paypal-script' options={{
  'locale': 'en_HK',
  'client-id': 'xxxxxx',
  'currency': 'HKD'
}}>
        
// handleLanguageChange()    
// paypal locale change
// const [{ options }, dispatch] = usePayPalScriptReducer();
dispatch({
  type: "resetOptions",
  value: {
    ...options,
    locale: paypalLocale.get(locale),
    currency: 'HKD',
  },
});
解决方案

1. 修正locale与货币的匹配关系

PayPal对不同locale支持的货币有严格限制:zh_CN locale默认适配人民币(CNY),而你当前固定使用HKD,这种不匹配会触发错误。

修改代码,根据locale自动切换对应货币:

dispatch({
  type: "resetOptions",
  value: {
    ...options,
    locale: paypalLocale.get(locale),
    currency: paypalLocale.get(locale) === 'zh_CN' ? 'CNY' : 'HKD',
  },
});

2. 检查PayPal账户的地区权限

如果你的PayPal账户是香港地区注册的,可能无法使用zh_CN locale——该locale主要面向中国大陆地区账户。

  • 若需服务中国大陆用户,建议注册中国大陆地区的PayPal商户账户;
  • 若暂时无法更换账户,可尝试用zh_TW作为替代locale(需提前测试兼容性)。

3. 避免动态切换时的脚本缓存冲突

动态调用resetOptions切换locale时,可能存在旧脚本未完全卸载的缓存问题。可以通过修改PayPalScriptProvider的key属性,强制组件重新渲染并加载对应locale的脚本:

<PayPalScriptProvider 
  key={`paypal-script-${paypalLocale.get(locale)}`} 
  options={{
    'locale': paypalLocale.get(locale),
    'client-id': 'xxxxxx',
    'currency': paypalLocale.get(locale) === 'zh_CN' ? 'CNY' : 'HKD',
  }}
>
  {/* 你的PayPal按钮组件 */}
</PayPalScriptProvider>

4. 验证客户端ID的地区访问权限

登录PayPal商户平台,检查你的客户端ID是否支持zh_CN地区的交易。部分测试环境或受限账户可能无法访问特定地区的PayPal服务,需确保账户已启用中国大陆地区的交易权限。

内容的提问来源于stack exchange,提问作者Jake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 15:17:28