Comment se connecter au serveur avec l'API de développement WeChat, présentons-le ci-dessous
1. Explication
* Cet exemple est développé et démontré selon le document de développement de WeChat: http://mp.weixin.qq.com/wiki/home/index.html la dernière version (4/3/2016 5:34:36 PM).
* Plateforme d'édition: myeclipse10.7 + win32 + jdk1.7 + tomcat7.0
* Serveur: Alibaba Cloud Windows Server 2008 64bits
* Exigences de la plate-forme: Méthode d'annotation d'utilisation du servlet, Exigences de la plate-forme: J2EE6.0 +, JDK6.0 +, Tomcat7.0 +
* La démo se concentre davantage sur l'analyse de l'API.
* Pour les instructions de test, chaque cas de test est indépendant et ne dépend pas d'autres méthodes. Ne considérez pas beaucoup l'emballage.
* La démonstration est effectuée autant que possible selon les exigences de l'API. Objectif: Comprendre comment le document est utilisé et réaliser l'effet de l'apprentissage d'un exemple et de l'appliquer à d'autres.
* Exigences de connaissances: Fondation Java solide, compréhension des connaissances en communication du réseau HTTP, ayant une compréhension suffisante de Javaweb, analyse JSON
* Heure actuelle: 3/3/2016 17:32:57, cette fois prévaudra.
2. Document original (Résumé)
Adresse du document: http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html
Pour accéder au développement de la plate-forme publique WeChat, les développeurs doivent suivre les étapes suivantes:
1. Remplissez la configuration du serveur
2. Vérifiez la validité de l'adresse du serveur
3. Implémentez la logique commerciale en fonction des documents d'interface
3. Compréhension du document
Vérifiez la validité de l'adresse du serveur
1. L'API est introduite comme ceci:
Une fois que le développeur a soumis les informations, le serveur WeChat enverra une demande GET à l'URL d'adresse du serveur rempli. La demande GET comporte quatre paramètres: signature, horodatage, nonce, echostr
Le développeur vérifie la demande en vérifiant la signature (il existe une méthode de vérification ci-dessous).
Si vous confirmez que la demande GET provient du serveur WeChat, veuillez retourner le contenu du paramètre ECHOSTR tel qu'il est, et l'accès prend effet et devient un développeur avec succès. Sinon, l'accès échoue.
Le processus de chiffrement / vérification est le suivant:
1) Trier Ordre du dictionnaire de jeton, d'horodatage et de nonce
2) Splice trois chaînes de paramètres en une chaîne pour le cryptage SHA1
3) Les chaînes obtenues par le développeur peuvent être comparées à la signature pour identifier la demande provenant de WeChat.
2. Comprendre
Cela signifie que la demande est en mode "Get", et l'accès à la demande renverra quatre paramètres: signature, horodatage, nonce, echostr.
Nous devons accepter ces paramètres, puis les traiter. Si la vérification est réussie, le "Echostr" reçu est renvoyé, sinon la vérification échoue.
La méthode de vérification consiste à trier les trois paramètres acceptés à trois paramètres, horodatage et nonce, puis en cryptage SHA1, et enfin le comparer avec la signature.
* La chaîne cryptée peut être comparée à la signature. S'il est égal [l'API peut ne pas l'expliquer très clairement], renvoyez "Echostr" et le vérifiez avec succès.
3. Réalisez
Créez un servlet coreServlet pour implémenter httpServlet et surcharger la méthode DOGGET.
Préparation des paramètres
// Définit un jeton global, le développeur le définit lui-même. API explique de cette façon: le jeton peut être rempli par le développeur à volonté, // utilisé comme signature de génération (le jeton sera comparé au jeton contenu dans l'URL de l'interface pour vérifier la sécurité) String Token = "WGYSCSF"; // Selon l'API Description, obtenir les quatre paramètres ci-dessus Signature de chaîne = req.getParameter ("Signature"); String TimeStamp = req.getParameter ("Timestamp"); String nonce = req.getParameter ("nonce"); String echostr = req.getParameter ("eChostr");Opération selon les trois étapes mentionnées par l'API
// Étape 1: Trier Ordre du dictionnaire de jetons, horodatage, chaîne nonce [] parms = new String [] {Token, horodatamp, nonce}; // mettez les chaînes qui doivent être triées dictionnaire dans les exigences de la table SHA1 Encryption [Baidu: Java Sha1 Encryption] // Splice la chaîne String ParmsString = ""; // Notez qu'il ne peut pas = null ici. pour (int i = 0; i <parms.length; i ++) {ParmsString + = Parms [i];} // Sha1 Encryption String MPARMS = NULL; // Le résultat après cryptage ... // Cet endroit est la mise en œuvre de la demande de SHA1, vient du serveur WeChat, veuillez renvoyer le contenu du paramètre ECHOSTR tel qu'il est, et l'accès prend effet et devient un développeur avec succès, sinon l'accès échoue. * /// Étape 3: Le développeur obtient la chaîne cryptée et peut la comparer avec la signature pour identifier que la demande provient de l'accès réussi de WeChat. System.out.println (tag + ":" + mparms + "--->" + signature); if (mparms.equals (signature)) {// system.out.println (tag + ":" + mparms + "---->" + signature); printwriter.write (eChostr);} else {// Access a échoué, pas besoin d'écrire // System.out.println (tag + "Access a échoué");}4. Remplissez la configuration du serveur
1) L'inclusion de la configuration du serveur de contenu est principalement l'interface d'accès au serveur et WeChat que nous devons configurer après avoir écrit notre propre code pour accéder à la plate-forme de développement WeChat.
2) L'opération du serveur ouvre le Tomcat du serveur et placez le code écrit dans le fichier WebApps.
3) Fonctionnement de la plate-forme publique WeChat
* Demandez un compte de test WeChat (scannez directement avec WeChat pour vous connecter): http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
* Ouvrez le numéro de test de la plate-forme publique WeChat et configurez les informations de configuration de l'interface. La configuration est la suivante
URL: http: // ip / weixinapidemo / coreservlet
Token: WGYSCSF
* Il sera rappelé lors de la soumission, du succès de la configuration et de l'échec.
Tous les codes source d'opération dans cette partie peuvent être utilisés directement
package com.gist.servlet; import java.io.ioexception; import java.io.printwriter; importer java.security.messagedigest; import java.security.nosuchalgorithmexception; import java.util.arrays; importer javax.webervlet.Servlexception; import javax.servlet.annotation.webserflet; javax.servlet.http.httpservlet; Importer javax.servlet.http.httpservletRequest; Importer javax.servlet.http.httpservletResponse; / ** * @Author Gao Yuan </n> Email: [email protected] </n> Blog http://blog.csdn.net/wgyscsf </n> * Période d'écriture 2016-4-3 4:34:05 PM * / @ WebServlet ("/ CoreServlet") Classe publique CoreServlet étend httpservlet {String Tag = "CoreServlet"; / * * Étape 2: Vérifiez la validité de l'adresse du serveur après que le développeur a soumis les informations, le serveur WeChat enverra une demande GET à l'URL d'adresse du serveur rempli. * La demande GET comporte quatre paramètres: signature, horodatage, nonce, echostr * Le développeur vérifie la demande en vérifiant la signature (il existe une méthode de vérification ci-dessous). Si vous confirmez que la demande GET provient du serveur WeChat, veuillez retourner le contenu du paramètre ECHOSTR tel qu'il est, *, l'accès prend effet et devient un développeur avec succès, sinon l'accès échoue. * * Le processus de chiffrement / vérification est le suivant: 1. Trier Ordre du dictionnaire de jeton, horodatage et nonce 2. * Éplice les trois chaînes de paramètres dans une chaîne pour le cryptage SHA1 3. Les chaînes après le développeur obtiennent les chaînes cryptées Variables pour former des séquences. La méthode consiste à former une séquence de petite à grande dans l'ordre alphabétique ou dans l'ordre de petit et grand nombre. * / @Override Protected void doGet (httpServletRequest req, httpServletResponse resp) lève Servlexception, ioException {// set coding req.SetcharAtterencoding ("utf-8"); resp.setContentType ("html / text; charset = utf-8"); resp.SetcharAtterencoding ("UTF-8"); // Obtenez un stream de sortie printwriter printwriter = resp.getWriter (); // Définit un jeton global, le développeur le définit lui-même. L'API explique ceci: le jeton peut être rempli à volonté par le développeur, // utilisé comme signature de génération (le jeton sera comparé au jeton contenu dans l'URL de l'interface pour vérifier la sécurité) Token de chaîne = "WGYSCSF"; // Selon la description de l'API, obtenez les quatre paramètres ci-dessus Signature de chaîne = req.getParameter ("Signature"); String TimeStamp = req.getParameter ("Timestamp"); String nonce = req.getParameter ("nonce"); String echostr = req.getParameter ("eChostr"); // // temp: imprime temporaire, regardez la situation du paramètre de retour // System.out.println (tag + ": signature:" + signature + ", horodat:" // + horodatage + ", nonce:" + nonce + ", echostr:" + echostr); // Accès en fonction du "processus de chiffrement / vérification" mentionné par l'API. Il y a trois étapes dans le total // Étape 1: Trier Ordre du dictionnaire de jeton, horodatage, nonce trois paramètres String [] Parms = nouvelle chaîne [] {jeton, horodatage, nonce}; // les chaînes doivent être triées dans les exigences de l'arrivée // étape 2: Splice (Splice); Encryption // épisser la chaîne String parmsString = ""; // Notez qu'il ne peut pas = null ici. for (int i = 0; i <parms.length; i ++) {parmsString + = parms [i]; } // SHA1 Encryption String mparms = null; // Résultat chiffré MessagediGest digest = null; essayez {digest = java.security.MessagediGest.getInstance ("sha"); } Catch (NosuchalgorithMexception e) {// Bloc de capture généré automatiquement de TODO E.PrintStackTrace (); } digest.update (parmsString.getBytes ()); BYTE MessagediGest [] = digest.digest (); // Créer une chaîne hexagonale stringbuffer hexstring = new StringBuffer (); // Convertir le tableau d'octets en numéro hexadécimal pour (int i = 0; i <messagediGest.length; i ++) {String shahex = Integer.tohexString (MessagediGest [i] & 0xff); if (shahex.length () <2) {hexstring.append (0); } hexstring.append (shahex); } mparms = hexstring.toString (); // Résultat de cryptage / * * Exigences de l'API: Si vous confirmez que la demande GET est du serveur WECHAT, veuillez renvoyer le contenu du paramètre Echostr tel quel, et l'accès prendra effet et deviendra un développeur avec succès. Sinon, l'accès échouera. * / // Étape 3: Le développeur obtient la chaîne cryptée et peut la comparer avec la signature pour identifier que la demande provient de l'accès réussi de WeChat. System.out.println (tag + ":" + mparms + "--->" + signature); if (mparms.equals (signature)) {// system.out.println (tag + ":" + mparms + "---->" + signature); printwriter.write (echostr); } else {// L'accès a échoué, pas besoin d'écrire // System.out.println (tag + "Access a échoué"); }} @Override Protected void doPost (httpServletRequest req, httpservletResponse resp) lève Servlexception, ioException {doGet (req, resp); }}
Le premier article de l'API de développement Java WeChat vous est présenté ici. J'espère que vous continuerez à prêter attention au contenu mis à jour à l'avenir. Merci!