1. 程式人生 > >hp廢棄$GLOBALS['HTTP_RAW_POST_DATA'] 微信開發需注意

hp廢棄$GLOBALS['HTTP_RAW_POST_DATA'] 微信開發需注意

最近升級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);
    }