現在支付產品種類繁多,涵蓋了線上(手機app、手機網頁、掃碼、公衆號、跨境等)及線下(傳統pos、訂單pos、netpos、卡牌等)的微信、支付寶、銀聯支付業務爲大中型企業提供可靠的聚合支付服務,獲得衆多企業的好評。公司網址:www.ipaynow.cn
聚合支付前一篇文章也介紹過,只要對接一次,便可擁有市面上主流的支付方式,節約開發成本,提高對賬效率;
下面來介紹手機網頁端的支付接入:
1.產品使用場景:
銀聯支付:
用戶在手機網頁中選擇銀聯支付,跳轉到銀聯卡支付頁面。用戶輸入銀行卡號後,會收到銀聯發送的短信驗證碼,輸入驗證碼後完成支付。
支付寶支付:
在手機網頁選擇支付寶支付,跳轉到支付寶網頁。如果手機安裝有支付寶APP,則會自動喚起只需輸入密碼即可完成支付;如果沒有安裝支付寶APP,則需要在瀏覽器中輸入支付寶賬號與密碼完成訂單支付;
流程同支付寶官方(截圖忽略)
微信支付:
產品優勢不做介紹,接過就知道。
產品流程:
(1)用戶通過手機瀏覽器請求商戶頁面,用戶確認訂單後提交訂單信息
(2) 商戶服務端收到用戶請求後,按照現在支付統一下單接口生成請求參數。商戶服務端通過HTTPS工具請求現在支付交易系統
(3) 現在支付交易系統記錄商戶訂單信息,並根據報文信息請求對應支付渠道
(4) 支付渠道返回下單報文
(5) 現在支付交易系統生成返回報文,並將報文返回給商戶服務端
(6) 商戶從現在支付下單返回報文中獲取支付鏈接,並請求支付鏈接跳轉到支付渠道,支付渠道頁面會喚起對應手機App
(7) App提示用戶輸入密碼,用戶在app中輸入支付密碼
(8) 支付渠道確認支付成功後,發送後臺異步通知給現在支付交易系統
(9) 現在支付交易系統確認渠道異步通知後,給商戶服務端發送後臺異步通知
(10) 商戶服務端確認異步通知後,返回確認報文給現在支付。
(11) 銀聯或支付寶渠道,需要用戶在頁面中點擊返回商戶按鈕,然後跳轉到商戶前臺通知頁面
(12) 商戶根據前臺通知展示支付結果。注意,交易狀態以現在支付後臺異步通知爲準。
通知機制:
重複通知機制:現在支付交易系統在第一次通知失敗後,將在30秒後發起第二次通知,如果還是失敗將再隔2分鐘發起第三次通知,以後如果還是不成功,將再間隔10分鐘、30分鐘、60分鐘、2個小時、6個小時、10個小時、15個小時後重複通知。最終在25小時內完成9次重複通知後,將不再繼續重複通知。當然,在每一次通知後,如果收到“success=Y”的應答就停止重複通知。重複通知時間間隔如下:30秒、2分鐘、10分鐘、30分鐘、1小時、2小時、6小時、10小時、15小時。
請求報文樣例:
appId=14897224287****&consumerCreateIp=**.**.**.**&deviceType=0601&frontNotifyUrl=http%3A%2F%2Flocalhost%3A10802%2Ffront&
funcode=WP001&mhtCharset=UTF8&mhtCurrencyType=156&mhtLimitPay=1&mhtOrderAmt=1&mhtOrderDetail=mhtOrderDetail&mhtOrderNam
e=merchantTest&mhtOrderNo=20170101202020001XZ&mhtOrderStartTime=20171012152127&mhtOrderTimeOut=3600&mhtOrderType=01&mht
Reserved=aadfsdfsdf&mhtSignType=MD5&mhtSignature=3265cfee37c93c040eacf992b211a642¬ifyUrl=http%3A%2F%2Flocalhost%3A10
802%2Fnotify&outputType=0&payChannelType=13&version=1.0.0
請求參數:
服務端通知接口接入注意事項:
1.通知方式採用HTTPS協議POST方式通知;
2.報文數據以字符串流的形式放在報文體中,所以直接getParameter是得不到數據的。
數據接收Java版示例代碼:
//獲取通知數據需要從body中流式讀取
BufferedReader reader = req.getReader();
StringBuilder reportBuilder = new StringBuilder();
String tempStr = "";
while((tempStr = reader.readLine()) != null){
reportBuilder.append(tempStr);
}
//報文數據字符串
String reportContent= reportBuilder.toString();