So stellen wir ihn unten mit der Wechat -Entwicklungs -API mit dem Server eine Verbindung zum Server her
1. Erklärung
* Dieses Beispiel wird gemäß dem WeChat -Entwicklungsdokument entwickelt und demonstriert: http://mp.weixin.qq.com/wiki/home/index.html Neueste Version (03.04.2016 17:34:36 Uhr).
* Bearbeitungsplattform: MyeClipse10.7+Win32+JDK1.7+Tomcat7.0
* Server: Alibaba Cloud Windows Server 2008 64bits
* Plattformanforderungen: Servlet -Nutzung Annotationsmethode, Plattformanforderungen: J2EEE6.0+, JDK6.0+, TOMCAT7.0+
* Demo konzentriert sich mehr auf die API -Parsen.
* Aus Gründen der Testanweisungen ist jeder Testfall unabhängig und hängt nicht von anderen Methoden ab. Betrachten Sie die Verpackung nicht sehr.
* Die Demonstration wird gemäß den API -Anforderungen so weit wie möglich durchgeführt. Zweck: Verstehen Sie, wie das Dokument verwendet wird, und erreichen Sie den Effekt des Lernens aus einem Beispiel und die Anwendung auf andere.
* Wissensanforderungen: Solid Java Foundation, Verständnis von HTTP -Netzwerkkommunikationswissen, genug Verständnis von Javaweb, JSON -Analyse
* Aktuelle Zeit: 03.04.2016 17:32:57 Uhr, diesmal wird es herrschen.
2. Originaldokument (Zusammenfassung)
Dokumentadresse: http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html
Um auf die Entwicklung der Wechat Public Platform zuzugreifen, müssen Entwickler die folgenden Schritte ausführen:
1. Füllen Sie die Serverkonfiguration ein
2. Überprüfen Sie die Gültigkeit der Serveradresse
3. Implementieren Sie die Geschäftslogik basierend auf Schnittstellendokumenten
3.. Dokumentverständnis
Überprüfen Sie die Gültigkeit der Serveradresse
1. API wird so vorgestellt:
Nachdem der Entwickler die Informationen eingereicht hat, sendet der WeChat-Server eine GET-Anforderung an die ausgefüllte Serveradress-URL. Die GET -Anforderung trägt vier Parameter: Signatur, Zeitstempel, Nonce, Echostr
Der Entwickler überprüft die Anforderung, indem es die Signatur überprüfen (es gibt eine Überprüfungsmethode unten).
Wenn Sie bestätigen, dass die GET -Anforderung vom WeChat -Server stammt, geben Sie bitte den EchoStr -Parameterinhalt so zurück, dass der Zugriff wirksam wird und erfolgreich ein Entwickler wird. Andernfalls schlägt der Zugriff fehl.
Der Verschlüsselungs-/Prüfprozess ist wie folgt:
1) Sortieren Sie die Wörterbuchreihenfolge von Token, Timestamp und Nonce
2) Spleißen Sie drei Parameterzeichenfolgen in eine Zeichenfolge für die SHA1 -Verschlüsselung
3) Die vom Entwickler erhaltenen Zeichenfolgen können mit der Signatur verglichen werden, um die von WeChat stammende Anfrage zu identifizieren.
2. Verstehen Sie
Dies bedeutet, dass sich die Anfrage im "GET" -Modus befindet, und der Zugriff auf die Anfrage gibt vier Parameter zurück: Signatur, Zeitstempel, Nonce, Echostr.
Wir müssen diese Parameter akzeptieren und dann verarbeiten. Wenn die Überprüfung erfolgreich ist, wird das empfangene "Echostr" zurückgegeben, andernfalls schlägt die Überprüfung fehl.
Die Verifizierungsmethode besteht darin, das akzeptierte drei Parameter -Token, den Zeitstempel und die Nonce, dann die SHA1 -Verschlüsselung zu sortieren und schließlich mit der Signatur zu vergleichen.
*Die verschlüsselte Zeichenfolge kann mit der Signatur verglichen werden. Wenn es gleich ist [die API kann es möglicherweise nicht sehr klar erklären], geben Sie "Echostr" zurück und überprüfen Sie sie erfolgreich.
3.. Realisieren
Erstellen Sie ein Servlet Coreservlet, um HTTPServlet zu implementieren und die DoGet -Methode zu überladen.
Parametervorbereitung
// Setze ein globaler Token und setzt es selbst. API erklärt auf diese Weise: Das Token kann vom Entwickler nach Belieben ausgefüllt werden, // wird als Generationssignatur verwendet (das Token wird mit dem in der Grenzflächen -URL enthaltenen String -String -Token verglichen. String timestamp = req.getParameter ("timestamp"); String nonce = req.getParameter ("nonce"); String echoStr = req.getParameter ("echostr");Betrieb gemäß den drei von der API genannten Schritten
// Schritt 1: Sortieren Sie die Wörterbuchreihenfolge von Token, Zeitstempel, Nonce String [] PARMS = New String [] {Token, Zeitstempel, Nonce}; // Geben Sie die Saiten ein, die sortiert werden müssen. Wörterbuch in die Array -Arrays. SHA1 -Verschlüsselung [Baidu: Java SHA1 -Verschlüsselung] // Spleißen Sie die String String carmsstring = ""; // Beachten Sie, dass es hier nicht = null kann. für (int i = 0; i <parms.length; i ++) {parmsstring+= parms [i];} // sha1 Verschlüsselungsstring mparms = null; // Das Ergebnis nach der Verschlüsselung ... // Dieser Ort ist die Implementierung der SHA1 -Verschlüsselung, keine Code mparms. Aus dem WeChat -Server stammt, bitte geben Sie den Echostr -Parameterinhalt so zurück, dass der Zugriff wirksam wird und erfolgreich ein Entwickler wird, da der Zugriff ansonsten fehlschlägt. */// Schritt 3: Der Entwickler erhält die verschlüsselte Zeichenfolge und kann sie mit der Signatur vergleichen, um festzustellen, dass die Anforderung vom erfolgreichen Zugriff von WeChat stammt. System.out.println (Tag + ":" + mparms + "--->" + Signature); if (mparms.equals (Signature)) {// system.out.println (Tag + ":" + mparms + "---->" + Signature); printwriter.write (echostr);} else {// Zugriff fehlgeschlagen, keine Notwendigkeit, zurückzuschreiben // system.out.println (Tag + "Zugriff fehlgeschlagen");}4. Füllen Sie die Serverkonfiguration ein
1) einschließlich der Konfiguration des Content -Servers ist hauptsächlich die Server- und WeChat -Zugriffsoberfläche, die wir konfigurieren müssen, nachdem wir unseren eigenen Code geschrieben haben, um auf die WeChat -Entwicklungsplattform zuzugreifen.
2) Serveroperation öffnen Sie den Tomcat des Servers und geben Sie den schriftlichen Code in die WebApps -Datei ein.
3) Betrieb der öffentlichen Plattform WeChat
*Beantragen Sie ein WeChat-Testkonto (scannen Sie direkt mit WeChat an, um sich anzumelden): http://mp.weixin.qqq.com/debug/cgi-ner/sandbox?t=sandbox/login
*Öffnen Sie die Testnummer der WeChat Public Platform und konfigurieren Sie die Konfigurationsinformationen der Schnittstelle. Die Konfiguration ist wie folgt
URL: http: // ip/wixinapidemo/coreservlet
Token: Wgyscsf
*Es wird beim Senden, Konfigurationserfolg und Misserfolg erinnert.
Alle Betriebsquellencodes in diesem Teil können direkt verwendet werden
Paket com.gist.servlet; import java.io.ioxception; import Java.io.printwriter; Import Java.security.Messagedigest; Import Java.Security.NoSuchalgoritHMexception; Importierung von Java.util.Arrays; Importierung Javax.Servlet.Servlet.Servlet.Servlet. javax.servlet.http.httpServlet; importieren javax.servlet.http.httpServletRequest; importieren javax.servlet.http.httpServletresponse;/*** @author gao yuan </n> mail: [email protected] </N. http://blog.csdn.net/wgyscsf </n> * Schreibzeitraum 2016-4-3 4:34:05 PM */@WebServlet ("/coreservlet") öffentliche Klasse Coreservlet erweitert HttpServlet {String tag = "Coreservlet"; / * * Schritt 2: Überprüfen Sie die Gültigkeit der Serveradresse Nachdem der Entwickler die Informationen eingereicht hat, sendet der WeChat-Server eine GET-Anforderung an die ausgefüllte Serveradress-URL. * Die GET -Anforderung trägt vier Parameter: Signatur, Zeitstempel, Nonce, Echostr * Der Entwickler überprüft die Anforderung durch Überprüfung der Signatur (es finden Sie eine Überprüfungsmethode unten). Wenn Sie bestätigen, dass die GET -Anforderung vom WeChat -Server stammt, gibt der Zugriff auf den Echostr -Parameterinhalt zurück und wird erfolgreich ein Entwickler, da der Zugriff ansonsten fehlschlägt. * * Der Verschlüsselungs-/Überprüfungsprozess lautet wie folgt: 1. Sortieren Sie die Wörterbuchreihenfolge von Token, Zeitstempel und Nonce. Sequenzen bilden. Die Methode besteht darin, eine Sequenz von klein bis groß in alphabetischer Reihenfolge oder in der Reihenfolge kleiner und großer Anzahl zu bilden. */ @Override Protected void dagget (httpServletRequest req, httpServletResponse resp) löst ServletException aus, ioException {// codieren codieren req.setcharactercoding ("utf-8"); resp.setContentType ("html/text; charSet = utf-8"); resp.setcharacterencoding ("utf-8"); // Ausgabe Stream PressWriter Printwriter = resp.getWriter (); // Setze ein globaler Token und setzt es selbst. API erklärt Folgendes: Das Token kann vom Entwickler nach Belieben ausgefüllt werden, // wird als Generationssignatur verwendet (das Token wird mit dem in der Grenzflächen -URL enthaltenen Token verglichen, um die Sicherheit zu überprüfen) String token = "wgyscsf"; // Entsprechend der API -Beschreibung die oben genannten vier Parameter String Signature = req.getParameter ("Signatur"); String timestamp = req.getParameter ("timestamp"); String nonce = req.getParameter ("nonce"); String echoStr = req.getParameter ("echostr"); // // temp: Temporärer Druck, sehen Sie sich die Situation der Rückgabeparameter an. // Zugriff gemäß dem von der API erwähnten "Verschlüsselung/Überprüfungsprozess". Insgesamt gibt es drei Schritte. Verschlüsselung // Spleißen Sie die String String carmsstring = ""; // Beachten Sie, dass es hier nicht = null kann. für (int i = 0; i <parms.length; i ++) {parmsstring+= parms [i]; } // sha1 Verschlüsselungszeichenfolge mparms = null; // verschlüsseltes Ergebnis MessagedIGest Digest = null; try {digest = java.security.messagedigest.getInstance ("sha"); } catch (NoSuchalgorithmException e) {// Todo automatisch generierter Catch-Block e.printstacktrace (); } digest.update (carmsstring.getBytes ()); Byte MessagedIGest [] = digest.Digest (); // Hex String StringBuffer HexString = new StringBuffer () erstellen; // Byte -Array in Hexadezimalzahl für (int i = 0; i <MessagedIGest.length; i ++) {String shahex = Integer.TohexString (MessagedIGest [i] & 0xff) konvertieren; if (shahex.length () <2) {hexstring.Append (0); } hexstring.Append (Shahex); } mparms = hexString.toString (); // Verschlüsselungsergebnis/ * * API -Anforderungen: Wenn Sie bestätigen, dass die GET -Anforderung vom WeChat -Server stammt, geben Sie bitte den EchoStr -Parameterinhalt so zurück, dass der Zugriff wirkt und der Entwickler erfolgreich wird. Andernfalls schlägt der Zugang fehl. */ // Schritt 3: Der Entwickler erhält die verschlüsselte Zeichenfolge und kann sie mit der Signatur vergleichen, um festzustellen, dass die Anforderung vom erfolgreichen Zugriff von WeChat stammt. System.out.println (Tag + ":" + Mparms + "--->" + Signatur); if (mparms.equals (signature)) {// system.out.println (Tag + ":" + mparms + "---->" + Signatur); printwriter.write (echostr); } else {// Zugriff fehlgeschlagen, keine zurückschreiben // system.out.println (Tag + "Zugriff fehlgeschlagen"); }} @Override Protected void dopost (httpServletRequest req, httpServletResponse resp) löscht ServletException, ioException {dagget (req, resp); }}
Der erste Artikel der Java Wechat Development API wird Ihnen hier vorgestellt. Ich hoffe, Sie werden in Zukunft weiterhin auf die aktualisierten Inhalte achten. Danke schön!