美文网首页
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