20180803UnionPay銀聯支付

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頁面底部有個 視頻參考(頗有用)

相關文章
相關標籤/搜索