1.1 Analyser les données de rappel WeChat
InputStream InsideRam = request.getInputStream (); byteArrayOutputStream Outsteam = new ByteArrayoutputStream (); byte [] buffer = new Byte [1024]; int len = 0; while ((len = instream.read (tampon))! = -1) {OutSteam.write (Buffer, 0, len);} outsteam.close (); insideRam.close (); / ** obtenez les informations XML de retour de wechat comploy notify_url * / string result = new String (outsteam.toByTearray (), "utf-8"); Le résultat est les données XML renvoyées par le rappel WeChat.
1.2 Analyse des données XML renvoyées par WeChat
/ *** Informations XML renvoyées par le rappel WeChat entrant * Renvoie la valeur facile sous la forme d'une carte * Dom4j PARSES XML et renvoie la paire de valeurs de clé d'élément de premier niveau. Si l'élément de premier niveau a des enfants, la valeur de ce nœud est vide * @param strxml * @ return * @throws documentException * / @ suppresswarnings ("rawtypes") public static tridmap <string, Dom4jxmlparse (string strxml) lance documentException {sriedmap <string, string> scratch = new DocumentHelper.ParseText (strXml); élément root = doc.getrootelement (); for (iterator iterator = root.elementIterator (); iterator.hasnext ();) {élément e = (élément) iterator.next (); smap.put (e.getName (), e.getText ());} return Smoke;} Renvoie les données de format de carte commandées et la valeur est utilisée pour obtenir les données à l'aide de SMAP.get ("Nom de champ").
1.3 Vérifiez la légalité de la signature de retour de WeChat
/ *** SI SIGNER WECHAT V3, les règles sont: Trier par nom de paramètre AZ, et les paramètres qui rencontrent des valeurs vides ne participent pas à la signature * Passez à WeChat pour retourner les données du paramètre du format trimé * @Param Analysis * La clé de la clé par * @return vertification Résultat * / @ @ supresswarnings (" Static boolean iswechatSign (tridmap <string, string> scratch, string apikey) {stringBuffer sb = new StringBuffer (); set es = smoke.entryset (); iterator it = es.iterator (); while (it.hasnext ()) {map.entry entrée = (map.entry) it.next (); string k = (string) entry.getKey (); string v = (string) entry.getValue (); if (! "Sign" .equals (k) && null! = v &&! "". Equals (v) &&! + "&");}} sb.append ("key =" + apikey); / ** Signature vérifiée * / string signe = md5util.md5encode (sb.tostring (), "utf-8"). Toupcercase (); / ** la signature légale renvoyée par le côté wechat * / string Validsign = (((String) smap.get ("signe"). Suggestions personnelles: Avant de vérifier la légitimité de la signature de WeChat, vous pouvez d'abord déterminer si le succès du retour_code et du résultat renvoyé par WeChat est un succès.
Ce qui précède est la légalité des données de vérification de la version Java V3 WECHAT PAY PAY-PAY par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!