Verificação de token no WeChat
Voltar
1. O método de acesso da plataforma pública WeChat não passa de 4 parâmetros (assinatura, carimbo de tempo, nonce, echostr) mais 1 token (correspondente a ambos os lados)
2. Após ordenar os dicionários token, timestamp e nonce, criptografe-os de acordo com a string "SHA1". Gera uma string tmpStr (convertida para minúscula)
3. Então compare se tmpStr é igual à assinatura; se for igual, significa que a solicitação é do WeChat.
4. Se você garantir que o pedido venha do WeChat, você completou um grande passo. O restante, o trabalho de transmitir o parâmetro echostr para a plataforma pública do WeChat.
Minha verificação de assinatura foi bem-sucedida, mas o WeChat ainda não retornou o token porque retornei uma string com formato xml, conforme segue:
Solução:
Deve-se enfatizar aqui que se refere ao echo $echoStr do PHP, ao Response.Write (echoStr) do WebFrom, etc. Após depurar repetidas vezes, foi determinado que o método de aceitação do WeChat seria aceito apenas como "application/x-www-form-urlencoded", então usei o HttpResponseMessage para especificar seu método de saída. Finalmente, o teste foi bem-sucedido!
No entanto, pessoalmente acho que a frase acima não está errada, mas sou preguiçoso para testar, e deve ser aceitável definir "texto/plano" para o tipo correspondente.
Retornos do POST
Recentemente, a função de pagamento WeChat tem sido usada no desenvolvimento de mini programas WeChat e ASP.NET API WEB para desenvolvimento de interfaces;
Após o pagamento ser bem-sucedido, a interface recebe o resultado da notificação de pagamento do servidor do WeChat, processa os dados e retorna os dados ao serviço WeChat.
O servidor do WeChat não reconhece os dados retornados, resultando em notificações duplicadas.
O código final de resolução é o seguinte:
|