PHP 銀聯支付

<?php
//銀聯支付   在銀聯官網(open.unionpay.com)下載UnionPay文件  注意簽名證書 當時噁心了好久

class UnionPayAction extends PayAction{
	public function _initialize(){
		vendor('UnionPay.sdk.acp_service');
		//vendor('PCAlipay.lib.alipay_submit');
		//vendor('PCAlipay.lib.alipay_notify');
	}


/**
 * 重要:聯調測試時請仔細閱讀註釋!
 * 
 * 產品:跳轉網關支付產品<br>
 * 交易:消費:前臺跳轉,有前臺通知應答和後臺通知應答<br>
 * 日期: 2015-09<br>
 * 版本: 1.0.0
 * 版權: 中國銀聯<br>
 * 說明:以下代碼只是爲了方便商戶測試而提供的樣例代碼,商戶可以根據自己需要,按照技術文檔編寫。該代碼僅供參考,不提供編碼性能規範性等方面的保障<br>
 * 提示:該接口參考文檔位置:open.unionpay.com幫助中心 下載  產品接口規範  《網關支付產品接口規範》,<br>
 *              《平臺接入接口規範-第5部分-附錄》(內包含應答碼接口規範,全渠道平臺銀行名稱-簡碼對照表)<br>
 *              《全渠道平臺接入接口規範 第3部分 文件接口》(對賬文件格式說明)<br>
 * 測試過程中的如果遇到疑問或問題您可以:1)優先在open平臺中查找答案:
 * 							        調試過程中的問題或其他問題請在 https://open.unionpay.com/ajweb/help/faq/list 幫助中心 FAQ 搜索解決方案
 *                             測試過程中產生的6位應答碼問題疑問請在https://open.unionpay.com/ajweb/help/respCode/respCodeList 輸入應答碼搜索解決方案
 *                          2) 諮詢在線人工支持: open.unionpay.com註冊一個用戶並登陸在右上角點擊“在線客服”,諮詢人工QQ測試支持。
 * 交易說明:1)以後臺通知或交易狀態查詢交易確定交易成功,前臺通知不能作爲判斷成功的標準.
 *       2)交易狀態查詢交易(Form_6_5_Query)建議調用機制:前臺類交易建議間隔(5分、10分、30分、60分、120分)發起交易查詢,如果查詢到結果成功,則不用再查詢。(失敗,處理中,查詢不到訂單均可能爲中間狀態)。也可以建議商戶使用payTimeout(支付超時時間),過了這個時間點查詢,得到的結果爲最終結果。
 */
	public function getsubmit(){
	
		header ( 'Content-type:text/html;charset=utf-8' );
		//include_once $_SERVER ['DOCUMENT_ROOT'] . '/upacp_demo_b2c/sdk/acp_service.php';
		
		$order = M('order');
		$data = $order->where(array('payNum'=>$_GET['order']))->select();
		$money =0;
		foreach($data as $k=>$v){
			$money+=$data[$k]['money'];
		
		}
		/* dump($_GET['number']);
		exit; */
		//$money = $money*100;
		$params = array(
				
			//以下信息非特殊情況不需要改動
			'version' => '5.0.0',                 //版本號
			'encoding' => 'utf-8',				  //編碼方式
			'txnType' => '01',				      //交易類型
			'txnSubType' => '01',				  //交易子類
			'bizType' => '000201',				  //業務類型
			'frontUrl' =>  'http://wwww.****.com/UnionPay/frontUrl',  //前臺通知地址
			'backUrl' => 'http://wwww.****.com/UnionPay/backUrl',	  //後臺通知地址
			'signMethod' => '01',	              //簽名方法
			'channelType' => '07',	              //渠道類型,07-PC,08-手機
			'accessType' => '0',		          //接入類型
			'currencyCode' => '156',	          //交易幣種,境內商戶固定156
			
			//TODO 以下信息需要填寫
			'merId' => '********',		//商戶代碼,請改自己的測試商戶號,此處默認取demo演示頁面傳遞的參數
			'orderId' =>  $_GET['order'],	//商戶訂單號,8-32位數字字母,不能含“-”或“_”,此處默認取demo演示頁面傳遞的參數,可以自行定製規則
			'txnTime' => date('YmdHis',time()),	//訂單發送時間,格式爲YYYYMMDDhhmmss,取北京時間,此處默認取demo演示頁面傳遞的參數
			'txnAmt' => '1',	//交易金額,單位分,此處默認取demo演示頁面傳遞的參數
	// 		'reqReserved' =>'透傳信息',        			//請求方保留域,透傳字段,查詢、通知、對賬文件中均會原樣出現,如有需要請啓用並修改自己希望透傳的數據

			//TODO 其他特殊用法請查看 special_use_purchase.php
		);

		com\unionpay\acp\sdk\AcpService::sign ( $params );
		$uri = com\unionpay\acp\sdk\SDK_FRONT_TRANS_URL;
		$html_form = com\unionpay\acp\sdk\AcpService::createAutoFormHtml( $params, $uri );
		echo $html_form;

	}
	
	public function frontUrl(){
		//dump($_GET);
		//dump($_POST);
		//dump(com\unionpay\acp\sdk\SDK_LOG_FILE_PATH);
		vendor('UnionPay.sdk.acp_service');
			if (isset ( $_POST ['signature'] )) {
				
				$code = com\unionpay\acp\sdk\AcpService::validate ( $_POST ) ? '驗籤成功' : '驗籤失敗';
				if($code=='驗籤成功'){
			
					$out_trade_no = $_POST ['orderId']; //其他字段也可用類似方式獲取
					$respCode = $_POST ['respCode']; //判斷respCode=00或A6即可認爲交易成功
				if($respCode=='00' || $respCode=='A6'){
				
					
					
					$this ->redirect('Member/orderList');
				}else{
					echo '交易失敗';
				}
					
				}else{
					//echo $code;
				}
			} else {
				echo '簽名爲空';
			}
	}
	
	public function backUrl(){
		if (isset ( $_POST ['signature'] )) {
			vendor('UnionPay.sdk.acp_service');
			//echo com\unionpay\acp\sdk\AcpService::validate ( $_POST ) ? '驗籤成功' : '驗籤失敗';
			$orderId = $_POST ['orderId']; //其他字段也可用類似方式獲取
			$respCode = $_POST ['respCode']; //判斷respCode=00或A6即可認爲交易成功
					
			$code = com\unionpay\acp\sdk\AcpService::validate ( $_POST ) ? '驗籤成功' : '驗籤失敗';
			if($code=='驗籤成功'){
			
			
				if($respCode=='00' || $respCode=='A6'){
					
					$this ->redirect('Member/orderList');
					}else{
						echo '交易失敗';
					}
				
				}else{
					//echo $code;
				}
		} else {
			echo '簽名爲空';
		}
		//dump($_GET);
		
	}
	
	
	
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章