<?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); } }
PHP 銀聯支付
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.