LNMP環境下開發的銀聯支付(測試環境)
1.準備條件
a.銀聯支持API:https://open.unionpay.com/ajweb/help/apiphp
b.選擇開發軟件包html
圖示:linux
c.我選擇:web
網關支付開發:https://open.unionpay.com/ajweb/product/newProDetail?proId=1windows
d.獲取測試信息api
第一步:在「個人產品」選擇測試 項目測試
第二步:在「測試參數」中獲取測試數據網站
圖示:編碼
2.代碼配置
1.下載網關開發DEMO加密
2.修改sdk/acp_sdk.ini 配置文件信息
- ;後臺通知地址,填寫接收銀聯後臺通知的地址,必須外網能訪問
- acpsdk.backUrl=http://xxxx/Pay/webUnionPay
- ;前臺通知地址,填寫處理銀聯前臺通知的地址,必須外網能訪問
- acpsdk.frontUrl=http://xxxx/Pay/webUnionPay
- ;;;;;;;;;;;;;;;;;;;;;;;;;入網測試環境簽名證書配置 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; 多證書的狀況證書路徑爲代碼指定,可不對此塊作配置。
- ; 簽名證書路徑,必須使用絕對路徑,若是不想使用絕對路徑,能夠自行實現相對路徑獲取證書的方法;測試證書全部商戶共用開發包中的測試簽名證書,生產環境請從cfca下載獲得。
- ; 測試環境證書位於assets/測試環境證書/文件夾下,請複製到d:/certs文件夾。生產環境證書由業務部門郵件發送。
- ; windows樣例:
- acpsdk.signCert.path=D:/certs/acp_test_sign.pfx
- ; linux樣例(注意:在linux下讀取證書須要保證證書有被應用讀的權限)(後續其餘路徑配置也同此條說明)
- ;acpsdk.signCert.path=/SERVICE01/usr/ac_frnas/conf/ACPtest/acp_test_sign.pfx
- ; 簽名證書密碼,測試環境固定000000,生產環境請修改成從cfca下載的正式證書的密碼,正式環境證書密碼位數需小於等於6位,不然上傳到商戶服務網站會失敗
- acpsdk.signCert.pwd=000000
- ;;;;;;;;;;;;;;;;;;;;;;;;;;加密證書配置;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; 敏感信息加密證書路徑(商戶號開通了商戶對敏感信息加密的權限,須要對 卡號accNo,pin和phoneNo,cvn2,expired加密(若是這些上送的話),對敏感信息加密使用)
- acpsdk.encryptCert.path=d:/certs/acp_test_enc.cer
- ;;;;;;;;;;;;;;;;;;;;;;;;;;驗簽證書配置;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ; 驗籤中級證書(證書位於assets/測試環境證書/文件夾下,請複製到d:/certs文件夾)
- acpsdk.middleCert.path=D:/certs/acp_test_middle.cer
- ; 驗籤根證書(證書位於assets/測試環境證書/文件夾下,請複製到d:/certs文件夾)
- acpsdk.rootCert.path=D:/certs/acp_test_root.cer
3.將demo/中三個文件代碼簡單修改(本人只保留其中php代碼),就實現銀聯支付流程。
4.在搭建的本地環境中直接訪問xxx/Form_6_2_FrontConsume.php。成功發起支付
發送支付請求:
- private function webPay($datas){
- global $UnionPayInfo;
- $params = array(
- //如下信息非特殊狀況不須要改動
- 'version' => com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->version, //版本號
- 'encoding' => 'utf-8', //編碼方式
- 'txnType' => '01', //交易類型
- 'txnSubType' => '01', //交易子類
- 'bizType' => '000201', //業務類型
- 'frontUrl' => com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->frontUrl, //前臺通知地址
- 'backUrl' => com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->backUrl, //後臺通知地址
- 'signMethod' => com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->signMethod, //簽名方法
- 'channelType' => '07', //渠道類型,07-PC,08-手機
- 'accessType' => '0', //接入類型
- 'currencyCode' => '156', //交易幣種,境內商戶固定156
- //TODO 如下信息須要填寫
- 'merId' => $UnionPayInfo['merId'], //商戶代碼,請改本身的測試商戶號,此處默認取demo演示頁面傳遞的參數
- 'orderId' => $datas["orderId"], //商戶訂單號,8-32位數字字母,不能含「-」或「_」,此處默認取demo演示頁面傳遞的參數,能夠自行定製規則
- 'txnTime' => date('YmdHis'), //訂單發送時間,格式爲YYYYMMDDhhmmss,取北京時間,此處默認取demo演示頁面傳遞的參數
- 'txnAmt' => $datas["txnAmt"], //交易金額,單位分,此處默認取demo演示頁面傳遞的參數
- // 訂單超時時間。
- // 超過此時間後,除網銀交易外,其餘交易銀聯繫統會拒絕受理,提示超時。 跳轉銀行網銀交易若是超時後交易成功,會自動退款,大約5個工做日金額返還到持卡人帳戶。
- // 此時間建議取支付時的北京時間加15分鐘。
- // 超過超時時間調查詢接口應答origRespCode不是A6或者00的就能夠判斷爲失敗。
- 'payTimeout' => date('YmdHis', strtotime('+15 minutes')),
- );
- com\unionpay\acp\sdk\AcpService::sign ( $params );
- $uri = com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->frontTransUrl;
- $html_form = com\unionpay\acp\sdk\AcpService::createAutoFormHtml( $params, $uri );
- echo $html_form;
5.下載Demo頁面底部有個 視頻參考(頗有用)