Como conectar -se ao servidor com a API de desenvolvimento do WeChat, vamos apresentá -lo a você abaixo
1. Explicação
* Este exemplo foi desenvolvido e demonstrado de acordo com o documento de desenvolvimento do WeChat: http://mp.weixin.qq.com/wiki/home/index.html versão mais recente (03/05/2016 17:34:36).
* Plataforma de edição: myeclipse10.7+win32+jdk1.7+tomcat7.0
* Servidor: Alibaba Cloud Windows Server 2008 64bits
* Requisitos da plataforma: Método de anotação de uso do servlet, requisitos da plataforma: j2ee6.0+, jdk6.0+, tomcat7.0+
* A demonstração se concentra mais na análise da API.
* Por uma questão de instruções de teste, cada caso de teste é independente e não depende de outros métodos. Não considere muito a embalagem.
* A demonstração é realizada o máximo possível de acordo com os requisitos da API. Objetivo: Entenda como o documento é usado e alcance o efeito de aprender com um exemplo e aplicá -lo a outros.
* Requisitos de conhecimento: Fundação Java Solid, Entendendo o conhecimento de comunicação de rede HTTP, tendo entendimento suficiente de Javaweb, JSON Análise
* Hora atual: 03/04/2016 17:32:57, desta vez prevalecerá.
2. Documento original (Resumo)
Endereço do documento: http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html
Para acessar o desenvolvimento da plataforma pública do WeChat, os desenvolvedores precisam seguir as seguintes etapas:
1. Preencha a configuração do servidor
2. Verifique a validade do endereço do servidor
3. Implemente a lógica de negócios com base em documentos de interface
3. Compreensão do documento
Verifique a validade do endereço do servidor
1. API é introduzida assim:
Depois que o desenvolvedor enviar as informações, o servidor WeChat enviará uma solicitação GET para o URL do endereço do servidor preenchido. A solicitação GET carrega quatro parâmetros: assinatura, registro de data e hora, nonce, ECHOSTR
O desenvolvedor verifica a solicitação verificando a assinatura (há um método de verificação abaixo).
Se você confirmar que a solicitação GET vem do servidor WeChat, retorne o conteúdo do parâmetro ECHOSTR como ele é, e o acesso entra em vigor e se torna um desenvolvedor com sucesso. Caso contrário, o acesso falha.
O processo de criptografia/verificação é o seguinte:
1) Classifique a ordem do dicionário de token, registro de data e hora e nonce
2) Classifique três seqüências de parâmetros em uma corda para criptografia SHA1
3) As seqüências obtidas pelo desenvolvedor podem ser comparadas com a assinatura para identificar a solicitação originada no WeChat.
2. Entenda
Isso significa que a solicitação está no modo "Get", e o acesso à solicitação retornará quatro parâmetros: assinatura, registro de data e hora, nonce, ECHOSTR.
Precisamos aceitar esses parâmetros e depois processá -los. Se a verificação for bem -sucedida, o "ECHOSTR" recebido será retornado, caso contrário, a verificação falhará.
O método de verificação é classificar o token de três parâmetros aceitos, o timestamp e o nonce, depois a criptografia sha1 e, finalmente, compará -lo com a assinatura.
*A sequência criptografada pode ser comparada com a assinatura. Se for igual [a API pode não explicar com muita clareza], retorne "ECHOSTR" e verifique -a com sucesso.
3. Perceba
Crie um núcleo de servlet para implementar o HTTPSERVlet e sobrecarregar o método doget.
Preparação de parâmetros
// Defina um token global, o desenvolvedor o define. API explica a seguinte: o token pode ser preenchido pelo desenvolvedor à vontade, // usado como uma assinatura de geração (o token será comparado com o token contido no URL da interface para verificar a segurança) string token = "wgyscsf"; // de acordo com a descrição da API, "Signature Signature; String timestamp = req.getParameter ("Timestamp"); String nonce = req.getParameter ("nonce"); String ecostr = req.getParameter ("ECHOSTR");Operação de acordo com as três etapas mencionadas pela API
// Etapa 1: Classifique a ordem do dicionário de token, timestamp, nonce string [] parms = new string [] {token, timestamp, nonce}; // coloca as cordas que precisam ser classificadas dicionário em spleats diction: thicticty/ /////////////////////////mentpompom stick diction/ strings the strys diction //rdictário stractrets/ stracty/mictário: ///////////////////////mentpompommentmentment manduy thatretring diction //////0tret strings que precisam ser classificados dicionários de acordo com os requisitos de spleats. Criptografia SHA1 [Baidu: Java SHA1 Criptografia] // Splique the String String parmsstring = ""; // Observe que não pode = nulo aqui. para (int i = 0; i <parms.length; i ++) {parmsstring+= parms [i];} // sha1 criptografia string mParms = null; // o resultado após a criptografia ... // este local é a implementação do sha1. Que essa solicitação GET vem do servidor WeChat, retorne o conteúdo do parâmetro ECHOSTR como ele é, e o acesso entra em vigor e se torna um desenvolvedor com sucesso, caso contrário, o acesso falha. */// Etapa 3: O desenvolvedor obtém a sequência criptografada e pode compará -la com a assinatura para identificar que a solicitação vem do acesso bem -sucedido do WeChat. System.out.println (tag + ":" + mparms + "--->" + assinatura); if (mparms.equals (assinatura)) {// System.out.println (tag + ":" + mParms + "----->" + assinatura); PrintWriter.Write (ECHOSTR);} else {// Acesso falhou, não há necessidade de escrever de volta // System.out.println (tag + "Access falhou");}4. Preencha a configuração do servidor
1) A inclusão da configuração do servidor de conteúdo é principalmente a interface de acesso ao servidor e WeChat que precisamos configurar depois de escrevermos nosso próprio código para acessar a plataforma de desenvolvimento do WeChat.
2) Operação do servidor Abra o tomcat do servidor e coloque o código escrito no arquivo WebApps.
3) Operação de plataforma pública do WeChat
*Inscreva-se em uma conta de teste do WeChat (digitalize diretamente com o WeChat para fazer login): http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
*Abra o número do teste do WeChat Public Platform e configure informações de configuração da interface. A configuração é a seguinte
URL: http: // ip/weixinapidemo/coreServlet
Token: WGySCSF
*Será lembrado ao enviar, sucesso e falha de configuração.
Todos os códigos de origem da operação nesta parte podem ser usados diretamente
pacote com.gist.servlet; importar java.io.ioException; importar java.io.printwriter; importar java.security.Messagedigest; importar java.security.nosuchalGorithMexception; import java.util.arrays; javax.servlet.http.httpServlet; importar javax.servlet.http.httpServletRequest; import javax.servlet.http.httpServletResponse;/*** @author gao yuan </n> email: [email protected] @author yuan </n> e -mail: wgysfs@116. http://blog.csdn.net/wgyscsf </n> * Período de escrita 2016-4-3 16:34:05 */@webServlet ("/coreServlet") CORESERVlet pública estende httpServlet {string tag = "corerevlet"; / * * Etapa 2: Verifique se a validade do endereço do servidor após o desenvolvedor enviar as informações, o servidor WeChat enviará uma solicitação GET para o URL do endereço do servidor preenchido. * A solicitação GET carrega quatro parâmetros: assinatura, registro de data e hora, nonce, ecos * O desenvolvedor verifica a solicitação verificando a assinatura (existe um método de verificação abaixo). Se você confirmar que a solicitação GET vem do servidor WeChat, retorne o conteúdo do parâmetro ECHOSTR como é: *, o acesso entra em vigor e se torna um desenvolvedor com sucesso, caso contrário, o acesso falhará. * * O processo de criptografia/verificação é o seguinte: 1. Ordem do dicionário de classificação de token, registro de data e hora e nonce 2. * Splique as três cordas de parâmetros em uma string para a criptografia sha1 3. O strings Após o desenvolvedor obtém o que o relatório */ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *. variáveis para formar seqüências. O método é formar uma sequência de uma ordem pequena a grande em ordem alfabética ou na ordem de números pequenos e grandes. */ @Override Protected Void Doget (httpServletRequest Req, httpServletResponse resp) lança servletexception, ioexception {// set coding req.setcharacterencoding ("utf-8"); resp.setContentType ("html/text; charset = utf-8"); resp.Setcharacterencoding ("UTF-8"); // Obtenha o fluxo de saída PrintWriter PrintWriter = resp.getWriter (); // Defina um token global, o desenvolvedor o define. A API explica isso: o token pode ser preenchido à vontade pelo desenvolvedor, // usado como uma assinatura de geração (o token será comparado com o token contido no URL da interface para verificar a segurança) string token = "wgyScsf"; // De acordo com a descrição da API, obtenha os quatro parâmetros acima, assinatura da string = req.getParameter ("Signature"); String timestamp = req.getParameter ("Timestamp"); String nonce = req.getParameter ("nonce"); String ecostr = req.getParameter ("ECHOSTR"); // // temp: impressão temporária, assista à situação do parâmetro de retorno // system.out.println (tag + ": assinatura:" + assinatura + ", registro de data e hora:" // + timestamp + ", nonce:" + nonce + ", ecostr:" + ecoStr); // Acesso de acordo com o "processo de criptografia/verificação" mencionado pela API. There are three steps in total // Step 1: Sort dictionary order of token, timestamp, nonce three parameters String[] parms = new String[] { token, timestamp, nonce };// Put the strings that need to be sorted dictionary in the array Arrays.sort(parms);// Sort dictionary order according to API requirements // Step 2: Splice the three parameter strings into a string for sha1 Encryption // Splique the String String parmsstring = ""; // Observe que não pode = nulo aqui. for (int i = 0; i <parms.length; i ++) {parmsstring+= parms [i]; } // sha1 string de criptografia mparms = null; // Resultado criptografado Messagedigest digery = null; tente {Digest = java.security.messagedigest.getInstance ("sha"); } catch (nosuchalgorithMexception e) {// TODO BLOCO DE CATAGEM AUTOGERATION E.PRINTSTACKTRACE (); } digest.update (parmsString.getBytes ()); byte Messagedigest [] = DIGEST.Digest (); // Crie String Hex StringBuffer hexstring = new StringBuffer (); // Converta a matriz de bytes em número hexadecimal para (int i = 0; i <Messagedigest.Length; i ++) {String Shahex = Integer.ToHexString (Messagedigest [i] e 0xff); if (shahex.length () <2) {hexstring.append (0); } hexstring.append (shahex); } mparms = hexstring.toString (); // Resultado da criptografia/ * * Requisitos da API: Se você confirmar que a solicitação GET é do servidor WeChat, retorne o conteúdo do parâmetro ECHOSTR como ele é e o acesso terá efeito e se tornará um desenvolvedor com sucesso. Caso contrário, o acesso falhará. */ // Etapa 3: O desenvolvedor obtém a sequência criptografada e pode compará -la com a assinatura para identificar que a solicitação vem do acesso bem -sucedido do WeChat. System.out.println (tag + ":" + mparms + "--->" + assinatura); if (mParms.equals (assinatura)) {// System.out.println (tag + ":" + mparms + "---->" + assinatura); printwriter.write (ecostr); } else {// access falhou, não há necessidade de escrever de volta // system.out.println (tag + "access falhou"); }} @Override Protect DoPost protegido (httpServletRequest req, httpServletResponse resp) lança servletexception, ioexception {doget (req, resp); }}
O primeiro artigo da API de desenvolvimento Java WeChat é apresentado aqui. Espero que você continue prestando atenção ao conteúdo atualizado no futuro. Obrigado!