<?php
/*
* $Author ：PHPYUN开发团队
*
* 官网: http://www.phpyun.com
*
* 版权所有 2009-2021 宿迁鑫潮信息技术有限公司，并保留所有权利。
*
* 软件声明：未经授权前提下，不得用于商业运营、二次开发以及任何形式的再次发布。
 */

/////////////////////////////////////
error_reporting(0);
require_once("class/alipay_notify.php");
require_once("alipay_config.php");
require_once(dirname(dirname(dirname(__FILE__)))."/global.php");

if($sign_type == 'MD5'){

	$alipay = new alipay_notify($partner,$security_code,$sign_type,$_input_charset,$transport);    //构造通知函数信息
	$verify_result = $alipay->notify_verify();  //计算得出通知验证结果
	if($verify_result) {
		if(!preg_match('/^[0-9]+$/', $_POST['out_trade_no'])){
			die;
		}
		//验证成功
		//获取支付宝的反馈参数
		$dingdan           = $_POST['out_trade_no'];	    //获取支付宝传递过来的订单号
		$total_fee         = $_POST['total_fee'];	    //获取支付宝传递过来的总价格

		/*假设：
		sOld_trade_status="0";表示订单未处理；
		sOld_trade_status="1";表示交易成功（TRADE_FINISHED/TRADE_SUCCESS）；
		*/
		if($_POST['trade_status'] == 'TRADE_FINISHED' ||$_POST['trade_status'] == 'TRADE_SUCCESS') {    //交易成功结束
			 //放入订单交易完成后的数据库更新程序代码，请务必保证echo出来的信息只有success
			//为了保证不被重复调用，或重复执行数据库更新程序，请判断该笔交易状态是否是订单未处理状态 

				//if($sOld_trade_status < 1) {
					//根据订单号更新订单，把订单处理成交易成功
					require_once(APP_PATH.'app/public/common.php');
					require_once(LIB_PATH.'ApiPay.class.php');

					$apiPay = new apipay($phpyun,$db,$db_config['def'],'index');
					
					$return = $apiPay->payAll($dingdan,$total_fee,'alipay');
					if ($return==2){
						echo "success";
					}
				//}

				//调试用，写文本函数记录程序运行情况是否正常
				//log_result("这里写入想要调试的代码变量值，或其他运行的结果记录");
			 
		} else {
			echo "success";		//其他状态判断。普通即时到帐中，其他状态不用判断，直接打印success。

			//调试用，写文本函数记录程序运行情况是否正常
			//log_result ("这里写入想要调试的代码变量值，或其他运行的结果记录");
		}
	}else {
		//验证失败
		echo "fail";

		//调试用，写文本函数记录程序运行情况是否正常
		//log_result ("这里写入想要调试的代码变量值，或其他运行的结果记录");
	}

}else{

	require_once dirname(dirname(dirname(__FILE__))).'/api/aop/AopClient.php';


	$aop = new AopClient();
	$aop->alipayrsaPublicKey = $alipaydata['sy_alipaypublickey'];
	$aop->signType = 'RSA2';

	$requestParamsArr  =  $_POST;

	//除去sign、sign_type两个参数外，凡是通知返回回来的参数皆是待验签的参数。
	// unset($requestParamsArr['sign_type']);
	$requestParamsArr['fund_bill_list']  =  stripslashes($_POST['fund_bill_list']);
	//验证RSA2格式签名
	$verify_result  =  $aop->rsaCheckV1($requestParamsArr, $aop->alipayrsaPublicKey,$aop->signType);
	
	if($verify_result) {
		if(!preg_match('/^[0-9]+$/', $_POST['out_trade_no'])){
			die;
		}
		//验证成功
		//获取支付宝的反馈参数
		$dingdan           = $_POST['out_trade_no'];	    //获取支付宝传递过来的订单号
		$total_amount      = $_POST['total_amount'];	    //获取支付宝传递过来的总价格

		if($_POST['trade_status'] == 'TRADE_FINISHED' ||$_POST['trade_status'] == 'TRADE_SUCCESS') {    //交易成功结束
			//放入订单交易完成后的数据库更新程序代码，请务必保证echo出来的信息只有success
			//为了保证不被重复调用，或重复执行数据库更新程序，请判断该笔交易状态是否是订单未处理状态 

			//根据订单号更新订单，把订单处理成交易成功
			require_once(APP_PATH.'app/public/common.php');
			require_once(LIB_PATH.'ApiPay.class.php');

			$apiPay = new apipay($phpyun,$db,$db_config['def'],'index');
			
			$return = $apiPay->payAll($dingdan,$total_amount,'alipay');
			if ($return==2){
				echo "success";
			}
			 
		} else {
			echo "success";		//其他状态判断。普通即时到帐中，其他状态不用判断，直接打印success。
		}

	}else {
		//验证失败
		echo "fail";
	}

}
?>