搜索


关于微信支付接口WxpayAPI_php_v3 SDK在PHP7不能成功回调的问题

[复制链接]
小爱 ROM开发者 发表于 2020-2-11 01:24:18 | 显示全部楼层 |阅读模式
小爱
2020-2-11 01:24:18 29 0 看全部
最近在做一个项目,PHP本从5.4升级到PHP7。结果原来好好的微信支付,只能付钱,但是不能成功从微信支付服务端接收回调数据,一直提示xml数据错误。
测试了一下午发现问题出在WxPay.Api.php文件的414行。
/**
*
* 支付结果通用通知
* @param function $callback
* 直接回调函数使用方法: notify(you_function);
* 回调类成员函数方法:notify(array($this, you_function));
* $callback 原型为:function function_name($data){}
*/
public static function notify($callback, &$msg)
{
//获取通知的数据
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
//如果返回成功则验证签名
try {
$result = WxPayResults::Init($xml);
} catch (WxPayException $e){
$msg = $e->errorMessage();
return false;
}

return call_user_func($callback, $result);
}

问题就在这个$GLOBALS['HTTP_RAW_POST_DATA']上面。PHP7里已经抛弃了这个数据接收方式,所以无法从微信端接收到反馈的数据
/**
*
* 支付结果通用通知
* @param function $callback
* 直接回调函数使用方法: notify(you_function);
* 回调类成员函数方法:notify(array($this, you_function));
* $callback 原型为:function function_name($data){}
*/
public static function notify($callback, &$msg)
{
//获取通知的数据
//$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
$xml = file_get_contents('php://input', 'r');
//如果返回成功则验证签名
try {
$result = WxPayResults::Init($xml);
} catch (WxPayException $e){
$msg = $e->errorMessage();
return false;
}

return call_user_func($callback, $result);
}
这个我修改过的,改用php://input方式接收数据,亲测可用
QQ号:2270351834    QQ群:208708074    微信号:Loner794    淘宝店铺:文宇通讯
业务:远程刷机、远程解锁、邮寄解锁;回收电子设备、出售新机、出售二手机;花呗支付、xin用卡支付等。
回复

使用道具 举报

  • 您可能感兴趣
您需要登录后才可以回帖 登录 | 立即注册 |

本版积分规则 返回列表

小爱
管理员给TA私信
小爱老师

查看:29 | 回复:0

手机回收、ROM开发、手机维修、
刷机解锁!技术领先,服务高效!
您的满意,就是我们的目标!
关于我们
公司简介
发展历程
联系我们
本站站务
友情链接
新手指南
内容审核
商家合作
广告合作
商家入驻
新闻合作

手机APP

官方微博

官方微信

联系电话:400-888-888 地址:某某省某某市某某街道 邮箱:888888@qq.com ICP备案号: ( 鲁ICP备18024545号 )
Copyright © 2014-2019 爱淘机官网.  
快速回复 返回顶部 返回列表