美文网首页
PHP接收微信支付结果通知 notify

PHP接收微信支付结果通知 notify

作者: 谢谢子城 | 来源:发表于2018-09-20 12:25 被阅读0次
    
       /**
         *   微信支付 通知
         *
         * @param Request $request
         */
        public function notify(Request $request)
        {
             // 接收微信推送的数据
            $data = file_get_contents('php://input');
            // 将接收的数据写入日志文件 
            $path = app()->storagePath('wxPay/' . date('Ym'));
            if (!file_exists($path)) {
                mkdir($path, 0755, true);
            }
            $path .= '/' . date('Ymd') . '.txt';
            // 处理微信返回的xml格式数据 转换为 数组
            libxml_disable_entity_loader(true);
            $data = json_decode(json_encode(simplexml_load_string($data, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
            file_put_contents($path, date('Y-m-d H:i:s') . "\n Content:" . json_encode($data) . "\n\n", FILE_APPEND);
            // 数组排序计算签名 
            ksort($data);
            $buff = '';
            foreach ($data as $k => $v) {
                if ($k != 'sign') {
                    $buff .= $k . '=' . $v . '&';
                }
            }
            unset($k, $v);
            $stringSignTemp = $buff . 'key=' . $this->C('WX_PAY_SECRET');//key为证书密钥
            $sign = strtoupper(md5($stringSignTemp));
            // 判断算出的签名和通知信息的签名是否一致
            // 签名正确才进行处理
            if ($sign == $data['sign']) {
                 // 业务处理逻辑 
                // .......
    
                //处理完成之后,告诉微信成功结果
                echo '<xml>
                  <return_code><![CDATA[SUCCESS]]></return_code>
                  <return_msg><![CDATA[OK]]></return_msg>
                      </xml>';
                exit();
    
            }
    
    
        }
    

    相关文章

      网友评论

          本文标题:PHP接收微信支付结果通知 notify

          本文链接:https://www.haomeiwen.com/subject/yxngnftx.html