|
Nesen es veicu WeChat oficiālā konta izstrādi, un es saskāros ar dažām problēmām ar WeChat maksājumu, un es biju sajaukts 3 dienas, bet šodien es beidzot to paveicu. Šajā laikā es vēlos pateikties dažiem lieliem dieviem par viņu palīdzību, un es dalīšos savā pieredzē ar viņiem, kamēr viņi ir karsti. Pirms WeChat Pay ieviešanas, Man jādodas uz WeChat izstrādes platformu, lai saņemtu sertifikāciju, es daudz neteikšu par šo autentifikācijas un konfigurācijas informāciju, šeit galvenokārt ir no koda līmeņa, lai realizētu maksājumu. Oficiālā dokumentācija: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7. Saskaroties ar vairākiem JS parametriem, es sniegšu galveno skaidrojumu:
Izstrādes procesā ir 4 ļoti svarīgi parametri: viens ir appid, AppSecret, apikey un tirgotāja numurs. AppID js iepriekš ir viens no tiem. timeStamp ir laika zīmogs, 10 cipari, nonceStr ir nejaušs skaitlis 32 bitu robežās, divi svarīgākie parametri šeit un visvairāk pakļauti kļūdām ir pakete un paySign. Ļaujiet man jums pastāstīt pa vienam. Vispirms runāsim par paketi, mums prepay_id šeit jāizmanto, šis parametrs ir WeChat ģenerētais pasūtījuma numurs, mums ir jāizsauc vienotais pasūtījuma interfeiss, lai to iegūtu. Oficiālā dokumentācija: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1. Kā redzat no dokumentācijas, lai iegūtu prepay_id, ir nepieciešami daudzi parametri, un viens no svarīgākajiem parametriem ir paraksts. Piezīme: Paraksts šeit atšķiras no maksājuma paraksta JS. Parakstītajā algoritma dokumentā ir divi punkti, un es tikai uzsveru divus punktus. Viens ir parametru secība, kas jāsavieno saskaņā ar ASCII no maza uz lielu, un otrs ir tas, ka apikey nedrīkst būt nepareizs, kur ir šis apikey? Piesakieties tirgotāja platformā, lai to iestatītu. Pēc parakstam nepieciešamo virkņu savienošanas paraksta iegūšanai var izmantot MD5 šifrēšanu. Pēc tam apvienojiet parakstu un visus iepriekšējos parametrus xml formāta virknē un izsauciet interfeisa URL adresi:
https://api.mch.weixin.qq.com/pay/unifiedorder就可以返回一个xml结果,解析出其中的prepay_id,这样这个参数就成功获取到了。 Runāsim par pēdējo parametru JS, PaySign: PaySign. Tas pats attiecas uz maksājuma paraksta algoritmu, savienojot pārējos 5 parametrus JS secībā, kā arī apikey, MD5 šifrēšana, ok. Paraksta algoritms ir vienāds, bet parametru vērtības ir atšķirīgas. Šeit ir viena lieta, kas jāatzīmē. Maksājot par parakstu, tiek izmantots nejaušais skaitlis nonceStr un laika zīmogs timeStamp, un šie divi parametri tiek izmantoti parakstot Ja šo divu parametru vērtības JS ir vienādas, tie ir viens un tas pats nejaušais skaitlis un tas pats laika zīmogs. Kāpēc? Lai gan dokumentācijā tas nav teikts, es saprotu, ka maksājumu parakstus ģenerē nejauši skaitļi un laika zīmogi, Pēc tam, maksājot, nosūtiet nejaušo numuru, laika zīmogu un maksājuma parakstu kopā, tad, kad WeChat verificēs, tas būs balstīts arī uz nejaušo numuru un laika zīmogu JS, lai ģenerētu parakstu un salīdzinātu to ar nosūtīto maksājuma parakstu. Ja atkārtoti iegūstat jauno nejaušo skaitli un laika zīmogu js, aprēķinātais paraksts atšķirsies no nosūtītā paraksta, un tiks ziņots par kļūdu: paraksts neizdevās.
Tas viss attiecas uz koda līmeni, un, protams, ir jāatzīmē daži citi punkti. Piemēram, noderīgais openid parametrs ir jāiegūst, izsaucot interfeisu un vai maksājumu autorizācijas direktorijs ir pareizi konfigurēts. Pēdējā teikuma kopsavilkums: Uzmanīgi apskatiet dokumentu un visbeidzot jautājiet citiem, jūs varat atrast ar WeChat maksājumiem saistītās grupas, tajā ir daudz dievu, es iepriekš saskāros ar problēmu un cīnījos 2 dienas, to neatrisinot (dažreiz nepietiek tikai ar dokumenta aplūkošanu), Tad viņš dusmīgi pievienoja 8 WeChat izstrādes grupas un beidzot iznāca ekspertu vadībā. Vēlreiz paldies. Programmētāji ir cilvēku grupa, kuriem patīk dalīties, un viņi ir vairāk nekā priecīgi dalīties ar to, ko viņi zina. Tātad, kad jūs nesaprotat, jautājiet vairāk.
|