激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - 微信支付java版V3驗(yàn)證數(shù)據(jù)合法性(Deom)

微信支付java版V3驗(yàn)證數(shù)據(jù)合法性(Deom)

2020-06-17 11:47最孤單的想念 JAVA教程

這篇文章主要介紹了微信支付java版V3驗(yàn)證數(shù)據(jù)合法性(Deom)的相關(guān)資料,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下

1.1 解析微信回調(diào)數(shù)據(jù)

?
1
2
3
4
5
6
7
8
9
10
11
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();
/** 獲取微信調(diào)用notify_url的返回XML信息 */
String result = new String(outSteam.toByteArray(), "utf-8");

result結(jié)果就是微信回調(diào)返回的XML數(shù)據(jù)。

1.2 解析微信返回的XML數(shù)據(jù)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
* 傳入微信回調(diào)返回的XML信息
* 以Map形式返回便于取值
* dom4j解析XML,返回第一級元素鍵值對。如果第一級元素有子節(jié)點(diǎn),則此節(jié)點(diǎn)的值為空
* @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格式數(shù)據(jù),取值以smap.get("字段名")來獲取數(shù)據(jù)。

1.3 驗(yàn)證微信返回簽名的合法性

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
* 是否微信V3簽名,規(guī)則是:按參數(shù)名稱a-z排序,遇到空值的參數(shù)不參加簽名
* 傳入微信返回信息解析后的SortedMap格式參數(shù)數(shù)據(jù)
* 驗(yàn)證消息是否是微信發(fā)出的合法消息
* @param smap
* @param apiKey 設(shè)置的密鑰
* @return 驗(yàn)證結(jié)果
*/
@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);
/** 驗(yàn)證的簽名 */
String sign = MD5Util.MD5Encode(sb.toString(), "utf-8").toUpperCase();
/** 微信端返回的合法簽名 */
String validSign = ((String) smap.get("sign")).toUpperCase();
return validSign.equals(sign);
}

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

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

原文鏈接:http://www.cnblogs.com/solang/archive/2016/09/19/5884835.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人自拍视频在线观看 | 欧美成人精品一区二区三区 | 羞羞网站在线看 | 色综合777 | 毛片免费观看完整版 | 久久精品无码一区二区日韩av | 欧美性受xxxx人人本视频 | 亚洲影院在线 | 国产99视频精品免视看9 | 久久综合综合久久 | 久久久噜噜噜久久熟有声小说 | 看国产一级毛片 | 欧美中文字幕一区二区三区亚洲 | 轻点插视频 | 一级免费黄色免费片 | 亚洲精品成人久久久 | 91九色丨porny丨国产jk | 亚洲午夜电影 | 国产一区二区高清在线 | 国产刺激高潮av | 国产91成人 | 欧美成人鲁丝片在线观看 | 1314成人网 | 一级做受毛片免费大片 | 91高清网站 | 手机国产乱子伦精品视频 | av在线观 | 久久久久久久久浪潮精品 | 国产呻吟 | av在线免费观看网 | 亚洲自拍第一 | 成人免费福利网站 | 国产在线观看91精品 | 免费看欧美黑人毛片 | 天天操天天操天天操天天操天天操天天操 | 国产免费观看一区二区三区 | 法国性经典xxxhd | 成人在线免费视频播放 | 18欧美性xxxx极品hd | 成人福利视频网站 | 亚洲国产美女视频 |