1.1 WECHATコールバックデータを分析します
inputstream instream = request.getInputStream(); bytearrayoutputStream outsteam = new bytearrayoutputStream(); byte [] buffer = new byte [1024]; int len = 0; len);} outsteam.close(); instream.close();/** wechatのreturn xml情報を取得しますnotify_url*/string result = new string(outsteam.tobytearray()、 "utf-8");
その結果、WeChatコールバックによって返されるXMLデータが得られます。
1.2 WeChatによって返されたXMLデータの解析
/*** XML入力WeChat CallBackによって返される情報* MAPの形式で簡単な値を返します* DOM4JはXMLを解析し、第1レベルの要素Key-Valueペアを返します。第1レベルの要素が子供を持っている場合、このノードの値は空です* @param strxml* @return* @throws documentexception*/ @ @suppresswarnings( "rawtypes")public static sortedmap <string、string> dom4jxmlparse(strxml)throws documentexception {sortedmap <string = struck> string = string = string = structedmap < documenthelper.parsetext(strxml);要素root = doc.getRootelement();順序付けられたマップ形式データを返し、値はSMAP.get( "フィールド名")を使用してデータを取得するために使用されます。
1.3 Wechatの返品署名の合法性を確認します
/*** WeChat v3に署名するかどうか、ルールは次のとおりです。パラメーター名AZでソートし、空の値に遭遇するパラメーターは署名に参加しません* weChatのパスに合格して情報分析の後にソートマップ形式のパラメーターデータを返します*メッセージがWeChat* @param Smige* @param apikey* @return verifinced*/ @suptis apikey static boolean iswechatsign(sortedmap <string、string> scratch、string apikey){stringbuffer sb = new stringbuffer(); set es = smoke.entryset(); iterator it = esiterator(); 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 &&! ""。 & ");} sb.append(" key = " + apikey);/**検証署名*/string sign = md5util.md5encode(sb.tostring()、" utf-8 ")。 smap.get( "sign"))。touppercase(); return validsign.equals(sign);}個人的な提案:WECHAT署名の正当性を確認する前に、最初にWeChatによって返されたReturn_CodeとResult_Codeが成功しているかどうかを判断できます。
上記は、編集者が紹介したWeChat Pay JavaバージョンV3検証データの合法性です。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!