银联支付Java开发
銀聯(lián)的demo寫的不錯,基本上可以直接使用。
首先是對acp_sdk.properties的內(nèi)容修改,注意這個文件的文件名不能進行修改。
對于文件內(nèi)的證書路徑以及證書對應的密碼進行修改。
修改完這個文件后,需要對DemoBase這個類中的frontUrl,backUrl進行修改,這個是銀聯(lián)支付后向服務器通知的前臺以及后臺地址。
frontUrl主要處理的前臺界面展示,backUrl主要處理后臺業(yè)務邏輯。
注意:這兩個地址需要是外網(wǎng)地址,否則將無法收到回調(diào)信息。
然后對于Form_6_2_FrontConsume類中的信息進行相應的修改,直接訪問服務,會返回給你一段html字符串,把這段html直接傳到前臺加到頁面上。這段代碼會自動提交數(shù)據(jù),會彈出銀聯(lián)支付的界面。
注意:測試環(huán)境下,微信瀏覽器無法彈出支付界面,需要換生成環(huán)境的證書才能正常的彈出支付界面。
支付成功后,銀聯(lián)會向你設(shè)置的backUrl發(fā)送成功信息,具體接受方法如下:
String encoding = req.getParameter(SDKConstants.param_encoding);// 獲取銀聯(lián)通知服務器發(fā)送的后臺通知參數(shù)Map<String, String> reqParam = getAllRequestParam(req);System.out.println("reqParam----->" + reqParam.toString());LogUtil.printRequestLog(reqParam);Map<String, String> valideData = null;if (null != reqParam && !reqParam.isEmpty()){Iterator<Entry<String, String>> it = reqParam.entrySet().iterator();valideData = new HashMap<String, String>(reqParam.size());while (it.hasNext()){Entry<String, String> e = it.next();String key = (String) e.getKey();String value = (String) e.getValue();value = new String(value.getBytes(encoding), encoding);valideData.put(key, value);}}//重要!驗證簽名前不要修改reqParam中的鍵值對的內(nèi)容,否則會驗簽不過if (!AcpService.validate(valideData, encoding)){LogUtil.writeLog("驗證簽名結(jié)果[失敗].");//驗簽失敗,需解決驗簽問題}else{LogUtil.writeLog("驗證簽名結(jié)果[成功].");} public static Map<String, String> getAllRequestParam(final HttpServletRequest request){Map<String, String> res = new HashMap<String, String>();Enumeration<?> temp = request.getParameterNames();if (null != temp){while (temp.hasMoreElements()){String en = (String) temp.nextElement();String value = request.getParameter(en);res.put(en, value);//在報文上送時,如果字段的值為空,則不上送<下面的處理為在獲取所有參數(shù)數(shù)據(jù)時,判斷若值為空,則刪除這個字段>//System.out.println("ServletUtil類247行 temp數(shù)據(jù)的鍵=="+en+" 值==="+value);if (null == res.get(en) || "".equals(res.get(en))){res.remove(en);}}}return res;}支付成功后,界面會有一個返回商戶的按鈕,那個按鈕返回的界面就是在frontUrl設(shè)置。獲取回調(diào)信息的方法與上面相同,就是在后面需要把界面導向你想要顯示的界面,順便帶上返回的參數(shù)。
這樣就順利的完成了銀聯(lián)支付的流程。
總結(jié)
以上是生活随笔為你收集整理的银联支付Java开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: boost1.79编译
- 下一篇: Java图像处理