addons/epay/library/Service.php
添加

'verify' => false, // 关闭SSL验证
本地回调函数没有被执行的原因
根据日志分析,微信支付 notifyx() 方法未执行的原因已找到:
1. **预支付请求成功**:
- 从日志可以看到,微信支付预支付请求已成功返回 `prepay_id`
- 签名生成正确,微信支付服务器已接收请求
- 回调 URL 配置为 `http://192.168.0.106/addons/epay/index/notifyx/paytype/wechat`
2. **回调未执行的根本原因**:
- 回调 URL 使用的是**本地 IP 地址**(192.168.0.106)
- 微信支付服务器**无法从公网访问**这个本地 IP
- 应用日志中没有任何针对回调 URL 的请求记录,说明微信支付服务器根本无法连接到您的服务器
3. **微信支付回调的必要条件**:
- 回调 URL 必须是**公网可访问**的域名或 IP
- 推荐使用 HTTPS 协议(微信支付 V3 强制要求)
- 端口必须是 80(HTTP)或 443(HTTPS)
- 服务器不能有防火墙或安全组限制
4. **解决方案**:
- **配置公网 IP**:将服务器配置为公网可访问,或者使用内网穿透工具
- **使用 HTTPS**:为域名配置 SSL 证书,使用 HTTPS 协议
- **修改回调 URL**:在支付配置中使用公网可访问的 URL
- **测试回调**:使用工具(如 Postman)模拟微信支付回调请求,测试 notifyx() 方法是否正常执行
5. **验证回调方法**:
- 从代码修复来看,notifyx() 方法的逻辑已经正确
- 修复了 `$pay->callback()` 重复调用的问题
- 添加了详细的日志记录
- 回调处理逻辑完整
建议您先使用工具模拟微信支付回调请求,验证 notifyx() 方法是否正常执行,然后再配置公网可访问的回调 URL,这样可以确保整个支付闭环正常工作。
