Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 16619|Odpověď: 0

[Rozhraní] C# implementuje platby přes WeChat

[Kopírovat odkaz]
Zveřejněno 15.03.2019 11:59:31 | | |

Nedávno jsem vyvíjel oficiální účet na WeChatu a narazil jsem na problémy s platbou přes WeChat, byl jsem tři dny zmatený, ale dnes jsem to konečně dokončil. Během tohoto období bych chtěl poděkovat některým velkým bohům za jejich pomoc a podělím se s nimi o své zkušenosti, dokud budou v teple.

Před zavedením WeChat Pay,

Potřebuji jít na vývojovou platformu WeChat pro certifikaci, o těchto autentizačních a konfiguračních informacích toho moc neřeknu, zde je hlavně z úrovně kódu pro realizaci plateb.

Oficiální dokumentace: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7.

S ohledem na několik parametrů v JS dám hlavní vysvětlení:


Během vývojového procesu existují 4 velmi důležité parametry: jeden je appid, AppSecret, apikey a číslo obchodníka. AppID v js výše je jedním z nich. timeStamp je časové razítko, 10 číslic, nonceStr je náhodné číslo, do 32 bitů, dva nejdůležitější parametry zde, a nejvíce náchylné k chybám, jsou package a paySign. Povím vám to jeden po druhém. Nejprve si pojďme promluvit o balíčku, musíme použít prepay_id tady, tento parametr je číslo objednávky generované WeChatem, musíme zavolat sjednocené rozhraní objednávky, abychom ho získali. Oficiální dokumentace: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1. Jak můžete vidět z dokumentace, k získání prepay_id je potřeba mnoho parametrů, a jedním z nejdůležitějších je podpis. Poznámka: Podpis zde se liší od podpisu platby v JS. V dokumentu o podepsaném algoritmu jsou dva body a já jen zdůrazňuji dva body. Jedním je pořadí parametrů, které musí být spojeny podle ASCII z malého na velké, a druhým je, že apikey nesmí být špatný, kde je tento apikey? Přihlaste se na obchodní platformu a nastavte to.

Po splicování řetězců požadovaných pro podpis lze použít šifrování MD5 k získání podpisu. Poté se podpis a všechny předchozí parametry spojí do XML formátového řetězce a adresa rozhraní se zavolá:
https://api.mch.weixin.qq.com/pay/unifiedorder就可以返回一个xml结果,解析出其中的prepay_id,这样这个参数就成功获取到了。
Pojďme si promluvit o posledním parametru v JS, PaySign: PaySign. Totéž platí pro algoritmus platebního podpisu, který spojuje ostatních 5 parametrů v JS v pořadí, plus apikey, MD5 šifrování, dobře.
Algoritmus podpisu je stejný, ale hodnoty parametrů se liší. Je tu jedna věc, kterou je třeba poznamenat. Při placení za podpis se používá náhodné číslo nonceStr a časové razítko timeStamp, přičemž tyto dva parametry se používají při podpisování
Pokud jsou hodnoty těchto dvou parametrů v JS stejné, jsou to stejné náhodné čísla a stejné časové razítko. Proč? I když to v dokumentaci není uvedeno, podle mého chápání jsou podpisy plateb generovány náhodnými čísly a časovými značkami,
Při placení pak pošlete náhodné číslo, časové razítko a podpis platby dohromady, a když WeChat ověří, bude to také založeno na náhodném čísle a časovém razítku v JS, aby se vygeneroval podpis a porovnal s platebním podpisem, který jste poslali.
Pokud znovu získáte nové náhodné číslo a časové razítko v js, vypočítaný podpis se bude lišit od toho, který jste poslali, a bude hlášena chyba: podpis selhal.

To je vše k úrovni kódu a samozřejmě je tu ještě pár dalších bodů, které stojí za zmínku. Například užitečný parametr openid je také nutné získat voláním rozhraní a zjistit, zda je adresář pro autorizaci plateb správně nakonfigurován.
Shrnutí poslední věty: Podívejte se pozorně na dokument a nakonec se zeptejte ostatních, najdete tam skupiny týkající se plateb na WeChatu, je tam mnoho bohů, já jsem se už setkal s problémem a dva dny jsem se trápil bez jeho vyřešení (někdy stačí jen podívat se na dokument),
Pak rozzlobeně přidal 8 vývojových skupin na WeChatu a nakonec vyšel pod vedením odborníků. Ještě jednou děkuji. Programátoři jsou skupina lidí, kteří rádi sdílejí a rádi sdílejí své znalosti. Takže když tomu nerozumíte, ptejte se víc.






Předchozí:Příklad funkce push template zprávy v rozhraní WeChat C#
Další:Mám pocit ze systému zákaznického servisu velkých firem
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com