国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

微信支付java版V3驗證數據合法性(Deom)

2019-11-26 13:48:53
字體:
來源:轉載
供稿:網友

1.1 解析微信回調數據

InputStream inStream = request.getInputStream();ByteArrayOutputStream outSteam = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;while ((len = inStream.read(buffer)) != -1) {outSteam.write(buffer, 0, len);}outSteam.close();inStream.close();/** 獲取微信調用notify_url的返回XML信息 */String result = new String(outSteam.toByteArray(), "utf-8");

result結果就是微信回調返回的XML數據。

1.2 解析微信返回的XML數據

/*** 傳入微信回調返回的XML信息* 以Map形式返回便于取值* dom4j解析XML,返回第一級元素鍵值對。如果第一級元素有子節點,則此節點的值為空* @param strXML* @return* @throws DocumentException */@SuppressWarnings("rawtypes")public static SortedMap<String, String> dom4jXMLParse(String strXML) throws DocumentException {SortedMap<String, String> smap = new TreeMap<String, String>();Document doc = DocumentHelper.parseText(strXML);Element root = doc.getRootElement();for (Iterator iterator = root.elementIterator(); iterator.hasNext();) {Element e = (Element) iterator.next();smap.put(e.getName(), e.getText());}return smap;}

返回的是有序的Map格式數據,取值以smap.get("字段名")來獲取數據。

1.3 驗證微信返回簽名的合法性

/*** 是否微信V3簽名,規則是:按參數名稱a-z排序,遇到空值的參數不參加簽名* 傳入微信返回信息解析后的SortedMap格式參數數據* 驗證消息是否是微信發出的合法消息* @param smap* @param apiKey 設置的密鑰* @return 驗證結果*/@SuppressWarnings("rawtypes")public static boolean isWechatSign(SortedMap<String, String> smap,String apiKey) {StringBuffer sb = new StringBuffer();Set es = smap.entrySet();Iterator it = es.iterator();while (it.hasNext()) {Map.Entry entry = (Map.Entry) it.next();String k = (String) entry.getKey();String v = (String) entry.getValue();if (!"sign".equals(k) && null != v && !"".equals(v) && !"key".equals(k)) {sb.append(k + "=" + v + "&");}}sb.append("key=" + apiKey);/** 驗證的簽名 */String sign = MD5Util.MD5Encode(sb.toString(), "utf-8").toUpperCase();/** 微信端返回的合法簽名 */String validSign = ((String) smap.get("sign")).toUpperCase();return validSign.equals(sign);}

個人建議:驗證微信簽名合法性之前可以先判斷微信返回的return_code和result_code是不是SUCCESS。

以上所述是小編給大家介紹的微信支付java版V3驗證數據合法性(Deom),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漠河县| 博乐市| 大悟县| 察雅县| 桃园县| 广平县| 牡丹江市| 三亚市| 宁河县| 清流县| 新密市| 旬邑县| 郧西县| 屯昌县| 富阳市| 图片| 科技| 富川| 白水县| 如皋市| 出国| 河津市| 老河口市| 太原市| 黄浦区| 红原县| 永登县| 新平| 南陵县| 正镶白旗| 南部县| 云梦县| 苏尼特左旗| 当涂县| 册亨县| 昆山市| 商丘市| 民丰县| 呼伦贝尔市| 永兴县| 公安县|