Verifica dei token WeChat
Indietro
1. Il metodo di accesso della piattaforma pubblica WeChat non è altro che 4 parametri (firma, timestamp, nonce, echostr) più 1 token (corrispondente a entrambe le parti)
2. Dopo aver ordinato i dizionari di token, timestamp e nonce, criptarli secondo la stringa "SHA1". Produce una stringa tmpStr (convertita in minuscolo)
3. Poi confronta se tmpStr è uguale alla firma; se è uguale, significa che la richiesta proviene da WeChat.
4. Se ti assicuri che la richiesta provenga da WeChat, hai completato un grande passo. Il resto, il lavoro di trasmissione del parametro echostr alla piattaforma pubblica di WeChat.
La verifica della mia firma è riuscita, ma WeChat continua a non restituire il token perché ho restituito una stringa con formato xml, come segue:
Soluzione:
Va sottolineato qui che si riferiscono all'echo $echoStr di PHP, a Response.Write(echoStr) di WebFrom, ecc. Dopo aver ripetuto ripetutamente il bug, è stato stabilito che il metodo di accettazione di WeChat sarebbe stato accettato solo come "application/x-www-form-urlencoded", quindi ho usato HttpResponseMessage per specificare il metodo di output. Finalmente il test ebbe successo!
Tuttavia, personalmente penso che la frase sopra non sia sbagliata, ma sono pigro a testare e dovrebbe andare bene impostare "testo/semplice" al tipo corrispondente.
Ritorni POST
Recentemente, la funzione di pagamento WeChat è stata utilizzata nello sviluppo di mini programmi WeChat e ASP.NET API WEB per lo sviluppo di interfacce;
Dopo che il pagamento è riuscito, l'interfaccia riceve il risultato della notifica di pagamento dal server WeChat, elabora i dati e restituisce i dati al servizio WeChat.
Il server WeChat non riconosce i dati restituiti, causando notifiche duplicate.
Il codice finale della risoluzione è il seguente:
|