1.1 WeChat -Rückrufdaten analysieren
InputStream Instream = Request.GetInputStream (); ByteArrayoutputStream Outsteam = new bytearrayoutputStream (); byte [] buffer = new byte [1024]; int len = 0; while (len = instrenm.read (puffer))! len);} outsteam.close (); instrenm.close ();/** Die Rückgabe-XML-Informationen von WeChat CALL NOTIFY_URL*/STRING ERGEBNIS = NEW STRING (outsteam.tobytearray (), "utf-8");
Das Ergebnis sind die vom WeChat -Rückruf zurückgegebenen XML -Daten.
1.2 Analyse der von WeChat zurückgegebenen XML -Daten
/*** XML-Informationen, die vom eingehenden WeChat-Rückruf zurückgegeben wurden If the first-level element has children, the value of this node is empty* @param strXML* @return* @throws DocumentException */@SuppressWarnings("rawtypes")public static SortedMap<String, String> dom4jXMLParse(String strXML) throws DocumentException {SortedMap<String, String> scratch = new TreeMap<String, String>();Document doc = DocumentHelper.ParSetExt (strxml); element root = doc.getRootelement (); für (iterator iterator = root.elementiterator (); iterator.hasnext ();) {Element e = (Element) iterator.Next (); Gibt die geordneten Kartenformatdaten zurück, und der Wert wird verwendet, um die Daten mit SMAP.get ("Feldname") zu erhalten.
1.3 Überprüfen Sie die Rechtmäßigkeit der Rückkehrsignatur von Wechat
/*** Ob WeChat V3 signiert werden soll, sind die Regeln: sortieren nach Parametername AZ und Parameter, die auf leere Werte stoßen, beteiligen sich nicht an der Signatur* Pass in WeChat zur Rückgabe von SortEdMap -Format -Parameterdaten nach Informationsanalyse. statischer boolean iswechatsign (sortEdMap <String, String> Scratch, String apikey) {StringBuffer SB = new StringBuffer (); set es = rauch.entrySet (); Iterator it = es.iterator (); while (it.hasNext ()) {map.Entry -Eintrag = (map.Entry) it.next (); String k = (String) Eintrag.getkey (); String v = (String) Eintrag.getValue (); if (! "Sign" .Equals (k) && null! = v &&! ". + "&");}}sb.append("key=" + apiKey);/** Verified signature*/String sign = MD5Util.MD5Encode(sb.toString(), "utf-8").toUpperCase();/** The legal signature returned by the WeChat side*/String validSign = ((String) smap.get ("Zeichen")). touppercase (); return validSign.equals (Zeichen);} Persönliche Vorschläge: Bevor Sie die Legitimität der WeChat -Signatur überprüfen, können Sie zunächst feststellen, ob der von WeChat zurückgegebene return_code und result_code erfolgreich sind.
Die oben genannte Legalität der WeChat Pay Java Version V3 Überprüfungsdaten, die Ihnen vom Editor vorgelegt wurden. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!