You need to enable JavaScript to run this app. 为何Payhere支付通知无法接收,Moodle沙箱付款成功却未触发学生入学
优惠活动
大模型
产品
解决方案
定价
更多

为何Payhere支付通知无法接收,Moodle沙箱付款成功却未触发学生入学

Moodle Payhere沙箱回调异常解决方案

1. 放行Payhere沙箱回调IP段

  • Payhere沙箱回调IP与生产环境不一致,服务器安全组、WAF、CDN防火墙默认会拦截未知IP的POST请求,Postman请求来自你本地/自用IP因此无拦截
  • 操作方案:将Payhere官方沙箱回调IP段全部加入服务器防火墙、WAF、CDN的放行规则,同时检查iptables/ufw规则是否放行了对应IP的80/443端口访问
  • 排查命令:支付后执行tail -f /var/log/nginx/access.log(Nginx环境)或tail -f /var/log/apache2/access.log(Apache环境),确认是否有Payhere的IP访问记录

2. 修正回调地址配置

Payhere沙箱默认不向HTTP地址发送回调,且不会跟随3xx重定向跳转,需确认两处配置完全一致:

  • Payhere沙箱后台填写的notify回调地址
  • Moodle Payhere支付插件中配置的回调地址
  • 排查要点:确认地址为HTTPS协议、无多余重定向(如带/不带www、末尾是否带斜杠的差异),否则Payhere回调会直接终止,而Postman默认开启重定向跟随因此请求正常

3. 校验沙箱密钥配置

  • 检查Moodle插件中填写的沙箱商户ID、商户密钥与Payhere沙箱后台参数完全一致,Payhere回调携带的签名如果校验不通过,Moodle会直接丢弃请求且不会生成业务日志,Postman请求参数正确因此校验通过
  • 排查方案:可临时在Moodle Payhere插件的回调入口代码中增加请求参数打印逻辑,确认是否有回调请求到达应用层

4. 解除回调路径访问限制

  • 检查Moodle的.htaccess、Nginx重写规则、安全插件配置,部分安全规则会拦截无用户Session的POST请求,而Payhere回调属于无Session的服务端请求,需将回调路径设置为无需登录即可访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 07:24:08