<?php
require 'inc.php';
@header('Content-Type: text/html; charset=UTF-8');
?>
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>正在为您跳转到支付页面，请稍候...</title>
    <style type="text/css">
body{margin:0;padding:0}
p{position:absolute;left:50%;top:50%;height:35px;margin:-35px 0 0 -160px;padding:20px;font:bold 16px/30px "宋体",Arial;background:#f9fafc url(./assets/img/loading.gif) no-repeat 20px 20px;text-indent:40px;border:1px solid #c5d0dc}
#waiting{font-family:Arial}
    </style>
</head>
<body>
<?php
$type=isset($_GET['type'])?$_GET['type']:exit('No type!');
$orderid=isset($_GET['orderid'])?$_GET['orderid']:exit('No orderid!');
if(!is_numeric($orderid))exit('订单号不符合要求!');
$row=$DB->getRow("SELECT * FROM pre_pay WHERE trade_no=:trade_no LIMIT 1", [':trade_no'=>$orderid]);
if(!$row['trade_no'])exit('该订单号不存在，请返回来源地重新发起请求！');
if($row['money']=='0' || !preg_match('/^[0-9.]+$/', $row['money']))exit('订单金额不合法');
if($row['status']>=1)exit('该订单已支付完成，请<a href="/">返回重新生成订单</a>');

$interface_id = isset($row['interface_id']) ? intval($row['interface_id']) : 0;
if($interface_id > 0){
	$interface = $DB->getRow("SELECT * FROM pre_pay_interface WHERE id='{$interface_id}' LIMIT 1");
	if(!$interface){
		exit('支付接口不存在，请联系管理员');
	}
	$interface_type = $interface['interface_type'];
	$interface_config = json_decode($interface['config'], true);
	
	$DB->exec("UPDATE `pre_pay` SET `type`=:type,channel=:channel WHERE `trade_no`=:trade_no", [':type'=>$type, ':channel'=>$interface_type, ':trade_no'=>$orderid]);
	
	if($interface_type == 'alipay_official'){
		// 从接口表加载支付宝配置
		if($interface_config){
			if(isset($interface_config['appid'])) $conf['alipay_appid'] = $interface_config['appid'];
			if(isset($interface_config['publickey'])) $conf['alipay_publickey'] = $interface_config['publickey'];
			if(isset($interface_config['privatekey'])) $conf['alipay_privatekey'] = $interface_config['privatekey'];
		}
		if(strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger')!==false){
			include(SYSTEM_ROOT.'alipay/wxopen.php');
			exit;
		}
		$ordername = !empty($conf['ordername'])?ordername_replace($conf['ordername'],$row['name'],$orderid):$row['name'];
		
		if(checkmobile()==true){
			require_once(SYSTEM_ROOT."alipay/model/builder/AlipayTradeWapPayContentBuilder.php");
			require_once(SYSTEM_ROOT."alipay/AlipayTradeService.php");
			
			$payRequestBuilder = new AlipayTradeWapPayContentBuilder();
			$payRequestBuilder->setSubject($ordername);
			$payRequestBuilder->setTotalAmount($row['money']);
			$payRequestBuilder->setOutTradeNo($orderid);
			
			$aop = new AlipayTradeService($config);
			echo $aop->wapPay($payRequestBuilder);
		}else{
			require_once(SYSTEM_ROOT."alipay/model/builder/AlipayTradePagePayContentBuilder.php");
			require_once(SYSTEM_ROOT."alipay/AlipayTradeService.php");
			
			$payRequestBuilder = new AlipayTradePagePayContentBuilder();
			$payRequestBuilder->setSubject($ordername);
			$payRequestBuilder->setTotalAmount($row['money']);
			$payRequestBuilder->setOutTradeNo($orderid);
			
			$aop = new AlipayTradeService($config);
			echo $aop->pagePay($payRequestBuilder);
		}
	}elseif($interface_type == 'alipay_face'){
		if(strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger')!==false){
			include(SYSTEM_ROOT.'alipay/wxopen.php');
			exit;
		}
		echo "<script>window.location.href='./alipay.php?trade_no={$orderid}';</script>";
	}elseif($interface_type == 'qqpay_official'){
		if(checkmobile()==true){
			echo "<script>window.location.replace('./qqwappay.php?trade_no={$orderid}');</script>";
		}else{
			echo "<script>window.location.replace('./qqpay.php?trade_no={$orderid}');</script>";
		}
	}elseif($interface_type == 'wxpay_official'){
		if(strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger')!==false){
			echo "<script>window.location.replace('./wxjspay.php?trade_no={$orderid}&d=1');</script>";
		}elseif(checkmobile()==true){
			echo "<script>window.location.replace('./wxwappay.php?trade_no={$orderid}');</script>";
		}else{
			echo "<script>window.location.replace('./wxpay.php?trade_no={$orderid}');</script>";
		}
	}elseif($interface_type == 'epay'){
		require_once(SYSTEM_ROOT."epay/epay.config.php");
		require_once(SYSTEM_ROOT."epay/epay_submit.class.php");
		
		$alipay_config['partner'] = $interface_config['pid'];
		$alipay_config['key'] = $interface_config['key'];
		$alipay_config['apiurl'] = $interface_config['url'];
		
		$parameter = array(
			"pid" => trim($alipay_config['partner']),
			"type" => $type,
			"notify_url"	=> $siteurl.'epay_notify.php',
			"return_url"	=> $siteurl.'epay_return.php',
			"out_trade_no"	=> $orderid,
			"name"	=> $row['name'],
			"money"	=> $row['money'],
			"sitename"	=> $conf['sitename']
		);
		
		$alipaySubmit = new AlipaySubmit($alipay_config);
		if(is_https() && substr($alipay_config['apiurl'],0,7)=='http://'){
			$jump_url = $alipaySubmit->buildRequestUrl($parameter);
			echo "<script>window.location.replace('{$jump_url}');</script>";
		}else{
			$html_text = $alipaySubmit->buildRequestForm($parameter, 'POST', "正在跳转");
			echo $html_text;
		}
	}else{
		exit('该支付接口类型不支持');
	}
}else{
	exit('该订单未配置支付接口');
}

?>
<p>正在为您跳转到支付页面，请稍候...</p>
</body>
</html>