Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 16619|Odpoveď: 0

[Rozhranie] C# implementuje platby cez WeChat

[Kopírovať odkaz]
Zverejnené 15. 3. 2019 11:59:31 | | |

Nedávno som robil vývoj oficiálneho účtu na WeChate a narazil som na problémy s platbou cez WeChat, bol som 3 dni zmätený, ale dnes sa mi to konečne podarilo. Počas tohto obdobia by som chcel poďakovať niektorým veľkým bohom za ich pomoc a podelím sa s nimi o svoje skúsenosti, kým sú horúci.

Pred zavedením WeChat Pay,

Potrebujem ísť na vývojársku platformu WeChat kvôli certifikácii, nebudem veľa hovoriť o autentifikácii a konfiguračných informáciách, tu je hlavne na úrovni kódu na realizáciu platby.

Oficiálna dokumentácia: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7.

Pri pohľade na niekoľko parametrov v JS dám hlavné vysvetlenie:


Počas vývojového procesu sú štyri veľmi dôležité parametre: jeden je appid, AppSecret, apikey a číslo obchodníka. AppID v js vyššie je jedným z nich. timeStamp je časová pečiatka, 10 číslic, nonceStr je náhodné číslo, v rámci 32 bitov, dva najdôležitejšie parametre a najnáchylnejšie na chyby sú package a paySign. Poviem vám to jeden po druhom. Najprv sa porozprávajme o balíku, potrebujeme použiť prepay_id tu, tento parameter je číslo objednávky generované WeChatom, potrebujeme zavolať unified order interface, aby sme ho získali. Oficiálna dokumentácia: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1. Ako vidíte z dokumentácie, na získanie prepay_id je potrebných mnoho parametrov, pričom jedným z najdôležitejších je podpis. Poznámka: Podpis tu sa líši od podpisu platby v JS. V podpísanom dokumente algoritmu sú dva body a zdôrazňujem len dva body. Jedným je poradie parametrov, ktoré je potrebné spojiť podľa ASCII z malého na veľké, a druhým je, že apikey nesmie byť nesprávny, kde sa tento apikey nachádza? Prihláste sa na obchodnú platformu, aby ste si to nastavili.

Po zložení reťazcov potrebných pre podpis je možné použiť šifrovanie MD5 na získanie podpisu. Potom skombinujte podpis a všetky predchádzajúce parametre do reťazca vo formáte xml a zavolajte adresu URL rozhrania:
https://api.mch.weixin.qq.com/pay/unifiedorder就可以返回一个xml结果,解析出其中的prepay_id,这样这个参数就成功获取到了。
Poďme sa porozprávať o poslednom parametri v JS, PaySign: PaySign. To isté platí pre algoritmus platebného podpisu, ktorý spája ostatných 5 parametrov v JS v poradí, plus apikey, MD5 šifrovanie, ok.
Algoritmus podpisu je rovnaký, ale hodnoty parametrov sú odlišné. Tu je jedna vec, ktorú treba poznamenať. Pri platbe za podpis sa používajú náhodné číslo nonceStr a časová pečiatka timeStamp, pričom tieto dva parametre sa používajú pri podpisovaní
Ak sú hodnoty týchto dvoch parametrov v JS rovnaké, ide o rovnaké náhodné číslo a rovnakú časovú pečiatku. Prečo? Aj keď to dokumentácia neuvádza, podľa môjho chápania sú podpisy platieb generované náhodnými číslami a časovými pečiatkami,
Pri platbe potom pošlite náhodné číslo, časové pečiatky a podpis platby spolu, a keď WeChat overí, bude to tiež založené na náhodnom čísle a časovej značke v JS, aby sa vygeneroval podpis a porovnal s platebným podpisom, ktorý ste poslali.
Ak znovu získate nové náhodné číslo a časovú pečiatku v js, vypočítaný podpis sa bude líšiť od toho, ktorý ste poslali, a bude nahlásená chyba: podpis zlyhal.

To je všetko k úrovni kódu a samozrejme, je tu ešte niekoľko ďalších bodov, ktoré treba poznamenať. Napríklad užitočný parameter openid je potrebné získať aj volaním rozhrania a zistiť, či je adresár na autorizáciu platieb správne nakonfigurovaný.
Zhrnutie poslednej vety: Pozrite si dokument pozorne a nakoniec sa opýtajte ostatných, nájdete tam skupiny súvisiace s platbami na WeChate, je tam veľa bohov, stretol som sa s problémom a dva dni som sa trápil bez jeho riešenia (niekedy stačí len pozrieť sa na dokument),
Potom nahnevane pridal 8 vývojových skupín na WeChate a nakoniec vyšiel pod vedením odborníkov. Ešte raz ďakujem. Programátori sú skupina ľudí, ktorí radi zdieľajú a radi zdieľajú to, čo vedia. Takže keď tomu nerozumiete, pýtajte sa viac.






Predchádzajúci:Príklad funkcie správy push šablóny v rozhraní WeChat C#
Budúci:Mám pocit zo systému zákazníckeho servisu veľkých firiem
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com