微信notify

来源:互联网 发布:win10软件安装不了 编辑:程序博客网 时间:2024/06/06 04:28
 public  function  notify(){
          
             Vendor('Wxpay.WxPayJsApiPay');
            $xml = $GLOBALS['HTTP_RAW_POST_DATA'];  
       //  file_put_contents('./jol.txt',$xml,FILE_APPEND);
            $data = json_decode(json_encode(simplexml_load_string($xml,'SimpleXMLElement',LIBXML_NOCDATA)),true);
              // 保存微信服务器返回的签名sign  
              $data_sign = $data['sign'];  
              // sign不参与签名算法  
              unset($data['sign']);  
              $sign = $this->makeSign($data);  
              // 判断签名是否正确  判断支付状态  
              if ( ($sign===$data_sign) && ($data['return_code']=='SUCCESS') && ($data['result_code']=='SUCCESS') ) {  
                  $result = $data;  
                  //获取服务器返回的数据  
                  $order_sn = $data['out_trade_no'];  //订单单号  
                //  $order_id = $data['attach'];        //附加参数,选择传递订单ID   
                 // $openid = $data['openid'];          //付款人openID  
                  $total_fee = $data['total_fee'];    //付款金额  
                  
                  //更新数据库  
                M('drink_sold_goods')->where(array('out_trade_no'=>$order_sn))->save(array('sold_status'=>'已支付','shop_good_price'=>$total_fee));
               //  $this->updateDB($order_id,$order_sn,$openid,$total_fee);  
              }else{  
                  $result = false;  
              }  
              // 返回状态给微信服务器  
              if ($result) {  
                  $str='<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';  
              }else{  
                  $str='<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[签名失败]]></return_msg></xml>';  
              }  
             
           echo $str;  
       //   return $result;  
      
       }
     //生成签名
       protected function makeSign($data){  
    //获取微信支付秘钥  
               Vendor('Wxpay.WxPayJsApiPay'); 
                $key = \WxPayConfig::KEY;  
                // 去空  
                $data=array_filter($data);  
                //签名步骤一:按字典序排序参数  
                ksort($data);  
                $string_a=http_build_query($data);  
                $string_a=urldecode($string_a);  
                //签名步骤二:在string后加入KEY  
                //$config=$this->config;  
                $string_sign_temp=$string_a."&key=".$key;  
                //签名步骤三:MD5加密  
                $sign = md5($string_sign_temp);  
                // 签名步骤四:所有字符转为大写  
                $result=strtoupper($sign);  
                return $result;  
        }  
原创粉丝点击