对接使用了官方提供的sdk:php_sdk_v3.0.9
云服务部署的PHP版本是7.2.11,故事,不对事故就是因为PHP版本问题引起的

简而言之就是PHP7.0.0版本移除了HTTP_RAW_POST_DATA
改进方案:
使用file_get_contents('php://input');替代$GLOBALS['HTTP_RAW_POST_DATA']
具体请修改文件:WxPay.Api.php

修改后的代码
public static function notify($config, $callback, &$msg)
{
//如果返回成功则验证签名
try {
//获取通知的数据
$xml = file_get_contents('php://input');
$result = WxPayNotifyResults::Init($config, $xml);
} catch (WxPayException $e){
$msg = $e->errorMessage();
return false;
}
return call_user_func($callback, $result);
}

本文解决了一个因PHP版本升级导致的微信支付通知失败的问题。在PHP7.0.0中,HTTP_RAW_POST_DATA被移除,导致使用官方SDK的云服务无法正确接收微信支付的通知数据。通过将获取原始POST数据的方法从$GLOBALS['HTTP_RAW_POST_DATA']替换为file_get_contents('php://input'),成功解决了这一问题。
4848

被折叠的 条评论
为什么被折叠?



