<?php
/* *
 * 功能：如意木皆支付异步通知页面
 * 说明：
 * 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。
 *************************页面功能说明*************************
 * 创建该页面文件时，请留心该页面文件中无任何HTML代码及空格。
 * 该页面不能在本机电脑测试，请到服务器上做测试。请确保外部可以访问该页面。
 * 该页面调试工具请使用写文本函数logResult，该函数已被默认关闭，见alipay_notify_class.php中的函数verifyNotify
 */
include("include/global.php");

$order = isset($_GET['out_trade_no']) && !empty($_GET['out_trade_no']) ? purge($_GET['out_trade_no']) : die('fail');

$order_res = Db::table('goods_order','as O')->field('O.*,G.appid,G.type,G.amount,A.pay_id,A.pay_key')->JOIN("goods","as G",'O.gid=G.id')->JOIN("app",'as A','G.appid=A.id')->where(['O.order'=>$order])->find();//false
if(!$order_res)die('fail');


///http://iptv.ski/xrnotify.php?money=1&name=product&out_trade_no=2023041801405080923&pid=1206&trade_no=2023041813410626045&trade_status=TRADE_SUCCESS&type=alipay&sign=d7db0433f8122262c95ec1fa80343750&sign_type=MD5

//商户ID
$alipay_config['partner']= $order_res['pay_id'];
//商户KEY
$alipay_config['key']= $order_res['pay_key'];
//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

//签名方式 不需修改
$alipay_config['sign_type']= strtoupper('MD5');
//字符编码格式 目前支持 gbk 或 utf-8
$alipay_config['input_charset']= strtolower('utf-8');
//访问模式,根据自己的服务器是否支持ssl访问，若支持请选择https；若不支持请选择http
$alipay_config['transport']= (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? 'https' : 'http';

//支付API地址
$alipay_config['apiurl']= ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].'/';

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
require_once("include/class/epay/epay_notify.class.php");
//计算得出通知验证结果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();

if($verify_result) {//验证成功

	$trade_no = $_GET['trade_no'];//支付交易号
	$type = $_GET['type'];//支付方式
	$money = $_GET['money'];//支付金额
	$data = json_encode($_GET);

	if ($_GET['trade_status'] == 'TRADE_SUCCESS') {
	    
		$res_user = Db::table('user')->where(['id'=>$order_res['uid']])->find();//false
		if(!$res_user){
			$state = 3;//用户不存在
			echo '用户不存在';
		}else{
			if($order_res['type'] == 'vip'){
			
				if($res_user['vip'] == 999999999){
					$state = 9;//该用户已是VIP会员
				}elseif($res_user['vip']>time()){
					if($order_res['amount'] == 9999){
						$vip = 999999999;
					}else{
						$vip = $res_user['vip'] + $order_res['amount'] * 86400;
					}
				}else{
					$vip = time() + $order_res['amount'] * 86400;
				}
				$res = Db::table('user')->where('id', $res_user['id'])->update(['vip' => $vip]);

			//	 echo $vip;
				if($res){
				  //  echo '成功';
					$state = 2;//成功
				}else{
				 //    echo '失败';
					$state = 1;//失败
				}
			}elseif($order_res['type'] == 'fen'){
				$fen = $res_user['fen'] + $order_res['amount'];
				$res = Db::table('user')->where('id',$res_user['id'])->update(['fen'=>$fen]);
				if($res){
					$state = 2;//成功
				}else{
					$state = 1;//失败
				}
			}else{
				$state = 4;//未知商品类型
			}
		}
		$update = ['data'=>$data,'state'=>$state,'p_time'=>time()];
    }else{
		$update = ['data'=>$data];
	}
	Db::table('goods_order')->where('id',$order_res['id'])->update($update);
	echo "success";		//请不要修改或删除
	if(defined('USER_LOG') && USER_LOG == 1){
		if($state == 2){
			Db::table('user_log')->add(['uid'=>$res_user['id'],'type'=>'pay_success','status'=>200,$order_res['type']=>$order_res['amount'],'time'=>time(),'ip'=>getip(),'appid'=>$order_res['appid']]);//记录日志
		}else{
			Db::table('user_log')->add(['uid'=>$order_res['uid'],'type'=>'pay_success','status'=>201,'time'=>time(),'ip'=>getip(),'appid'=>$order_res['appid']]);//记录日志
		}
	}
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}else{//验证失败
	Db::table('goods_order')->where('id',$order_res['id'])->update(['data'=>'fail']);
    echo "fail";//请不要修改或删除
	if(defined('USER_LOG') && USER_LOG == 1){
		Db::table('user_log')->add(['uid'=>$order_res['uid'],'type'=>'pay_success','status'=>201,'time'=>time(),'ip'=>getip(),'appid'=>$order_res['appid']]);//记录日志
	}
}
die();
?>

