Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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, там багато богів, я раніше стикався з проблемою і два дні боровся, не розв'язуючи її (іноді просто перегляд документа недостатньо).
Потім він сердито додав 8 груп розробки WeChat і нарешті вийшов під керівництвом експертів. Ще раз дякую. Програмісти — це група людей, які люблять ділитися і із задоволенням діляться тим, що знають. Тож якщо не розумієш — питай більше.






Попередній:Приклад функції push-шаблону повідомлення в інтерфейсі C# WeChat
Наступний:Я відчуваю ставлення до системи обслуговування клієнтів великих компаній
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com