微信支付回调接口下单,如何验证微信支付签名 ,处理异步回调

版权声明:本文为博主原创文章,转载请留言。 https://blog.csdn.net/root_miss/article/details/81277314

 public function returnpay(){
// 获取微信回调的数据
        $notifiedData = file_get_contents('php://input');

        //XML格式转换
        $xmlObj = simplexml_load_string($notifiedData, 'SimpleXMLElement', LIBXML_NOCDATA);
        $xmlObj = json_decode(json_encode($xmlObj),true);

        // 当支付通知返回支付成功时
        if ($xmlObj['return_code'] == "SUCCESS" && $xmlObj['result_code'] == "SUCCESS") {

            //获取返回的所以参数
            //这里是要把微信返给我们的所有值,先删除sign的值,其他值 按ASCII从小到大排序,md5加密+‘key’;

            foreach( $xmlObj as $k=>$v) {
                if($k == 'sign') {
                    $xmlSign = $xmlObj[$k];
                    unset($xmlObj[$k]);
                };
            }

            $sign = http_build_query($xmlObj);
            //md5处理
            $sign = md5($sign.'&key=fwFKUSBIDAAEEYv9dK3IZ4qWGqX9zRK1');
            //转大写
            $sign = strtoupper($sign);

            //验签名。默认支持MD5

            if ( $sign === $xmlSign) {
                // 总订单号
                $trade_no = $xmlObj['out_trade_no'];
                $where['order_code'] = $trade_no;
                $res = db('plat_card')->where($where)->update(['status'=>1]);
                if($res){
                    exit();
                }
                //处理你商城购物的操作信息


            }

        }

    }

猜你喜欢

转载自blog.csdn.net/root_miss/article/details/81277314