Яндекс Пэй и Сплит для офлайн-магазинов

Проведение оплаты в офлайн-магазине

Перед проведением оплаты необходимо сделать подготовительные действия на стороне продавца:

  • В личном кабинете Яндекс Пэй подключить сервис для офлайн-точки. Подробнее о подключении читайте в разделе Доступные сервисы.

  • В личном кабинете в разделе Настройки выбрать способ оплаты Пэй + Сплит.

  • Настроить интеграцию API.

  • Выполнить тестирование сервиса.

После этого можно переходить к проведению оплаты в проде.

Проведение оплаты в офлайн-магазине с помощью Яндекс Пэй возможно двумя методами:

  • Прямой QR — оплата, при которой пользователь сканирует QR-код, который размещен на поверхностях продавца: мониторах, экранах телефонов менеджеров, чеках, ценниках и других носителях.

  • Обратный QR — оплата, при которой продавец сканирует QR-код, сформированный пользователем в приложении Яндекс Пэй.

Внимание

Если офлайн-магазин располагается в помещении, в котором нестабильно работает мобильный интернет, мы не можем гарантировать корректную работу сервиса Яндекс Пэй.

Оплата покупки включает в себя несколько этапов.

image

  1. Генерация прямого QR-кода.

    1. Пользователь выбирает товары, которые он хочет купить.

    2. Продавец формирует корзину товаров в кассовой программе.

      Когда пользователь готов оплатить товары, продавец выбирает вид оплаты и нажимает кнопку создания заказа.

    3. После нажатия кнопки оплаты на стороне партнера блокируется корзина товаров и создается заказ, который через бэкенд продавца передается в Яндекс Пэй с помощью метода /orders. В ответ возвращается ссылка на форму оплаты Яндекс Пэй для проведения оплаты пользователем.

      Внимание

      В методе /orders необходимо передать код продавца managerId и код магазина branchId, в котором происходит оплата. Также продавец передает способы оплаты (Пэй и/или Сплит), доступные для этого заказа.

    4. На основе полученной ссылки на оплату необходимо сгенерировать QR-код и вывести его на один из носителей, доступных пользователю для сканирования камерой телефона или приложения Яндекс Пэй:

      • Экраны и мониторы.

      • Чек или распечатка QR-кода.

      • Ценник на товар.

      Возможно использование стороннего сервиса для создания QR-кода из ссылки. Например, можно использовать сервис QR Code Generator.

  2. Оплата пользователем.

    1. Пользователь сканирует созданный продавцом QR-код через камеру телефона или в приложении Яндекс Пэй:

      • Если у пользователя не установлено приложение Яндекс Пэй, то после перехода по ссылке или сканирования QR-кода процесс оплаты происходит в браузере.

      • Если у пользователя установлено приложение Яндекс Пэй, то после перехода по ссылке или сканирования QR-кода процесс оплаты происходит в приложении.

    2. Пользователь переходит на форму оплаты Яндекс Пэй, которая содержит корзину и сумму к оплате.

    3. Пользователь выбирает способ (оплата сразу с кешбэком или частями в сплит) и нажимает кнопку оплаты.

      1. При оплате сразу с кешбэком пользователь выбирает сохраненную в Яндексе банковскую карту или СБП-привязку к счету.

      2. При оплате частями пользователь выбирает количество платежей и производит оплату первого платежа со своей сохраненной в Яндексе банковской карты.

  3. Проведение платежа.

    1. Яндекс Пэй проводит платеж, списывая денежные средства с выбранной карты пользователя.

    2. Яндекс Пэй уведомляет бэкенд продавца о статусе платежа через вызов /webhook, если был настроен Callback URL.

      Бэкенд продавца может самостоятельно запросить статус заказа через запрос /orders/{order_id}.

      Статусы оплаты
      • PENDING — оплата еще в процессе, нужно запросить статус платежа позже. В уведомлении этот статус не отправляется.

        Продавец может прервать оплату с помощью метода /orders/{orderId}/rollback в одном из случаев:

        • Пользователь отказался от покупки.

        • Появилась необходимость отменить покупку.

        • Произошло зависание кассовой программы.

      • FAILED — оплата завершилась неудачно. Терминальный неуспешный статус.

      • CAPTURED — оплата успешно совершена, можно печатать чек. Терминальный успешный статус.

    3. Необходимо распечатать чек через кассовую программу. Покупка успешно совершена.

На следующий рабочий день деньги в размере полной стоимости покупки поступят на расчетный счет организации офлайн-магазина.

Схема процесса оплаты

image

Оплата покупки включает в себя несколько этапов.

