| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 | 
							- <?php
 
- // +—————————————————————————————————————————————————————————————————————
 
- // | Created by Yunbao
 
- // +—————————————————————————————————————————————————————————————————————
 
- // | Copyright (c) 2013~2022 http://www.yunbaokj.com All rights reserved.
 
- // +—————————————————————————————————————————————————————————————————————
 
- // | Author: https://gitee.com/yunbaokeji
 
- // +—————————————————————————————————————————————————————————————————————
 
- // | Date: 2022-02-17
 
- // +—————————————————————————————————————————————————————————————————————
 
- namespace app\appapi\controller;
 
- use cmf\controller\HomeBaseController;
 
- use think\Db;
 
- /**
 
-  * 支付回调
 
-  */
 
- class PayController extends HomebaseController {
 
- 	
 
- 	
 
- 	//支付宝 回调
 
- 	public function notify_ali() {
 
-         $configpri=getConfigPri();
 
- 		require_once(CMF_ROOT."sdk/alipay_app/alipay.config.php");
 
-         $alipay_config['partner'] = $configpri['aliapp_partner'];
 
- 		require_once(CMF_ROOT."sdk/alipay_app/lib/alipay_core.function.php");
 
- 		require_once(CMF_ROOT."sdk/alipay_app/lib/alipay_rsa.function.php");
 
- 		require_once(CMF_ROOT."sdk/alipay_app/lib/alipay_notify.class.php");
 
- 		//计算得出通知验证结果
 
- 		$alipayNotify = new \AlipayNotify($alipay_config);
 
- 		$verify_result = $alipayNotify->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 = "<xml><return_code><![CDATA[{$type}]]></return_code></xml>";
 
- 		}else{
 
- 			return $returnXml = "<xml><return_code><![CDATA[{$type}]]></return_code><return_msg><![CDATA[{$msg}]]></return_msg></xml>";
 
- 		}
 
- 	}		
 
- 	
 
- 	//签名验证
 
- 	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);
 
- 	}
 
- }
 
 
  |