php廢棄$GLOBALS['HTTP_RAW_POST_DATA'] 微信開發需注意
阿新 • • 發佈:2018-11-20
最近升級php7後,在檢查以往專案的時候,發現微信支付失效了,檢查很久又沒有報錯,最後一個地方一個地方的echo,才發現有地方獲取不到值。
php7使用$GLOBALS[‘HTTP_RAW_POST_DATA’] 獲取不到資料,改為用file_get_contents(“php://input”)代替就正常了。
剛好在微信lib包裡面就有用到,檢查了大半天,才發現在lib包這麼深入的地方,
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'];
$xml = file_get_contents("php://input");
//如果返回成功則驗證簽名
try {
$result = WxPayResults::Init($xml);
} catch (WxPayException $e){
$msg = $e->errorMessage();
return false;
}
return call_user_func($callback, $result);
}