Cómo conectarse al servidor con la API de desarrollo de WeChat, presentámoslo a continuación
1. Explicación
* Este ejemplo se desarrolla y demostró de acuerdo con el documento de desarrollo de WeChat: http://mp.weixin.qq.com/wiki/home/index.html Última versión (4/3/2016 5:34:36 pm).
* Plataforma de edición: myeclipse10.7+win32+jdk1.7+tomcat7.0
* Servidor: Alibaba Cloud Windows Server 2008 64bits
* Requisitos de la plataforma: Método de anotación de uso del servlet, Requisitos de la plataforma: J2EE6.0+, JDK6.0+, Tomcat7.0+
* La demostración se centra más en el análisis de API.
* En aras de las instrucciones de prueba, cada caso de prueba es independiente y no depende de otros métodos. No considere mucho el embalaje.
* La demostración se lleva a cabo tanto como sea posible de acuerdo con los requisitos de la API. Propósito: Comprenda cómo se usa el documento y logra el efecto de aprender de un ejemplo y aplicarlo a otros.
* Requisitos de conocimiento: Fundación Sólida Java, Comprensión del conocimiento de la comunicación de la red HTTP, tener suficiente comprensión de Javaweb, Análisis JSON
* Hora actual: 4/3/2016 5:32:57 PM, esta vez prevalecerá.
2. Documento original (Resumen)
Dirección del documento: http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html
Para acceder al desarrollo de la plataforma pública WeChat, los desarrolladores deben seguir los siguientes pasos:
1. Complete la configuración del servidor
2. Verifique la validez de la dirección del servidor
3. Implementar la lógica empresarial basada en documentos de interfaz
3. Comprensión de documentos
Verifique la validez de la dirección del servidor
1. API se introduce así:
Después de que el desarrollador envíe la información, el servidor WeChat enviará una solicitud GET a la URL de la dirección del servidor completado. La solicitud GET tiene cuatro parámetros: firma, marca de tiempo, nonce, ecostr
El desarrollador verifica la solicitud verificando la firma (hay un método de verificación a continuación).
Si confirma que la solicitud GET proviene del servidor WeChat, devuelva el contenido del parámetro ECHOSTR tal como está, y el acceso surta efecto y se convierte en un desarrollador con éxito. De lo contrario, el acceso falla.
El proceso de cifrado/verificación es el siguiente:
1) Orden de diccionario de clasificación de token, marca de tiempo y nonce
2) empalme tres cadenas de parámetros en una cadena para el cifrado SHA1
3) Las cadenas obtenidas por el desarrollador se pueden comparar con la firma para identificar la solicitud originada de WeChat.
2. Comprender
Significa que la solicitud está en el modo "Get", y acceder a la solicitud devolverá cuatro parámetros: firma, marca de tiempo, nonce, ecostr.
Necesitamos aceptar estos parámetros y luego procesarlos. Si la verificación es exitosa, se devuelve el "ecostr" recibido, de lo contrario la verificación falla.
El método de verificación es ordenar los tres parámetros aceptados token, timestamp y nonce, luego cifrado SHA1, y finalmente compararlo con firma.
*La cadena cifrada se puede comparar con la firma. Si es igual [la API puede no explicarlo muy claramente], regrese "ECHOSTR" y verifíquelo con éxito.
3. Date cuenta
Cree un servlet coreServlet para implementar httpservlet y sobrecargue el método de doget.
Preparación de parámetros
// Establecer un token global, el desarrollador lo establece él mismo. La API explica de esta manera: el token puede ser completado por el desarrollador a voluntad, // utilizado como firma de generación (el token se comparará con el token contenido en la url de la interfaz para verificar la seguridad) token de cadena = "wgyscsf"; // según la descripción de la API, obtenga la firma de cadena de cuatro parámetros anteriores = req.getparameter ("firma"); String timestamp = req.getParameter ("timestamp"); Cadena nonce = req.getParameter ("nonce"); String echostr = req.getParameter ("echostr");Operación de acuerdo con los tres pasos mencionados por la API
// Paso 1: ordenar orden de diccionario de token, timestamp, nonce string [] parms = new String [] {token, timestamp, nonce}; // Ponga las cadenas que deben ser clasificadas por el diccionario en la matriz. Cifrado SHA1 [Baidu: Java Sha1 Cifryption] // empapada la cadena de cadena parmsString = ""; // Tenga en cuenta que no puede = nulo aquí. for (int i = 0; i <parms.length; i ++) {parmsString+= parms [i];} // SHA1 Cifrado de cifrado mParms = null; // El cifrado resultante ... // Este lugar es la implementación del cifrado Sha1, no se publica mParms = hexString.ToString (); // Resultado/ * * * * * * * RETILLOS DE SHA1 IMPRESTA ESTO SE PUNTA MPARMS = HEXSTRING.TOSTRING (); proviene del servidor WeChat, devuelva el contenido del parámetro ECHOSTR tal como está, y el acceso surta efecto y se convierte en un desarrollador con éxito, de lo contrario el acceso falla. */// Paso 3: el desarrollador obtiene la cadena cifrada y puede compararla con la firma para identificar que la solicitud proviene del acceso exitoso de WeChat. System.out.println (tag + ":" + mParms + "--->" + firma); if (mParms.equals (firma)) {// system.out.println (tag + ":" + mParms + "---->" + firma); printWriter.Write (echostr);} else {// Access Falló, no es necesario escribir // System.out.println (Tag + "Access Falling");}4. Complete la configuración del servidor
1) Incluir la configuración del servidor de contenido es principalmente la interfaz de acceso de servidor y WeChat que necesitamos configurar después de escribir nuestro propio código para acceder a la plataforma de desarrollo de WeChat.
2) Operación del servidor Abra el TomCat del servidor y coloque el código escrito en el archivo WebApps.
3) Operación de la plataforma pública de WeChat
*Solicite una cuenta de prueba de WeChat (escanee directamente con WeChat para iniciar sesión): http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
*Abra el número de prueba de la plataforma pública de WeChat y configure la información de configuración de la interfaz. La configuración es la siguiente
Url: http: // ip/weixinapidemo/coreservlet
Token: WGYSCSF
*Se recordará al enviar el éxito de la configuración y el fracaso.
Todos los códigos fuente de operación en esta parte se pueden usar directamente
paquete com.gist.servlet; import java.io.ioException; import java.io.printwriter; import java.security.messagegest; import java.security.nosuchalgorithmexception; import java.util.arrays; import javax.servlet.servletexception; import javax.servletation; javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse;/*** @author gao yuan </n> correo electrónico: [email protected] </n> Blog http://blog.csdn.net/wgyscsf </n> * Período de escritura 2016-4-3 4:34:05 pm */@WebServlet ("/coreservlet") Classervlet de clase pública extiende httpservlet {string tag = "coreServlet"; / * * Paso 2: Verifique la validez de la dirección del servidor después de que el desarrollador envíe la información, el servidor WeChat enviará una solicitud GET a la URL de la dirección del servidor completado. * La solicitud GET tiene cuatro parámetros: firma, timestamp, nonce, ecostr * El desarrollador verifica la solicitud al verificar la firma (hay un método de verificación a continuación). Si confirma que la solicitud GET proviene del servidor WeChat, devuelva el contenido del parámetro ECHOSTR tal como está, *, el acceso surta efecto y se convierte en un desarrollador con éxito, de lo contrario el acceso falla. * * El proceso de cifrado/verificación es el siguiente: 1. Orden de diccionario de clasificación de token, Timestamp y Nonce 2. * Empalme las tres cadenas de parámetros en una cadena para el cifrado SHA1 3. Las cadenas después del desarrollador obtienen la cadena cifrada se pueden comparar con la firma, identificando que la solicitud proviene de WeChat */ * * * * Diccionario (lexicógico * orden de clasificación de la firma es una firma para la firma para que el método de clasificación de la clasificación es un método de clasificación al azar (lexicótica * para la firma de la firma para la firma de la firma para el método de clasificación * Variables para formar secuencias. El método es formar una secuencia de pequeño a grande en orden alfabético o en el orden de números pequeños y grandes. */ @Override Protected void doget (httpservletRequest req, httpservletResponse resp) lanza ServletException, ioexception {// establecer la codificación req.setcharacterEncoding ("UTF-8"); resp.setContentType ("html/text; charset = utf-8"); resp.setcharacteriCoding ("utf-8"); // Get Outtre Stream PrintWriter PrintWriter = resp.getwriter (); // Establecer un token global, el desarrollador lo establece él mismo. API explica esto: el desarrollador puede completar el token a voluntad, // utilizado como firma de generación (el token se comparará con el token contenido en la url de la interfaz para verificar la seguridad) String token = "wgyscsf"; // Según la descripción de la API, obtenga los cuatro parámetros anteriores cadena firma = req.getParameter ("firma"); String timestamp = req.getParameter ("timestamp"); Cadena nonce = req.getParameter ("nonce"); String echostr = req.getParameter ("echostr"); // // temp: Impresión temporal, mire la situación del parámetro de retorno // system.out.println (etiqueta + ": firma:" + firma + ", timestamp:" // + timestamp + ", nonce:" + nonce + ", echostr:" + echostr); // Acceso de acuerdo con el "proceso de cifrado/verificación" mencionado por la API. Hay tres pasos en total // Paso 1: Orden de diccionario de clasificación de token, timestamp, nonce tres parámetros cadena [] parms = new String [] {token, timestamp, nonce}; // Pon las cadenas que deben clasificarse en el diccionario en la matriz. Cifrado // emplome la cadena de cadena parmsString = ""; // Tenga en cuenta que no puede = nulo aquí. for (int i = 0; i <parms.length; i ++) {parmsString+= parms [i]; } // cadena de cifrado SHA1 mParms = null; // Resultado cifrado MessageGest digest = null; intente {digest = java.security.messageGest.getInstance ("sha"); } Catch (nosuchalgorithMexception e) {// TODO BLOQUE DE CABTA AUTO GENERADA E.PRINTSTACKTRACE (); } digest.update (parmsString.getBytes ()); byte messageDigest [] = digest.digest (); // Crear HEX String StringBuffer HexString = new StringBuffer (); // Convertir la matriz de bytes en el número hexadecimal para (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 (); // Resultado de cifrado/ * * Requisitos de la API: Si confirma que la solicitud GET es del servidor WeChat, devuelva el contenido del parámetro ECHOSTR tal como está, y el acceso entrará en vigencia y se convertirá en un desarrollador con éxito. De lo contrario, el acceso fallará. *// Paso 3: el desarrollador obtiene la cadena cifrada y puede compararla con la firma para identificar que la solicitud proviene del acceso exitoso de WeChat. System.out.println (etiqueta + ":" + mparms + "--->" + firma); if (mParms.equals (Signature)) {// System.out.println (tag + ":" + mParms + "---->" + firma); printWriter.Write (ECHOSTR); } else {// Access falló, no es necesario escribir // System.out.println (etiqueta + "Fallado de acceso"); }} @Override protegido void dopost (httpservletRequest req, httpservletResponse resp) arroja servletException, ioexception {doget (req, resp); }}
El primer artículo de Java WeChat Development API se le presenta aquí. Espero que continúe prestando atención al contenido actualizado en el futuro. ¡Gracias!