See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 16619|Vastuse: 0

[Liides] C# rakendab WeChati makseid

[Kopeeri link]
Postitatud 15.03.2019 11:59:31 | | |

Hiljuti tegelesin WeChati ametliku konto arendusega ja mul tekkisid mõned probleemid WeChati maksetega ning olin kolm päeva segaduses, kuid täna sain lõpuks selle valmis. Selle perioodi jooksul tahaksin tänada suuri jumalaid nende abi eest ja jagan nendega oma kogemust, kui nad on kuumad.

Enne WeChat Pay kasutuselevõttu,

Pean sertifitseerimiseks minema WeChati arendusplatvormile, ma ei hakka palju rääkima nende autentimis- ja konfiguratsiooniinfost, siin on peamiselt koodi taset maksete realiseerimiseks.

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

JS-is mitmete parameetrite ees annan peamise selgituse:


Arendusprotsessi käigus on 4 väga olulist parameetrit: üks on appid, AppSecret, apikey ja kaupmehe number. Ülaltoodud js AppID on üks neist. timeStamp on ajatempel, 10-kohaline number, nonceStr on juhuslik number, 32 biti sees, kaks kõige olulisemat parameetrit siin ja kõige veatundlikumad on pakk ja paySign. Las ma räägin sulle ükshaaval. Räägime kõigepealt paketist, peame siin kasutama prepay_id, see parameetri on WeChati genereeritud tellimuse number, peame kutsuma ühtse tellimusliidest, et seda saada. Ametlik dokumentatsioon: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1. Nagu dokumentatsioonist näha, on prepay_id saamiseks vaja palju parameetreid ning üks olulisemaid parameetreid on allkiri. Märkus: Siin olev allkiri erineb JS-i makseallkirjast. Allkirjastatud algoritmi dokumendis on kaks punkti ja ma rõhutan vaid kahte punkti. Üks on parameetrite järjekord, mis tuleb ASCII järgi lõigata väikesest suureks, ja teine on see, et apikey ei tohi eksida, kus see apikey asub? Logi sisse kaupmehe platvormile, et see seadistada.

Pärast allkirja jaoks vajalike stringide ühendamist saab allkirja saamiseks kasutada MD5 krüpteerimist. Seejärel ühenda allkiri ja kõik eelnevad parameetrid xml-formaadis stringiks ning kutsu liidese URL-aadress:
https://api.mch.weixin.qq.com/pay/unifiedorder就可以返回一个xml结果,解析出其中的prepay_id,这样这个参数就成功获取到了。
Räägime JS-i viimasest parameetrist, PaySign: PaySign. Sama kehtib makseallkirja algoritmi kohta, kus teised 5 parameetrit on JS-is järjest ühendatud, pluss apikey, MD5 krüpteerimine, okei.
Allkirjaalgoritm on sama, kuid parameetrite väärtused on erinevad. Siin on üks asi, mida tähele panna. Allkirja eest makstes kasutatakse juhuslikku numbrit nonceStr ja ajatemplit timeStamp ning neid kahte parameetrit kasutatakse allkirjastamisel
Kui nende kahe parameetri väärtused JS-is on samad, on need sama juhuslik arv ja sama ajatempel. Miks? Kuigi dokumentatsioon seda ei ütle, on minu arusaam, et makseallkirjad genereeritakse juhuslike numbrite ja ajatemplitega,
Seejärel makse ajal saada juhuslik number, ajatempel ja makse allkiri koos, ning kui WeChat kontrollib, põhineb see ka JS-i juhuslikul numbril ja ajatemplil, et luua allkiri ja võrrelda seda sinu saadetud makseallkirjaga.
Kui saad uue juhusliku numbri ja ajatempli js-is uuesti, erineb arvutatud allkiri sinu saadetud allkirjast ning teatatakse vea: allkiri ebaõnnestus.

See on kõik kooditaseme kohta ja muidugi on veel mõned punktid, mida tasub tähele panna. Näiteks tuleb kasulik openid parameeter saada ka liidese kutsumise kaudu ning kontrollida, kas makse autoriseerimise kataloog on õigesti seadistatud.
Viimane lause kokkuvõte: Vaata dokumenti hoolikalt ja lõpuks küsi teistelt, leiad WeChati maksetega seotud gruppe, seal on palju jumalaid, mul oli varem probleem ja ma võitlesin 2 päeva ilma seda lahendamata (mõnikord ei piisa ainult dokumendi vaatamisest),
Seejärel lisas ta vihaselt 8 WeChati arendusgruppi ja lõpuks tuli välja ekspertide juhendamisel. Tänan veel kord. Programmeerijad on grupp inimesi, kes armastavad jagada ja jagavad hea meelega oma teadmisi. Nii et kui sa ei saa aru, küsi rohkem.






Eelmine:Näide C# WeChat liidese push-malli sõnumifunktsioonist
Järgmine:Tunnen end suurte ettevõtete klienditeenindussüsteemi suhtes
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com