生产环境WooCommerce 5.1.0下自定义支付网关的wc_add_notice不生效
WooCommerce自定义支付网关webhook生产环境通知展示失效问题
基础环境与开发背景
- 开发初期本地运行的WooCommerce版本为4.7.0,后续已将本地环境升级至与生产服务器一致的5.1.0版本
- 生产服务器实际运行的WooCommerce版本为5.1.0
- 本次开发的自定义支付网关中,实现了如下webhook回调逻辑:
function webhook() { $data = json_decode($this->df_check_payment(), true); $code = $data['result']['code']; $description = $data['result']['description']; if ($code != WC_Gateway_Datafast::DF_SUCCESS_CODE){ wc_add_notice( __("Payment failed -> Code: $code Description: $description" , 'gateway'), 'error' ); wp_safe_redirect( wc_get_page_permalink( 'cart' ) ); } else{ $orderId = $data['customParameters']['SHOPPER_documentoId']; $order = wc_get_order( $orderId ); $order->set_transaction_id($data['id']); $order->payment_complete(); wp_safe_redirect($this->get_return_url($order)); } }
问题现象与已完成排查
- 功能表现差异:上述逻辑在本地环境运行完全正常,支付失败时通过
wc_add_notice添加的错误提示可正常在购物车页面展示;但生产环境中该功能完全失效,通知无法正常展示 - 重定向页面调整验证:尝试将跳转地址从购物车页调整为结账页(通过
wc_get_page_permalink( 'checkout' )实现跳转),生产环境依然无法正常展示通知 - 版本差异排除:最初猜测问题与WooCommerce版本差异有关,将本地环境升级到与生产一致的5.1.0版本后,本地功能依然运行正常,生产环境的通知展示问题仍未解决
- 前端渲染问题排除:曾怀疑是其他插件的样式覆盖导致通知不可见,但检查生产页面的HTML源码时,完全找不到通知对应的文本内容,说明通知根本没有被生成、存储并输出,并非前端展示层面的问题
- 当前状态:本地环境可正常展示支付失败的错误提示,生产环境则没有任何相关提示展示
内容的提问来源于stack exchange,提问作者Johnny Beltran
相关产品推荐
相关产品推荐

