fastadmin微信支付插件临时关闭 curl 的 SSL 验证,实现本地支付

位置:首页 / 技术中心 / php

php Admin 2025-12-14 23:20:34 49
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,这样可以确保整个支付闭环正常工作。
18455111359 扫描二维码