坑死人不偿命之微信支付回调

Thinkphp集成微信支付SDK
遇到微信回调无法获取回调参数,导致重写的回调函数无法执行的问题
xml= GLOBALS[‘HTTP_RAW_POST_DATA’];//无法获取参数
改成
$xml=file_get_contents(“php://input”);
就可以了

    /**
     * WxPay.API.php
     * 支付结果通用通知
     * @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);
    }

以下是重写的回调处理函数notify.php文件中PayNotifyCallBack类

    //重写回调处理函数,写上你自己对于支付成功后的操作
    public function NotifyProcess($data, &$msg)
    {   

        Log::DEBUG("call back:" . json_encode($data));
        $notfiyOutput = array();

        if(!array_key_exists("transaction_id", $data)){
            $msg = "输入参数不正确";
            return false;
        }
        //查询订单,判断订单真实性
        if(!$this->Queryorder($data["transaction_id"])){
            $msg = "订单查询失败";
            return false;
        }
        return true;
    }
}

你可能感兴趣的:(PHP)