verifyNotify(); $this->logali("ali_data:".json_encode($_POST)); if($verify_result) {//验证成功 //商户订单号 $out_trade_no = $_POST['out_trade_no']; //支付宝交易号 $trade_no = $_POST['trade_no']; //交易状态 $trade_status = $_POST['trade_status']; //交易金额 $total_fee = $_POST['total_fee']; if($_POST['trade_status'] == 'TRADE_FINISHED') { }else if ($_POST['trade_status'] == 'TRADE_SUCCESS') { $where['orderno']=$out_trade_no; $where['money']=$total_fee; $where['type']=1; $data=[ 'trade_no'=>$trade_no ]; $this->logali("where:".json_encode($where)); $res=handelCharge($where,$data); if($res==0){ $this->logali("orderno:".$out_trade_no.' 订单信息不存在'); echo "fail"; exit; } $this->logali("成功"); echo "success"; //请不要修改或删除 exit; } echo "fail"; //请不要修改或删除 exit; }else { $this->logali("验证失败"); //验证失败 echo "fail"; exit; } } /* 微信支付 */ private $wxDate = null; public function notify_wx(){ $config=getConfigPri(); //$xmlInfo = $GLOBALS['HTTP_RAW_POST_DATA']; $xmlInfo=file_get_contents("php://input"); //解析xml $arrayInfo = $this -> xmlToArray($xmlInfo); $this -> wxDate = $arrayInfo; $this -> logwx("wx_data:".json_encode($arrayInfo));//log打印保存 if($arrayInfo['return_code'] == "SUCCESS"){ $wxSign = $arrayInfo['sign']; unset($arrayInfo['sign']); $arrayInfo['appid'] = $config['wx_appid']; $arrayInfo['mch_id'] = $config['wx_mchid']; $key = $config['wx_key']; ksort($arrayInfo);//按照字典排序参数数组 $sign = $this -> sign($arrayInfo,$key);//生成签名 $this -> logwx("数据打印测试签名signmy:".$sign.":::微信sign:".$wxSign);//log打印保存 if($this -> checkSign($wxSign,$sign)){ echo $this -> returnInfo("SUCCESS","OK"); $this -> logwx("签名验证结果成功:".$sign);//log打印保存 $this -> orderServer();//订单处理业务逻辑 exit; }else{ echo $this -> returnInfo("FAIL","签名失败"); $this -> logwx("签名验证结果失败:本地加密:".$sign.':::::三方加密'.$wxSign);//log打印保存 exit; } //} }else{ echo $this -> returnInfo("FAIL","签名失败"); $this -> logwx($arrayInfo['return_code']);//log打印保存 exit; } } private function returnInfo($type,$msg){ if($type == "SUCCESS"){ return $returnXml = ""; }else{ return $returnXml = ""; } } //签名验证 private function checkSign($sign1,$sign2){ return trim($sign1) == trim($sign2); } /* 订单查询加值业务处理 * @param orderNum 订单号 */ private function orderServer(){ $info = $this -> wxDate; $this->logwx("info:".json_encode($info)); $where['orderno']=$info['out_trade_no']; $where['type']=2; $trade_no=$info['transaction_id']; $data=[ 'trade_no'=>$trade_no ]; $this->logwx("where:".json_encode($where)); $res=handelCharge($where,$data); if($res==0){ $this->logwx("orderno:".$out_trade_no.' 订单信息不存在'); return false; } $this->logwx("成功"); return true; } /** * sign拼装获取 */ private function sign($param,$key){ $sign = ""; foreach($param as $k => $v){ $sign .= $k."=".$v."&"; } $sign .= "key=".$key; $sign = strtoupper(md5($sign)); return $sign; } /** * xml转为数组 */ private function xmlToArray($xmlStr){ $msg = array(); $postStr = $xmlStr; $msg = (array)simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); return $msg; } /* 微信支付 */ /* 打印log */ public function logali($msg){ file_put_contents(CMF_ROOT.'data/paylog/logali_'.date('Y-m-d').'.txt',date('Y-m-d H:i:s').' msg:'.$msg."\r\n",FILE_APPEND); } /* 打印log */ public function logwx($msg){ file_put_contents(CMF_ROOT.'data/paylog/logwx_'.date('Y-m-d').'.txt',date('Y-m-d H:i:s').' msg:'.$msg."\r\n",FILE_APPEND); } }