Подключение(интеграция) приема платежей WeChat Pay на сайте
Сегодня я расскажу о своем опыте работы с WeChat Pay, а именно о подключении данного способа оплаты к интернет магазину, по средствам работы с APi Яндекс.Кассы — она предоставляет возможность принимать платежи через эту платежную систему, но готовых модулей для CMS/CRM систем пока нет, по этому возможно только самостоятельная интеграция(путем написание собственного кода для этого). Сам WeChat(Wēixìn) это мобильное приложение, мессенджер китайского происхождения, который очень популярен у них, но еще не так популярен у нас. Данный мессенджер включает в себя большое количество разнообразного функционала, в том числе и возможность производить онлайн платежи(отдельный сервис WeChat Pay). О том как подключить WeChat Pay к своему сайту и его особенностях, читайте ниже.
Особенности
Первым делом стоит обратить внимание на особенности оплаты данным способом, в частности на сценарий подтверждения платежа и срок оплаты(время в течении которого необходимо подтвердить платеж).
- Провайдер: Яндекс Касса (именно этот платежный сервис обрабатывает Wechat Pay);
- Тип способа оплаты в API: wechat;
- Сценарий подтверждения: QR-код;
- Срок оплаты: 2 минуты;
- Холдирование: нельзя платить в две стадии;
- Код в реестре: WP;
- Возврат: да, полный и частичный; есть ограничения;
- Срок возврата: моментально;
- Автоплатежи: нет;
- Лимиты: минимальный размер платежа — 1 рубль, максимальный — $10 000, есть дополнительные ограничения.
- Подготовка: Ваш сайт должен быть подготовлен для китайских пользователей, например если вы используете CDN от Google для загрузки jQuery на котором вы будите писать скрипт приема платежей, то помните, что Google в Китае заблокирован и библиотека у китайских пользователей не загрузится. Размещайте все скрипты и библиотеки локально, на сайте.
Схема оплаты
Так как сценарий подтверждения это QR-код, то схема оплаты и следовательно работа скрипта приема платежей на сайте будет следующая:
- Формируем форму для оплаты с указанием суммы платежа;
- Отправляем данные запроса формы на сервер Яндекс Кассы и получаем в ответ ссылку вида: weixin://wxpay/bizpayurl?pr=kxK2lXq
- Далее преобразуем полученную ссылку в изображение QR-код и отображаем его пользователю;
- Пользователь с помощью мобильного приложения Wechat, должен сканировать QR-код, для подтверждения оплаты (на это дается 2 минуты);
- В ходе ожидания пока пользователь сканирует QR-код, наш скрипт(форма приема платежей) должен делать запросы на сервер Яндекс Кассы(например раз в секунду), с указанием выставленного счета, с целью получения статуса платежа;
- В случае ответа с положительным статусом «succeeded», выводим пользователю сообщение, что платеж получен. В иных вариантах полученного статуса, также выводим пользователю соответствующие сообщения: вышло время ожидания, ошибка платежа, ошибка системы, и т.д.
- Если вы принимаете платежи в рамках какого либо проекта, CMS или CRM системы, но на завершающем этапе необходимо передать в систему данные о статусе платежа, например перевести статус заказа в CRM на «Оплачен».
Описание методов Yandex.Checkout API PHP Client Library
Документация по Wecaht Pay
Yandex.Checkout API PHP Client Library
Подключение библиотеки в проект
Импортируйте нужные классы
use YandexCheckout\Client; |
Авторизация
Создайте экземпляр объекта клиента и задайте идентификатор магазина и секретный ключ (их можно получить в личном кабинете Яндекс.Кассы). Как выпустить секретный ключ
$client = new Client(); $client->setAuth('shopId', 'secretKey'); |
Создание платежа
Создайте платеж, в объекте payment_method_data передайте тип wechat, в объекте confirmation передайте тип qr, а в параметре capture передайте значение true, чтобы платеж автоматически перешел в статус succeeded после оплаты.
<?php $client->createPayment( array( 'amount' => array( 'value' => 2, 'currency' => 'RUB', ), 'payment_method_data' => array( 'type' => 'wechat', ), 'confirmation' => array( 'type' => 'qr' ), 'capture' => true, 'description' => 'Заказ №72', ), uniqid('', true) ); |
Пример созданного объекта платежа
{ "id": "2475f981-000f-5000-8000-1538b1392c2a", "status": "pending", "paid": false, "amount": { "value": "2.00", "currency": "RUB" }, "confirmation": { "type": "qr", "confirmation_data": "weixin://wxpay/bizpayurl?pr=kxK2lXq" }, "created_at": "2019-05-21T11:49:21.279Z", "description": "Заказ № 72", "metadata": {}, "payment_method": { "type": "wechat", "id": "2475f981-000f-5000-8000-1538b1392c2a", "saved": false }, "recipient": { "account_id": "100001", "gateway_id": "1000001" }, "refundable": false, "test": false } |
Получение информации о статусе платежа
<?php $response = $client->getPaymentInfo($paymentId); |
Пример объекта платежа в статусе succeeded
{ "id": "2475f981-000f-5000-8000-1538b1392c2a", "status": "succeeded", "paid": true, "amount": { "value": "2.00", "currency": "RUB" }, "captured_at": "2019-05-21T12:10:19.732Z", "created_at": "2019-05-21T12:10:12.509Z", "description": "Заказ № 72", "metadata": {}, "payment_method": { "type": "wechat", "id": "2475f981-000f-5000-8000-1538b1392c2a", "saved": false }, "recipient": { "account_id": "100001", "gateway_id": "1000001" }, "refundable": true, "refunded_amount": { "value": "0.00", "currency": "RUB" }, "test": false } |
Скриншоты
Заключение
Платежи через WeChat Pay пока не так популярны у нас в стране, да и вообще во всем западном мире, по этому встроенной поддержки в плагинах и модулях различных платежных решений для CMS(eCommerce, WP, JoomShopping) нет. Остается только вариант написать скрипты интеграции под своё проект самостоятельно. Если вам нужна помощь по интеграции данного метода оплаты в вашу систему, сайт, CMS, CRM систему — то буду рад сотрудничеству, обращайтесь!
Похожие записи
1 Comment to “Подключение(интеграция) приема платежей WeChat Pay на сайте”
Оставить комментарий
Full Stack
Senior, Architect
предложить оффер
- jQuery: как получить значение атрибута?
- PHP работа с изображением, класс SimpleImage
- Интеграция с API ОСАГО сайта sravni.ru
- Комментарии на PHP, Ajax, mySQL
- PHP: Категории бесконечного уровня вложенности.
- Nginx редирект на другой сервис с сохранением URL спросил (а) Сергей
- Исполнитель пропал, почему такое случается и понять с кем работать? спросил (а) Артем
- Можно ли WordPress считать универсальным движком? спросил (а) Андрей
- Что такое самописный скрипт или CMS? спросил (а) Антон
- Как при поиске в linux используя grep, добавить исключения? спросил (а) Алексей
- Консольный скрипт(JavaScript) для автоматических заказов на OZON к записи
- Консольный скрипт(JavaScript) для автоматических заказов на OZON к записи
- Как создать Telegram-бота с авторизацией через сайт к записи
- PHP скрипт: каталог закладок на сайты к записи
- Валидация на PHP к записи
- Сколько зарабатывают в бизнесе на совместных покупках к записи
- Сколько зарабатывают в бизнесе на совместных покупках к записи
Archive
- +2024 (31)
- Декабрь 2024 (3)
- Ноябрь 2024 (13)
- Октябрь 2024 (8)
- Сентябрь 2024 (1)
- Август 2024 (5)
- Май 2024 (1)
- +2023 (27)
- Ноябрь 2023 (1)
- Октябрь 2023 (13)
- Сентябрь 2023 (10)
- Апрель 2023 (1)
- Март 2023 (1)
- Февраль 2023 (1)
- +2022 (21)
- Декабрь 2022 (11)
- Ноябрь 2022 (1)
- Май 2022 (2)
- Апрель 2022 (2)
- Март 2022 (3)
- Февраль 2022 (1)
- Январь 2022 (1)
- +2021 (17)
- Декабрь 2021 (5)
- Ноябрь 2021 (2)
- Июль 2021 (1)
- Июнь 2021 (2)
- Май 2021 (5)
- Апрель 2021 (1)
- Март 2021 (1)
- +2020 (20)
- Декабрь 2020 (6)
- Сентябрь 2020 (2)
- Август 2020 (1)
- Июль 2020 (2)
- Май 2020 (2)
- Апрель 2020 (2)
- Март 2020 (2)
- Февраль 2020 (1)
- Январь 2020 (2)
- +2019 (18)
- Декабрь 2019 (3)
- Ноябрь 2019 (2)
- Октябрь 2019 (2)
- Сентябрь 2019 (1)
- Август 2019 (2)
- Июль 2019 (1)
- Июнь 2019 (1)
- Апрель 2019 (2)
- Март 2019 (1)
- Февраль 2019 (3)
- +2018 (44)
- Декабрь 2018 (4)
- Ноябрь 2018 (7)
- Октябрь 2018 (8)
- Сентябрь 2018 (1)
- Август 2018 (4)
- Июль 2018 (5)
- Май 2018 (3)
- Апрель 2018 (7)
- Март 2018 (1)
- Февраль 2018 (2)
- Январь 2018 (2)
- +2017 (19)
- Декабрь 2017 (2)
- Ноябрь 2017 (1)
- Октябрь 2017 (1)
- Сентябрь 2017 (2)
- Июль 2017 (1)
- Июнь 2017 (1)
- Май 2017 (2)
- Апрель 2017 (3)
- Март 2017 (2)
- Февраль 2017 (1)
- Январь 2017 (3)
- +2016 (36)
- Декабрь 2016 (3)
- Ноябрь 2016 (3)
- Октябрь 2016 (2)
- Сентябрь 2016 (3)
- Август 2016 (7)
- Июнь 2016 (3)
- Май 2016 (3)
- Апрель 2016 (3)
- Февраль 2016 (1)
- Январь 2016 (8)
- +2015 (36)
- Ноябрь 2015 (5)
- Октябрь 2015 (4)
- Сентябрь 2015 (1)
- Август 2015 (8)
- Июнь 2015 (1)
- Май 2015 (4)
- Апрель 2015 (8)
- Март 2015 (3)
- Февраль 2015 (2)
- +2014 (26)
- Ноябрь 2014 (2)
- Октябрь 2014 (5)
- Сентябрь 2014 (6)
- Июль 2014 (1)
- Июнь 2014 (2)
- Май 2014 (3)
- Апрель 2014 (6)
- Февраль 2014 (1)
- +2013 (27)
- Декабрь 2013 (2)
- Ноябрь 2013 (1)
- Октябрь 2013 (1)
- Август 2013 (1)
- Июль 2013 (3)
- Июнь 2013 (10)
- Май 2013 (1)
- Апрель 2013 (2)
- Февраль 2013 (3)
- Январь 2013 (3)
- +2012 (41)
- Декабрь 2012 (2)
- Ноябрь 2012 (3)
- Октябрь 2012 (7)
- Сентябрь 2012 (2)
- Август 2012 (1)
- Июль 2012 (3)
- Июнь 2012 (2)
- Май 2012 (6)
- Апрель 2012 (2)
- Март 2012 (7)
- Февраль 2012 (5)
- Январь 2012 (1)
- +2011 (57)
- Декабрь 2011 (6)
- Ноябрь 2011 (2)
- Октябрь 2011 (3)
- Сентябрь 2011 (5)
- Август 2011 (4)
- Июль 2011 (3)
- Июнь 2011 (3)
- Май 2011 (3)
- Апрель 2011 (4)
- Март 2011 (10)
- Февраль 2011 (5)
- Январь 2011 (9)
- +2010 (43)
- Декабрь 2010 (7)
- Ноябрь 2010 (21)
- Октябрь 2010 (14)
- Сентябрь 2010 (1)
Свежие записи
- Пакетное добавление сайтов в панель ISP Manager 6 07.12.2024
- Обрезка документа PDF в Linux из PHP 06.12.2024
- Прокси веб-сервера Apache и nGinx 03.12.2024
- Настройка WebSocket на сайте для быстрого обмена данными 30.11.2024
- Подключение сайта к доставке DPD по API 28.11.2024
Здравствуйте, Роман,
нашел описание Вашего алгоритма интеграции с WeChatPay за 2020 год. С тех пор Яндекс.касса превратилась в ЮКассу, а она не поддерживает трансфер с WeChatPay.
Но такая задача (принимать оплату на сайт от WeChatPay и AliPay) передо мной стоит тем не менее.
Видите ли Вы возможности для такой реализации сейчас?
Заранее благодарен,
Юрий Алпеев