Appearance
问题现象
用户在微信小程序、公众号或收银台使用微信支付/支付宝完成扣款后,微信/支付宝端显示扣款成功,但在商城中订单状态依然显示为“待支付”或“支付失败”,未正常流转为“已支付/待发货/待审核”。
根本原因
支付平台(微信支付/支付宝)在用户付款成功后,会由官方服务器向 EBAOZU 系统的 异步通知回调地址(Notify URL) 发起 POST 回调请求。 若系统未将订单置为已支付,通常是由以下原因导致:
- 后台系统域名配置错误:后台【基础设置】填写的网站域名协议不正确(如实际为 HTTPS 却填了 HTTP,或反之),导致支付网关下发的回调地址无法送达。
- 异步回调接口被防火墙/CDN拦截:宝塔防火墙、云厂商 WAF 或 CDN 拦截了来自微信/支付宝服务器的 POST 回调请求,返回了 403 Forbidden 或验证码。
- SSL 证书或协议异常:微信支付与支付宝要求回调 URL 必须使用有效的 SSL 证书,过期或自签名证书会被直接拒绝连接。
- 支付密钥或公私钥配置错误:异步通知到达后端后,后端在进行验签(Signature Verify)时失败,导致未执行业务状态更新。
- 消息队列消费延迟或阻塞:支付回调触发的异步事件排队中未能及时消费。
排查与解决步骤
核对后台网站域名与协议
- 登录平台总后台 -> 【设置】 -> 【系统设置】 -> 【基础设置】。
- 确认 网站域名 格式正确,必须包含协议且与线上访问一致(例如
https://www.yourdomain.com,末尾不带/)。 - 保存后重启 Swoole 服务。
检查微信支付配置
- 登录微信商户平台(pay.weixin.qq.com),核对商户号(MchID)、API v2 / v3 密钥。
- 检查公众号/小程序 AppID 与微信商户号的绑定授权关系(AppID 授权关联)。
- 检查后台是否上传了微信支付 API 证书文件(
apiclient_cert.pem与apiclient_key.pem)。
检查支付宝配置
- 登录支付宝开放平台,核对 应用公钥/私钥 与 支付宝公钥(注意区分“应用公钥”与“支付宝公钥”)。
- 若采用证书模式,需在后台正确上传应用公钥证书、支付宝公钥证书和支付宝根证书。
- 检查支付宝应用中的“授权回调地址”与接口权限集是否已开通“电脑网站支付/手机网站支付/小程序支付”。
检查防火墙与 WAF 放行
确保防火墙未拦截以下支付回调路径:
- 微信支付回调路径:
/api/wechat/notify或/api/order/notify - 支付宝回调路径:
/api/alipay/notify
查看系统日志排查
若回调已到达但处理报错,请查看服务器日志定位具体验签或数据库写入异常:
bash
tail -n 100 /www/wwwroot/你的项目/runtime/log/当前年月/当前日期.log日志中搜索 notify 或 pay 关键词,查看具体的验签失败或异常堆栈信息。