銀聯支付開發

最近在接入各種支付機構,鑒于各種產品業務需求不同,具體開發實現不盡相同,不討論具體業務實現。
銀聯官方商家技術服務網站提供了很多可接入產品,本文僅討論以下幾種收款產品:

一、網關支付&WAP支付

先討論這兩種支付方式,比較簡單而且容易理解,這兩種支付方式只需要我們將請求參數值設置好,簽名,組裝成HTML返回給前臺界面[java:response.getWriter().write()]即可。
HTML報文示例:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<form id="pay_form" action="https://101.231.204.80:5000/gateway/api/frontTransReq.do" method="post">
<input type="hidden" name="txnType" id="txnType" value="01" />
<input type="hidden" name="frontUrl" id="frontUrl" value="http://127.0.0.1:8080/ACPSample_B2C/frontRcvResponse" />
<input type="hidden" name="channelType" id="channelType" value="07" />
<input type="hidden" name="currencyCode" id="currencyCode" value="156" />
<input type="hidden" name="merId" id="merId" value="777290058110048" />
<input type="hidden" name="txnSubType" id="txnSubType" value="01" />
<input type="hidden" name="txnAmt" id="txnAmt" value="10000" />
<input type="hidden" name="version" id="version" value="5.0.0" />
<input type="hidden" name="signMethod" id="signMethod" value="01" />
<input type="hidden" name="backUrl" id="backUrl" value="http://222.222.222.222:8080/ACPSample_B2C/BackRcvResponse" />
<input type="hidden" name="certId" id="certId" value="68759663125" />
<input type="hidden" name="encoding" id="encoding" value="UTF-8" />
<input type="hidden" name="bizType" id="bizType" value="000201" />
<input type="hidden" name="signature" id="signature" value="q75cUw1E90Z/3zoPLoaWwOsHoiLmw4PvD1xgUIapsxKY3tcQpHmI/Y/4oKsG3lli4DpU63EoZScTEZNjdOvorAd5+DTSmKNLECVSBxy7mRTfTVISX/jYuVuc87ogdro8GpT4sHaY0jwVjp1dWalOSQ/jfoYniAggUuhSgQtz/0dSH//R4GVa3sP22jJjHWeWUVFJi5bMNeYe57qqcdZ5Ga04rnKnGuIpIQC3I3GosKziRtRGjdo+OYFmbl28W3QwB5qohG1QIqPvwpDM6WUlVbStuEVBf/FwpZ8yuai8WXOU+GQ9kZYuRSoSDNrRR9/jmYqkwyJDEMtWsl9pehQ4Og==" />
<input type="hidden" name="orderId" id="orderId" value="20160303100902" />
<input type="hidden" name="txnTime" id="txnTime" value="20160303100902" />
<input type="hidden" name="accessType" id="accessType" value="0" />
</form>
<script type="text/javascript">document.all.pay_form.submit();</script>
</body>
</html>

不清楚的可以試試復制下上面的代碼保存為.html格式的文檔,然后用瀏覽器打開,即可跳轉到銀聯頁面,付款成功后銀聯會通過你請求參數中的backUrl通知你。

二、手機控件支付

手機控件支付更簡單,不用組裝報文,但是流程上與網頁支付不同,需要先跟銀聯交互一次,拿到tn(銀聯受理訂單號),然后客戶端就可以調起銀聯手機控件進行支付了。

三、無跳轉支付

介紹無跳轉支付之前,需要先了解銀聯的兩個概念:

  • 后臺消費
  • 前臺消費。

前臺消費:通過瀏覽器提交請求到銀聯的消費。
后臺消費:直接通過商戶后臺提交請求到銀聯完成支付,相對于前臺消費,無需頁面跳轉。

無跳轉支付就是后臺支付,主要是為了方便用戶完成交互過程(前提是用戶銀聯卡已開通銀聯全渠道支付),用戶選擇銀聯卡/輸入卡號后,向銀聯“獲取短信”接口發送獲取短信驗證碼請求,銀聯會將短信驗證碼發送到卡號(accNo)對應的綁定手機上,用戶輸入短信驗證碼后,后臺將卡號(accNo)和短信驗證碼(smsCode)提交到銀聯,即可完成消費過程。

所以后臺消費的整個過程可以理解為這樣(假設卡已經開通了銀聯全渠道消費):
客戶端/前臺界面選擇銀行卡/輸入卡號-->點擊獲取短信-->后臺發送報文到銀聯獲取短信驗證碼-->銀聯將短信驗證碼發送到卡號綁定的手機-->用戶輸入驗證碼-->點擊“消費/購買”-->后臺將包含卡號(accNo)和短信驗證碼(smsCode)的報文發送到銀聯-->消費完成。

```sequence
客戶端->客戶端: 選擇卡/輸入卡號
客戶端->后臺:請求短信驗證碼
后臺->銀聯:調用發送短信接口
note right of 銀聯:發送驗證碼到\n卡號綁定的手機
note right of 客戶端:用戶輸入驗證碼
客戶端->后臺:消費
后臺->銀聯:發送消費報文\n包含accNo和smsCode
```
以上代碼在stackedit可以生成此圖
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一:介紹 項目中要用到支付功能,需要支付寶支付[http://www.lxweimin.com/p/af9b584...
    Swift社區閱讀 5,315評論 5 18
  • 中國銀聯-商家技術服務(銀聯支付開發者平臺)(中國銀聯開放平臺)(JAVA,安卓,iOS,PHP技術文檔)地址:h...
    加基特閱讀 1,154評論 0 1
  • 以前我不贊同丘吉爾的名言:“國際舞臺上沒有永恒的朋友,也沒有永恒的敵人,只有永恒的利益。” 現在看來我太幼稚了。
    藍騁閱讀 190評論 0 0
  • 我喜歡做做菜,但我還真的挺討厭摘菜,尤其是韭菜。每次父親買來韭菜,都要把我叫著一起摘韭菜。韭菜的難理之處在于泥巴特...
    半糖西柚戳戳樂閱讀 236評論 0 0
  • 正值春日,無比舒心的季節——陽光微風、鳥語花香。 冬日離去時拂下的枯葉還未歸根,新綠便已迫不及待地遍滿枝頭,繁花也...
    吉祥娃娃olala閱讀 1,921評論 17 84