|
|
Publicerad på 2018-11-24 15:59:26
|
|
|
|

WeChat-tokenverifiering
Kom tillbaka
1. Åtkomstmetoden för WeChats publika plattform är inget mer än 4 parametrar (signatur, tidsstämpel, nonce, echostr) plus 1 token (motsvarande båda sidor)
2. Efter att ha sorterat ordböckerna för token, tidsstämpel och nonce, kryptera dem enligt strängen "SHA1". Ger en sträng tmpStr (konverterad till gemener)
3. Jämför sedan om tmpStr är lika med signatur, om det är lika betyder det att förfrågan kommer från WeChat.
4. Om du ser till att förfrågan kommer från WeChat har du tagit ett stort steg. Den återstående är arbetet med att överföra echostr-parametern till WeChats publika plattform.
Min signaturverifiering lyckas, men WeChat misslyckas fortfarande med att returnera token eftersom jag returnerade en sträng med xml-format, enligt följande:
Lösning:
Det bör betonas här att man syftar på PHP:s echo $echoStr, WebFroms Response.Write(echoStr), etc. Efter att ha felsökt om och om igen fastställdes det att WeChats acceptansmetod endast skulle accepteras som "application/x-www-form-urlencoded", så jag använde HttpResponseMessage för att specificera dess utdatametod. Till slut lyckades testet!
Personligen tycker jag dock att meningen ovan inte är fel, men jag är lat att testa, och det borde vara okej att sätta "text/klar" till motsvarande typ.
POST återvänder
Nyligen har WeChat-betalningsfunktionen använts vid utveckling av WeChat-miniprogram och ASP.NET WEB API för gränssnittsutveckling;
Efter att betalningen är framgångsrik tar gränssnittet emot betalningsnotifikationen från WeChat-servern, bearbetar datan och returnerar datan till WeChat-tjänsten.
WeChat-servern känner inte igen den returnerade datan, vilket resulterar i dubbletter av notifikationer.
Den slutliga upplösningskoden är följande:
|
Föregående:Kunskapsdelningssamling av Zhihu liveNästa:Qi Baishis samlade verk, pdf
|