image

  1. Формирование корзины и заказа в кассовой программе.

    1. Пользователь выбирает товары, которые он хочет купить.

    2. Продавец сканирует товары и формирует корзину товаров в кассовой программе.

  2. Оплата пользователем.

    1. Пользователь в приложении Яндекс Пэй нажимает кнопку Оплатить, после чего формируется QR-код для предоставления продавцу.

    2. Продавец считывает QR-код.

    3. Пользователь выбирает способ (оплата сразу с кешбэком или частями в сплит) и нажимает кнопку оплаты.

      1. При оплате сразу с кешбэком пользователь выбирает сохраненную в Яндексе банковскую карту или СБП-привязку к счету.

      2. При оплате частями пользователь выбирает количество платежей и производит оплату первого платежа со своей сохраненной в Яндексе банковской карты.

    4. Бэкенд продавца вызывает метод /orders, в котором передаются:

      • Номер заказа.

      • Способ оплаты (оплата сразу с кешбэком или частями в сплит).

      • Корзина товаров.

      • Код продавца managerId и код магазина branchId, в котором происходит оплата.

      • Токен, считанный из QR-кода.

      Статусы ответа
      • Успешный ответ — переход к ожиданию статуса оплаты.

      • Ошибка — некорректные данные или другие ошибки. В кассовой программе будет выводится сообщение с текстом ошибки.

      • Сервис недоступен или получен таймаут — кассовая программа отображает сообщение о недоступности сервиса.

  3. Проведение платежа.

    1. Яндекс Пэй проводит платеж, списывая денежные средства с выбранной карты пользователя.

    2. Яндекс Пэй уведомляет бэкенд продавца о статусе платежа через вызов /webhook, если был настроен Callback URL.

      Бэкенд продавца может самостоятельно запросить статус заказа через запрос /orders/{order_id}.

      Статусы оплаты
      • PENDING — оплата еще в процессе, требуется запросить статус оплаты позже. В уведомлении этот статус не отправляется.

        Продавец может прервать оплату с помощью метода /orders/{orderId}/rollback в одном из случаев:

        • Пользователь отказался от покупки.

        • Появилась необходимость отменить покупку.

        • Произошло зависание кассовой программы.

      • FAILED — оплата завершилась неудачно. Терминальный неуспешный статус.

      • CAPTURED — оплата успешно совершена, можно печатать чек. Терминальный успешный статус.

    3. Необходимо распечатать чек через кассовую программу. Покупка успешно совершена.

На следующий рабочий день деньги в размере полной стоимости покупки поступят на расчетный счет организации офлайн-магазина.

Схема процесса оплаты

image

Интеграция API

  1. В бэкенде продавца необходимо с помощью метода /orders настроить передачу параметров оплаты:

    • Атрибут availablePaymentMethods для передачи способа оплаты.

    • Код продавца managerId и код магазина branchId, в котором происходит оплата.

    • Номер телефона пользователя (опционально при использовании прямого QR).

    • Корзина товаров, включая код и наименование товаров.

  2. В личном кабинете продавца в разделе Настройки необходимо указать Callback URL, на который Яндекс Пэй будет присылать запросы и webhook-и по Merchant API. Подробнее читайте в разделе Настройка Callback URL.

  3. Для получения уведомлений со статусами необходимо поддержать декодирование сообщений от Яндекс Пэй по инструкции.

Подробнее о настройке интеграции читайте в документации API.

Тестирование

Внимание

Тестирование проводится в тестовом окружении (Sandbox). В данном случае запросы к API сервиса Яндекс Пэй отправляются на https://sandbox.pay.yandex.ru.

Тестирование прямого QR

Для тестирования прямого QR необходимо:

  1. Создать тестовый заказ с помощью запроса https://sandbox.pay.yandex.ru/api/merchant/v1/orders и получить ссылку на оплату, которая есть в ответе на запрос.

  2. Преобразовать полученную ссылку на оплату в QR-код. Для этого можно использовать сторонний сервис, например QR Code Generator.

  3. Распечатать QR-код или вывести его на экран кассовой программы.

  4. Считать с QR-кода ссылку на оплату с помощью камеры смартфона или приложения Яндекс Пэй и перейти к форме оплаты:

    • Если приложение Яндекс Пэй не установлено, то после сканирования QR-кода процесс оплаты происходит в браузере. При этом может потребоваться авторизация в Яндекс ID.

    • Если приложение Яндекс Пэй установлено, то после сканирования QR-кода процесс оплаты происходит в приложении.

  5. В форме оплаты выбрать любой способ оплаты (оплата сразу с кешбэком или частями в сплит).

    Примечание

    Обратите внимание, что для авторизации используется реальный аккаунт, а банковская карта для оплаты выбирается из списка тестовых карт. Убедиться в том, что платеж является тестовым можно, если в адресе ссылки на оплату есть слово sandbox. Пример тестовой ссылки на оплату: https://sandbox.pay.ya.ru/o/nxPUqR.

  6. После этого на номер телефона, привязанный к аккаунту пользователя, приходит SMS с кодом авторизации.

  7. После ввода кода из SMS происходит тестовая оплата покупки и отображается страница успешной оплаты.

    Примечание

    На данном этапе в проде происходит эквайринг в банке выбранной карты. В тестовой среде эквайринг имитируется программным способом.

  8. После успешной оплаты в кассовой программе должен сформироваться чек.

  9. Осуществить частичный возврат одного товара или части стоимости товара из тестового заказа. После успешного проведения возврата в кассовой программе должен сформироваться чек частичного возврата.

  10. Осуществить полный возврат товара из тестового заказа. После успешного проведения возврата в кассовой программе должен сформироваться чек возврата.

Тестирование обратного QR

Для тестирования обратного QR необходимо:

  1. Авторизоваться в Яндекс ID под логином пользователя.

  2. Открыть страницу с обратным QR-кодом.

  3. Считать QR-код кассовым сканером и через бэкенд продавца создать заказ с помощью запроса https://sandbox.pay.yandex.ru/api/merchant/v1/orders.

  4. После создания заказа страница с QR-кодом автоматически обновится и на ней отобразится форма оплаты Яндекс Пэй.

  5. В форме оплаты выбрать любой способ оплаты (оплата сразу с кешбэком или частями в сплит). Банковская карта для оплаты выбирается из списка тестовых карт.

  6. Оплатить тестовый заказ и проверить, что на бэкенд продавца пришло уведомление об оплате.

  7. После успешной оплаты в кассовой программе должен сформироваться чек.

Проведение возврата

Проведение возврата возможно двумя способами:

  • В личном кабинете в разделе Платежи.

  • Через интеграцию по API.