Яндекс Пэй и Сплит для офлайн-магазинов
Проведение оплаты в офлайн-магазине
Перед проведением оплаты необходимо сделать подготовительные действия на стороне продавца:
-
В личном кабинете Яндекс Пэй подключить сервис для офлайн-точки. Подробнее о подключении читайте в разделе Доступные сервисы.
-
В личном кабинете в разделе Настройки выбрать способ оплаты Пэй + Сплит.
-
Настроить интеграцию API.
-
Выполнить тестирование сервиса.
После этого можно переходить к проведению оплаты в проде.
Проведение оплаты в офлайн-магазине с помощью Яндекс Пэй возможно двумя методами:
-
Прямой QR — оплата, при которой пользователь сканирует QR-код, который размещен на поверхностях продавца: мониторах, экранах телефонов менеджеров, чеках, ценниках и других носителях.
-
Обратный QR — оплата, при которой продавец сканирует QR-код, сформированный пользователем в приложении Яндекс Пэй.
Внимание
Если офлайн-магазин располагается в помещении, в котором нестабильно работает мобильный интернет, мы не можем гарантировать корректную работу сервиса Яндекс Пэй.
Оплата покупки включает в себя несколько этапов.
-
Генерация прямого QR-кода.
-
Пользователь выбирает товары, которые он хочет купить.
-
Продавец формирует корзину товаров в кассовой программе.
Когда пользователь готов оплатить товары, продавец выбирает вид оплаты и нажимает кнопку создания заказа.
-
После нажатия кнопки оплаты на стороне партнера блокируется корзина товаров и создается заказ, который через бэкенд продавца передается в Яндекс Пэй с помощью метода /orders. В ответ возвращается ссылка на форму оплаты Яндекс Пэй для проведения оплаты пользователем.
Внимание
В методе /orders необходимо передать код продавца
managerId
и код магазинаbranchId
, в котором происходит оплата. Также продавец передает способы оплаты (Пэй и/или Сплит), доступные для этого заказа. -
На основе полученной ссылки на оплату необходимо сгенерировать QR-код и вывести его на один из носителей, доступных пользователю для сканирования камерой телефона или приложения Яндекс Пэй:
-
Экраны и мониторы.
-
Чек или распечатка QR-кода.
-
Ценник на товар.
Возможно использование стороннего сервиса для создания QR-кода из ссылки. Например, можно использовать сервис QR Code Generator.
-
-
-
Оплата пользователем.
-
Пользователь сканирует созданный продавцом QR-код через камеру телефона или в приложении Яндекс Пэй:
-
Если у пользователя не установлено приложение Яндекс Пэй, то после перехода по ссылке или сканирования QR-кода процесс оплаты происходит в браузере.
-
Если у пользователя установлено приложение Яндекс Пэй, то после перехода по ссылке или сканирования QR-кода процесс оплаты происходит в приложении.
-
-
Пользователь переходит на форму оплаты Яндекс Пэй, которая содержит корзину и сумму к оплате.
-
Пользователь выбирает способ (оплата сразу с кешбэком или частями в сплит) и нажимает кнопку оплаты.
-
При оплате сразу с кешбэком пользователь выбирает сохраненную в Яндексе банковскую карту или СБП-привязку к счету.
-
При оплате частями пользователь выбирает количество платежей и производит оплату первого платежа со своей сохраненной в Яндексе банковской карты.
-
-
-
Проведение платежа.
-
Яндекс Пэй проводит платеж, списывая денежные средства с выбранной карты пользователя.
-
Яндекс Пэй уведомляет бэкенд продавца о статусе платежа через вызов /webhook, если был настроен Callback URL.
Бэкенд продавца может самостоятельно запросить статус заказа через запрос /orders/{order_id}.
Статусы оплаты-
PENDING
— оплата еще в процессе, нужно запросить статус платежа позже. В уведомлении этот статус не отправляется.Продавец может прервать оплату с помощью метода /orders/{orderId}/rollback в одном из случаев:
-
Пользователь отказался от покупки.
-
Появилась необходимость отменить покупку.
-
Произошло зависание кассовой программы.
-
-
FAILED
— оплата завершилась неудачно. Терминальный неуспешный статус. -
CAPTURED
— оплата успешно совершена, можно печатать чек. Терминальный успешный статус.
-
-
Необходимо распечатать чек через кассовую программу. Покупка успешно совершена.
-
На следующий рабочий день деньги в размере полной стоимости покупки поступят на расчетный счет организации офлайн-магазина.
Оплата покупки включает в себя несколько этапов.
-
Формирование корзины и заказа в кассовой программе.
-
Пользователь выбирает товары, которые он хочет купить.
-
Продавец сканирует товары и формирует корзину товаров в кассовой программе.
-
-
Оплата пользователем.
-
Пользователь в приложении Яндекс Пэй нажимает кнопку Оплатить, после чего формируется QR-код для предоставления продавцу.
-
Продавец считывает QR-код.
-
Пользователь выбирает способ (оплата сразу с кешбэком или частями в сплит) и нажимает кнопку оплаты.
-
При оплате сразу с кешбэком пользователь выбирает сохраненную в Яндексе банковскую карту или СБП-привязку к счету.
-
При оплате частями пользователь выбирает количество платежей и производит оплату первого платежа со своей сохраненной в Яндексе банковской карты.
-
-
Бэкенд продавца вызывает метод /orders, в котором передаются:
-
Номер заказа.
-
Способ оплаты (оплата сразу с кешбэком или частями в сплит).
-
Корзина товаров.
-
Код продавца
managerId
и код магазинаbranchId
, в котором происходит оплата. -
Токен, считанный из QR-кода.
Статусы ответа-
Успешный ответ — переход к ожиданию статуса оплаты.
-
Ошибка — некорректные данные или другие ошибки. В кассовой программе будет выводится сообщение с текстом ошибки.
-
Сервис недоступен или получен таймаут — кассовая программа отображает сообщение о недоступности сервиса.
-
-
-
Проведение платежа.
-
Яндекс Пэй проводит платеж, списывая денежные средства с выбранной карты пользователя.
-
Яндекс Пэй уведомляет бэкенд продавца о статусе платежа через вызов /webhook, если был настроен Callback URL.
Бэкенд продавца может самостоятельно запросить статус заказа через запрос /orders/{order_id}.
Статусы оплаты-
PENDING
— оплата еще в процессе, требуется запросить статус оплаты позже. В уведомлении этот статус не отправляется.Продавец может прервать оплату с помощью метода /orders/{orderId}/rollback в одном из случаев:
-
Пользователь отказался от покупки.
-
Появилась необходимость отменить покупку.
-
Произошло зависание кассовой программы.
-
-
FAILED
— оплата завершилась неудачно. Терминальный неуспешный статус. -
CAPTURED
— оплата успешно совершена, можно печатать чек. Терминальный успешный статус.
-
-
Необходимо распечатать чек через кассовую программу. Покупка успешно совершена.
-
На следующий рабочий день деньги в размере полной стоимости покупки поступят на расчетный счет организации офлайн-магазина.
Интеграция API
-
В бэкенде продавца необходимо с помощью метода /orders настроить передачу параметров оплаты:
-
Атрибут
availablePaymentMethods
для передачи способа оплаты. -
Код продавца
managerId
и код магазинаbranchId
, в котором происходит оплата. -
Номер телефона пользователя (опционально при использовании прямого QR).
-
Корзина товаров, включая код и наименование товаров.
-
-
В личном кабинете продавца в разделе Настройки необходимо указать Callback URL, на который Яндекс Пэй будет присылать запросы и webhook-и по Merchant API. Подробнее читайте в разделе Настройка Callback URL.
-
Для получения уведомлений со статусами необходимо поддержать декодирование сообщений от Яндекс Пэй по инструкции.
Подробнее о настройке интеграции читайте в документации API.
Тестирование
Внимание
Тестирование проводится в тестовом окружении (Sandbox). В данном случае запросы к API сервиса Яндекс Пэй отправляются на https://sandbox.pay.yandex.ru
.
Тестирование прямого QR
Для тестирования прямого QR необходимо:
-
Создать тестовый заказ с помощью запроса
https://sandbox.pay.yandex.ru/api/merchant/v1/orders
и получить ссылку на оплату, которая есть в ответе на запрос. -
Преобразовать полученную ссылку на оплату в QR-код. Для этого можно использовать сторонний сервис, например QR Code Generator.
-
Распечатать QR-код или вывести его на экран кассовой программы.
-
Считать с QR-кода ссылку на оплату с помощью камеры смартфона или приложения Яндекс Пэй и перейти к форме оплаты:
-
Если приложение Яндекс Пэй не установлено, то после сканирования QR-кода процесс оплаты происходит в браузере. При этом может потребоваться авторизация в Яндекс ID.
-
Если приложение Яндекс Пэй установлено, то после сканирования QR-кода процесс оплаты происходит в приложении.
-
-
В форме оплаты выбрать любой способ оплаты (оплата сразу с кешбэком или частями в сплит).
Примечание
Обратите внимание, что для авторизации используется реальный аккаунт, а банковская карта для оплаты выбирается из списка тестовых карт. Убедиться в том, что платеж является тестовым можно, если в адресе ссылки на оплату есть слово
sandbox
. Пример тестовой ссылки на оплату:https://sandbox.pay.ya.ru/o/nxPUqR
. -
После этого на номер телефона, привязанный к аккаунту пользователя, приходит SMS с кодом авторизации.
-
После ввода кода из SMS происходит тестовая оплата покупки и отображается страница успешной оплаты.
Примечание
На данном этапе в проде происходит эквайринг в банке выбранной карты. В тестовой среде эквайринг имитируется программным способом.
-
После успешной оплаты в кассовой программе должен сформироваться чек.
-
Осуществить частичный возврат одного товара или части стоимости товара из тестового заказа. После успешного проведения возврата в кассовой программе должен сформироваться чек частичного возврата.
-
Осуществить полный возврат товара из тестового заказа. После успешного проведения возврата в кассовой программе должен сформироваться чек возврата.
Тестирование обратного QR
Для тестирования обратного QR необходимо:
-
Авторизоваться в Яндекс ID под логином пользователя.
-
Открыть страницу с обратным QR-кодом.
-
Считать QR-код кассовым сканером и через бэкенд продавца создать заказ с помощью запроса
https://sandbox.pay.yandex.ru/api/merchant/v1/orders
. -
После создания заказа страница с QR-кодом автоматически обновится и на ней отобразится форма оплаты Яндекс Пэй.
-
В форме оплаты выбрать любой способ оплаты (оплата сразу с кешбэком или частями в сплит). Банковская карта для оплаты выбирается из списка тестовых карт.
-
Оплатить тестовый заказ и проверить, что на бэкенд продавца пришло уведомление об оплате.
-
После успешной оплаты в кассовой программе должен сформироваться чек.
Проведение возврата
Проведение возврата возможно двумя способами: