银联支付Java开发
生活随笔
收集整理的這篇文章主要介紹了
银联支付Java开发
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
銀聯的demo寫的不錯,基本上可以直接使用。
首先是對acp_sdk.properties的內容修改,注意這個文件的文件名不能進行修改。
對于文件內的證書路徑以及證書對應的密碼進行修改。
修改完這個文件后,需要對DemoBase這個類中的frontUrl,backUrl進行修改,這個是銀聯支付后向服務器通知的前臺以及后臺地址。
frontUrl主要處理的前臺界面展示,backUrl主要處理后臺業務邏輯。
注意:這兩個地址需要是外網地址,否則將無法收到回調信息。
然后對于Form_6_2_FrontConsume類中的信息進行相應的修改,直接訪問服務,會返回給你一段html字符串,把這段html直接傳到前臺加到頁面上。這段代碼會自動提交數據,會彈出銀聯支付的界面。
注意:測試環境下,微信瀏覽器無法彈出支付界面,需要換生成環境的證書才能正常的彈出支付界面。
支付成功后,銀聯會向你設置的backUrl發送成功信息,具體接受方法如下:
String encoding = req.getParameter(SDKConstants.param_encoding);// 獲取銀聯通知服務器發送的后臺通知參數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中的鍵值對的內容,否則會驗簽不過if (!AcpService.validate(valideData, encoding)){LogUtil.writeLog("驗證簽名結果[失敗].");//驗簽失敗,需解決驗簽問題}else{LogUtil.writeLog("驗證簽名結果[成功].");} 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);//在報文上送時,如果字段的值為空,則不上送<下面的處理為在獲取所有參數數據時,判斷若值為空,則刪除這個字段>//System.out.println("ServletUtil類247行 temp數據的鍵=="+en+" 值==="+value);if (null == res.get(en) || "".equals(res.get(en))){res.remove(en);}}}return res;}支付成功后,界面會有一個返回商戶的按鈕,那個按鈕返回的界面就是在frontUrl設置。獲取回調信息的方法與上面相同,就是在后面需要把界面導向你想要顯示的界面,順便帶上返回的參數。
這樣就順利的完成了銀聯支付的流程。
總結
以上是生活随笔為你收集整理的银联支付Java开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: boost1.79编译
- 下一篇: Java图像处理