1. WeChat официальный документ WeChat Process Development (оплата общественного счета)
Во -первых, давайте перейдем к разделу «Шаги разработки официальной документации WeChat Pay», чтобы проверить необходимые настройки.
[Отсутствие загрузки изображения ... (Image-5EB825-1531014079742)]]
Поскольку платеж WeChat требует высоких разрешений, только сертифицированные услуги могут иметь разрешение на использование интерфейса платежей WeChat. Нам трудно подать заявку на это лично, поэтому нам нужно одолжить учетную запись у других друзей.
Приходите к бизнес -процессу части документа и проверьте процесс оплаты WeChat (я думаю, что это все еще требует очень тщательного понимания и просмотра, что поможет вам понять процесс разработки WeChat).
Затем, доступ к интерфейсу платежа WeChat требует отключения множества параметров. Смотрите единый сингл
[Отсутствие загрузки изображения ... (Image-DF7051-1531014079742)]]
После проверки официальных платежных документов WeChat, я считаю, что у вас должно быть определенное понимание этого, но я все еще думаю, что разработка платежа WeChat очень неприятна, поэтому мы будем использовать сторонний SDK для разработки.
2. WeChat Pay сторонняя разработка SDK (платеж на аккаунт общественного счета)
Это платеж за официальный счет. Мы используем Best-Pay-SDK. Этот SDK использует PayRequest и PayResponse для инкапсуляции интерфейса запроса и соответствующих результатов. Основные параметры, которые необходимо динамически передавать, открыты (пользовательский уникальный идентификатор) и OrderID. Далее, давайте посмотрим, как развиваться.
1. Конфигурация
// WeChat Public Account Pulate Configuration Wxpayh5config wxpayh5config = new wxpayh5config (); wxpayh5config.setappid ("xxxxx"); wxpayh5config.setappSecret ("xxxxxxx"); wxpayh5config.setmchid ("xxxxxx"); wxpayh5config.setmchkey ("xxxxxxx"); wxpayh5config.setnotifyurl ("http: // xxxxx"); // Платеж класс, все методы в этом классе BestPayServiceImpl BestPayService = New BestPayServiceImpl (); bestpayservice.setwxpayh5config (wxpayh5config);2. Инициировать оплату
PayRequest payRequest = new PayRequest (); PAYREQUEST.SETPAYTYPEENUM (bestpaytypeenum.wxpay_h5); PayRequest.SetOrderID ("123456"); PayRequest.SetOrderName ("WeChat Public Account Pulate Order"); PayRequest.SetOrderAmount (0,01); PAYREQUEST.SETOPENID ("OPENID_XXXXXX"); bestpayservice.pay (payRequest);3. Асинхронный обратный вызов
bestPayService.asyncNotify();
Это то, что этот SDK говорит, что 10 строк кода для решения WeChat платеж.
После завершения оплаты WeChat вернет нам результат оплаты в качестве фрагмента платежных данных XML. Нам необходимо передать эти данные в URL -адрес асинхронного уведомления (notify_url), чтобы завершить проверку результата платежа (проверка подписи, проверка статуса оплаты). Оба шага SDK сделаны для нас. Просто позвоните BestPayService.Asyncnotify (notifyData);, после завершения проверки нам необходимо вернуть кусок данных в WeChat:
<xml> <return_code> <! [cdata [success]]> </return_code> <return_msg> <! [cdata [ok]]] </return_msg> </xml>
Скажите WeChat, что проверка была завершена и не отправляйте нам никаких запросов на асинхронные уведомления.
Разве не ясно, как интегрироваться в проект? Это не имеет значения, есть также пример демо, который может быть более ясным.
3. Демонстрация
Демо-URL: https://github.com/pay-group/best-pay-demo
Наш главный контроллер здесь:
@Controller @slf4jpublic class paycontroller {@autowired private bestpayserviceimpl bestpayservice; /*** Инициировать платеж*/@getmapping (value = "/pay") public modelandview pay (@requestparam ("openid") string opend, map <string, object> map) {payRequest request = new PayRequest (); Случайный случайный = new Random (); // PAY -запрос PARAMETEREST.SetPaytyPeenum (bestpaytypeenum.wxpay_h5); request.setOrderId (String.valueof (random.nextint (1000000000))); request.setorderamount (0,01); request.setOrderName ("Лучший платеж SDK"); request.setopenid (openid); log.info ("【инициировать оплату】 request = {}", jsonutil.tojson (request)); PAYRESPONSE PAYRESPONSE = BESTPAYSERVICE.PAY (запрос); log.info ("【инициировать оплату】 response = {}", jsonutil.tojson (payresponse)); map.put ("payresponse", payresponse); вернуть New ModelAndView ("Pay/Create", Map); }/*** asynchronous callback*/@postmapping (value = "/natify") public modelandview notify (@Requestbody string notifyData) выбрасывает Exception {log.info ("【async -обратный вызов】 request = {}", notifyData); Ответ PAYRESPONSE = BESTPAYSERVICE.Asyncnotify (notifyData); log.info ("【async -обратный вызов】 response = {}", jsonutil.tojson (response)); вернуть New ModelAndView ("Pay/успех"); }}Вы можете скачать это самостоятельно. Посмотрим, как это работает
Описание проекта
Нужно запустить на версии JDK> 1.8
Этот проект разработан с использованием Springboot 1.5.1
Структура проекта
src/main/java/com/github/lly835├ack комензите PaydemoApplication.java ├ack/erlynitializers.java ├acste ├ └ └ackeconfig.java // Класс конфигурации платеж
Запуск примера
Вам нужно настроить ключ перед запуском, см. Payconfig.java
Запустить команду
git clone https://github.com/pay-group/best-pay-democd best-pay-demomvn clean packagejava -jar target/*. Война
Доступ к браузеру http://127.0.0.1:8080/pay
Суммировать
Выше приведено весь процесс разработки платежей версии WeChat Public Public Account, представленный вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя!