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

Express Checkout Paypal Payment Gateway For Woocommerce与Polylang冲突问题咨询

Polylang多语言URL配置后PayPal结账按钮失效解决方案

核心诱因

该故障是Polylang修改URL结构新增多语言前缀后,PayPal结账的AJAX请求、回调URL未适配新路径规则,导致请求校验失败、按钮无响应。

问题排查步骤

  • 核查PayPal插件Webhook地址匹配性:进入WooCommerce支付设置的PayPal配置页,确认Webhook URL是否包含当前站点的多语言路径前缀,路径不匹配会直接导致回调校验失败。
  • 核查前端JS报错信息:打开浏览器开发者控制台,点击PayPal按钮时若出现404 Not Found或跨域报错,且报错URL未携带多语言路径前缀,即可定位为路径适配问题。
  • 排除缓存干扰:多语言站点的页面缓存通常按语言前缀拆分存储,清空全站缓存后复测,排除旧版非多语言路径的结账页缓存导致的按钮加载异常。

可行解决方案

  • 路径排除配置
    进入Polylang设置→URL修改页面,找到「排除URL」配置项,添加cart、checkout、wc-api、paypal路径关键字,配置后上述页面的URL不会自动添加多语言前缀,原有PayPal请求路径可正常使用。
  • 代码适配多语言路径
    在主题functions.php文件中添加以下代码,自动为PayPal的AJAX请求、回调URL补全当前语言前缀:
add_filter( 'woocommerce_paypal_payments_rest_api_request_args', function( $args, $url ) {
    $current_lang = pll_current_language( 'slug' );
    if ( strpos( $url, home_url() ) !== false && strpos( $url, '/' . $current_lang . '/' ) === false ) {
        $url = str_replace( home_url(), home_url( '/' . $current_lang ), $url );
    }
    return $args;
}, 10, 2 );

add_filter( 'woocommerce_paypal_payments_webhook_url', function( $webhook_url ) {
    $default_lang = pll_default_language( 'slug' );
    if ( strpos( $webhook_url, '/' . $default_lang . '/' ) === false ) {
        $webhook_url = str_replace( home_url(), home_url( '/' . $default_lang ), $webhook_url );
    }
    return $webhook_url;
} );
  • 多Webhook地址配置
    在PayPal商户后台手动添加所有语言版本的Webhook回调地址,每个语言前缀对应一个回调地址,确保所有语言下的结账请求都能完成正常校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:48:01