微信付出java版V3驗證數據正當性(Deom)。本站提示廣大學習愛好者:(微信付出java版V3驗證數據正當性(Deom))文章只能為提供參考,不一定能成為您想要的結果。以下是微信付出java版V3驗證數據正當性(Deom)正文
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),願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!