<?php
defined ( 'G_IN_SYSTEM' ) or exit ( 'No permission resources.' );
ini_set ( "display_errors", "ON" );
class unionpay_url extends SystemAction {
	public function __construct() {
		$this->db = System::load_sys_class ( 'model' );
	}
	public function qiantai() {
		sleep(2);
		require_once ("lib/unionpay/quickpay_service.php");
		$response = new quickpay_service ( $_POST, quickpay_conf::RESPONSE );
		$arr_ret = $response->get_args ();
		$out_trade_no = $arr_ret ['orderNumber'];	//商户订单号
		$dingdaninfo = $this->db->GetOne("select * from `@#_member_addmoney_record` where `code` = '$out_trade_no'");
		if(!$dingdaninfo || $dingdaninfo['status'] == '未付款'){
			_message("支付失败");
		}else{
			if(empty($dingdaninfo['scookies'])){
				_message("充值成功!",WEB_PATH."/member/home/userbalance");
			}else{
				if($dingdaninfo['scookies'] == '1'){
					_message("支付成功!",WEB_PATH."/member/cart/paysuccess");
				}else{
					header ( "location: " . WEB_PATH . "/mobile/cart/paysubmit/money/nobank/{$dingdaninfo ['money']}/{$dingdaninfo ['score']}" );
					exit ();
					// _message("商品还未购买,请重新购买商品!",WEB_PATH."/member/cart/cartlist");
				}
					
			}
		}
	}
	
	public function houtai() {
		require_once ("lib/unionpay/quickpay_service.php");
		$pay_type =$this->db->GetOne("SELECT * from `@#_pay` where `pay_class` = 'unionpay' and `pay_start` = '1'");
		$pay_type_key = unserialize($pay_type['pay_key']);
		$key =  $pay_type_key['key']['val'];		//支付KEY
		$partner =  $pay_type_key['id']['val'];		//支付商号ID
		
		$response = new quickpay_service ( $_POST, quickpay_conf::RESPONSE );
		if ($response->get('respCode') != quickpay_service::RESP_SUCCESS) {
			$err = sprintf("Error: %d => %s", $response->get('respCode'), $response->get('respMsg'));
			throw new Exception($err);
		}
		$arr_ret = $response->get_args ();
		
		$this->db->Autocommit_start();
		$dingdaninfo = $this->db->GetOne("select * from `@#_member_addmoney_record` where `code` = '".$arr_ret['orderNumber']."' and `status` = '未付款' for update");
		if(!$dingdaninfo){ exit;}	//没有该订单,失败
		$c_money = intval($dingdaninfo['money']);
		$uid = $dingdaninfo['uid'];
		$time = time();
		$up_q1 = $this->db->Query("UPDATE `@#_member_addmoney_record` SET `pay_type` = '银联在线支付', `status` = '已付款' where `id` = '$dingdaninfo[id]' and `code` = '$dingdaninfo[code]'");
		$up_q2 = $this->db->Query("UPDATE `@#_member` SET `money` = `money` + $c_money where (`uid` = '$uid')");
		$up_q3 = $this->db->Query("INSERT INTO `@#_member_account` (`uid`, `type`, `pay`, `content`, `money`, `time`) VALUES ('$uid', '1', '账户', '充值', '$c_money', '$time')");
		
		if($up_q1 && $up_q2 && $up_q3){
			$this->db->Autocommit_commit();
		}else{
			$this->db->Autocommit_rollback();
			echo "fail";exit;
		}
		if(empty($dingdaninfo['scookies'])){
			echo "success";exit;	//充值完成
		}
		$scookies = unserialize($dingdaninfo['scookies']);
		$pay = System::load_app_class('pay','pay');
		$pay->scookie = $scookies;
		
		$ok = $pay->init($uid,$pay_type['pay_id'],'go_record');	//云购商品
		if($ok != 'ok'){
			_setcookie('Cartlist',NULL);
			echo "fail";exit;	//商品购买失败
		}
		$check = $pay->go_pay(1);
		if($check){
			$this->db->Query("UPDATE `@#_member_addmoney_record` SET `scookies` = '1' where `code` = '$out_trade_no' and `status` = '已付款'");
			_setcookie('Cartlist',NULL);
			echo "success";exit;
		}else{
			echo "fail";exit;
		}
	}
}