Falha na verificação assíncrona do WeChat Pay v3
Aqui recebemos os parâmetros (o corpo da mensagem) geralmente por meio da solicitação que vem com o framework.
Por exemplo, TP6: $ this-> request-> param ();
Aqui, se você usar este método de recebimento, a verificação de conversão json falhará.
Precisamos usar o método de recebimento nativo: file_get_contents ('php: // input');
após recebê-lo, leve esses dados diretamente para verificação de assinatura.
Anexe o seguinte código:
public function verifySign () { $ timestamp = "timestamp no cabeçalho"; $ nonce = "string aleatória no cabeçalho"; $ assinatura = "assinatura no cabeçalho"; $ certZs = "Certificado da plataforma"; / / $ data = $ this-> request-> param (); $ data = file_get_contents ('php: // input'); $ message = "$ timestamp \ n $ nonce \ n $ data \ n"; // Escola Verifique a assinatura se (! $ this-> verify ($ message, $ signature, $ certZs)) { throw new \ Exception ('verificação falhou', 123456); } } 123456789101112131415161718