Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 16619|Svar: 0

[Gränssnitt] C# implementerar WeChat-betalning

[Kopiera länk]
Publicerad på 2019-03-15 11:59:31 | | |

Nyligen höll jag på med att utveckla ett officiellt WeChat-konto, och jag stötte på problem med WeChat-betalningen, och jag var förvirrad i tre dagar, men idag fick jag det äntligen gjort. Under denna period vill jag tacka några stora gudar för deras hjälp, och jag kommer att dela med mig av min upplevelse till dem medan de är glada.

Innan vi implementerar WeChat Pay,

Jag behöver gå till WeChat-utvecklingsplattformen för certifiering, jag kommer inte säga så mycket om denna autentiserings- och konfigurationsinformation, här är främst från kodnivå för att realisera betalning.

Officiell dokumentation: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7.

Med tanke på flera parametrar i JS kommer jag att ge en huvudförklaring:


Under utvecklingsprocessen finns det fyra mycket viktiga parametrar: en är appid, AppSecret, apikey och handlarnummer. AppID:n i js ovan är en av dem. timeStamp är en tidsstämpel, 10 siffror, nonceStr är ett slumpmässigt tal, inom 32 bitar, de två viktigaste parametrarna här, och de mest felbenägna är package och paySign. Låt mig berätta en och en. Låt oss prata om paket först, vi behöver använda prepay_id här, denna parameter är ordernumret som genereras av WeChat, vi måste anropa det enhetliga ordergränssnittet för att hämta det. Officiell dokumentation: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1. Som du kan se i dokumentationen krävs många parametrar för att få prepay_id, och en av de viktigaste parametrarna är signaturen. Observera: Signaturen här skiljer sig från betalningssignaturen i JS. Det finns två punkter i det signerade algoritmdokumentet, och jag betonar bara två punkter. Den ena är ordningen på parametrarna, som måste splicas enligt ASCII från liten till stor, och den andra är att apikeyn inte får ha fel, var är denna apikey? Logga in på handlarplattformen för att ställa in det.

Efter att ha skarvat de strängar som krävs för signaturen kan MD5-kryptering användas för att erhålla signaturen. Kombinera sedan signaturen och alla tidigare parametrar till en xml-formatsträng och anropa gränssnittets URL-adress:
https://api.mch.weixin.qq.com/pay/unifiedorder就可以返回一个xml结果,解析出其中的prepay_id,这样这个参数就成功获取到了。
Låt oss prata om den sista parametern i JS, PaySign: PaySign. Samma sak gäller för betalningssignaturalgoritmen, där de andra 5 parametrarna i JS skarvas i ordning, plus apikey, MD5-kryptering, okej.
Signaturalgoritmen är densamma, men parametervärdena är olika. Här är en sak att notera. När man betalar för signaturen används det slumpmässiga numret nonceStr och tidsstämpeln timeStamp, och dessa två parametrar används vid signering
Om värdena på dessa två parametrar i JS är desamma, är de samma slumpmässiga tal och samma tidsstämpel. Varför? Även om dokumentationen inte säger det, är min förståelse att betalningssignaturer genereras av slumpmässiga siffror och tidsstämplar,
När du betalar, skicka sedan det slumpmässiga numret, tidsstämpeln och betalningssignaturen tillsammans, och när WeChat verifierar kommer det också att baseras på det slumpmässiga numret och tidsstämpeln i JS för att generera en signatur och jämföra den med den betalningssignatur du skickade.
Om du återhämtar det nya slumpmässiga numret och tidsstämpeln i js, kommer den beräknade signaturen att skilja sig från den du skickade, och ett fel rapporteras: signaturen misslyckades.

Det är allt för kodnivån, och självklart finns det några andra punkter att notera. Till exempel måste den användbara openid-parametern också erhållas genom att anropa gränssnittet, och om katalogen för betalningsauktorisation är korrekt konfigurerad.
Sammanfattning av sista meningen: Titta noga på dokumentet och fråga slutligen andra, du kan hitta WeChat-betalningsrelaterade grupper, det finns många gudar i det, jag stötte på ett problem tidigare och kämpade i två dagar utan att lösa det, (ibland räcker det inte bara att titta på dokumentet),
Sedan lade han argt till 8 WeChat-utvecklingsgrupper och kom slutligen ut under experternas ledning. Tack igen. Programmerare är en grupp människor som älskar att dela med sig, och de delar gärna med sig av det de kan. Så när du inte förstår, fråga mer.






Föregående:Exempel på pushmallens meddelandefunktion i C# WeChat-gränssnittet
Nästa:Jag känner för kundservicesystemet hos stora företag
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com