Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 16619|Отговор: 0

[Интерфейс] C# реализира плащане чрез WeChat

[Копирай линк]
Публикувано в 15.03.2019 г. 11:59:31 ч. | | |

Наскоро правех официална разработка на WeChat акаунт и срещнах някои проблеми с плащането в WeChat, бях объркан три дни, но днес най-накрая успях да го направя. През този период бих искал да благодаря на някои велики богове за тяхната помощ и ще споделя своя опит с тях, докато са горещи.

Преди да внедрим WeChat Pay,

Трябва да отида на платформата за разработка на WeChat за сертификация, няма да казвам много за тази информация за автентикация и конфигурация, тук е основно от нивото на код, за да се реализира плащането.

Официална документация: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7.

Като се сблъсквам с няколко параметъра в JS, ще дам основно обяснение:


По време на процеса на разработка има 4 много важни параметъра: един е appid, AppSecret, apikey и номер на търговец. AppID в js по-горе е един от тях. timeStamp е времева марка, 10 цифри, nonceStr е случайно число, в рамките на 32 бита, двата най-важни параметъра тук, а най-податливите на грешки са package и paySign. Нека ви разкажа едно по едно. Нека първо поговорим за пакета, тук трябва да използваме prepay_id, този параметър е номерът на поръчката, генериран от WeChat, трябва да извикаме интерфейса за унифициран ред, за да го получим. Официална документация: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1. Както се вижда от документацията, за да се постигне prepay_id, са необходими много параметри, а един от най-важните параметри е подписът. Забележка: Подписът тук е различен от този при плащане в JS. Има две точки в подписания алгоритъм документ и аз просто подчертавам две точки. Единият е редът на параметрите, които трябва да се сплитат според ASCII от малък към голям, а другият е, че APIKEY не трябва да е грешен, къде е този apikey? Влезте в търговската платформа, за да я настроите.

След сплайсване на низовете, необходими за подписа, може да се използва MD5 криптиране за получаване на подписа. След това комбинирайте подписа и всички предишни параметри в xml форматен низ и извикайте URL адреса на интерфейса:
https://api.mch.weixin.qq.com/pay/unifiedorder就可以返回一个xml结果,解析出其中的prepay_id,这样这个参数就成功获取到了。
Нека поговорим за последния параметър в JS, PaySign: PaySign. Същото важи и за алгоритъма за подпис на плащанията, където другите 5 параметъра в JS се плъзгат по ред, плюс apikey, MD5 криптиране, добре.
Алгоритъмът за подпис е същият, но стойностите на параметрите са различни. Ето едно нещо, което трябва да се отбележи. При плащане за подписа се използват случайното число nonceStr и timeStamp timeStamp, като тези два параметъра се използват при подписване
Ако стойностите на тези два параметъра в JS са еднакви, те са едно и също случайно число и еднакъв времеви печат. Защо? Въпреки че документацията не го казва, доколкото знам, подписите за плащане се генерират от случайни числа и времеви печати,
След това, когато плащате, изпратете случайния номер, времевия печат и подписа за плащане заедно, а когато WeChat провери, ще се базира и на случайния номер и времеви печат в JS, за да се генерира подпис и да се сравни с изпратения от вас подпис.
Ако получиш отново новия случаен номер и времеви печат в js, изчисленият подпис ще бъде различен от изпратения от теб подпис и ще бъде докладвана грешка: подписът не е успял.

Това е всичко за ниво код, а разбира се, има и още няколко точки, които трябва да се отбележат. Например, полезният параметър openid също трябва да бъде получен чрез извикване на интерфейса и дали директорията за разрешение за плащане е конфигурирана правилно.
Резюме на последното изречение: Разгледайте внимателно документа и накрая попитайте другите, можете да намерите WeChat групи, свързани с плащания, в тях има много богове, аз се сблъсквах с проблем и се борих 2 дни без да го реша (понякога само гледането на документа не е достатъчно).
После гневно добави 8 групи за разработка в WeChat и най-накрая излезе под ръководството на експертите. Още веднъж благодаря. Програмистите са група хора, които обичат да споделят и с удоволствие споделят това, което знаят. Затова, когато не разбираш, питай още.






Предишен:Пример за функция за push шаблон за съобщение в интерфейса на C# WeChat
Следващ:Чувствам се относно системата за обслужване на клиенти в големите компании
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com