Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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