Сплит c оплатой «при получении»

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

  • Без первого платежа при оформлении заказа: пользователь проходит процесс одобрения и выделения лимита на оплату.

  • График оплат формируется по итоговой сумме в пункте выдачи заказов (ПВЗ), при передаче заказа курьером или в магазине.

  • Весь процесс от оформления заказа до доставки и оплаты может быть подстроен под любой операционный цикл и разные сроки доставки по стране (30 и более дней).

    Если цикл до оплаты занимает более 5 дней, выбирайте для сценария «оплата при получении» двухстадийную оплату в Сплит, а не холдирование, так как максимальный срок холдирования — 5 дней.

  • Холдирование может быть дополнительной настройкой для этого способа интеграции.

image

Каким партнерам подходит такая механика оплаты:

  • индустриям с оплатой при получении;
  • индустриям с волатильным выкупом.

Какие преимущества дает двухстадийная оплата в Сплит, помимо увеличения общего оборота товаров (GMV):

  • Повышение конверсии в оплату: покупатель может не иметь необходимой суммы в момент оформления заказа или не ждать распродажи, чтобы купить товар.
  • Повышение среднего чека за счет Сплита: покупатель может купить больше.
  • Повышение коэффициента удержания (retention): покупатель получает выгоду от оплаты в Сплит, при этом у него есть возможность посмотреть или примерить товары и выкупить только часть.

Как это работает?

Примечание

Сплит для оплаты «при получении» не подключен по умолчанию и своей функциональностью дополняет базовую механику. Ознакомьтесь с ней, чтобы лучше понимать, как все работает. Подробнее о механиках оплаты читайте в разделе Способы оплаты и платежные механики.

Чтобы подключить и настроить Сплит для оплаты «при получении», обратитесь в поддержку.

Совет

Для знакомства с платежными механиками API Яндекс Пэй используйте готовую Postman-коллекцию.

Скачать коллекцию

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

Оформление заказа

image

  1. Покупатель формирует корзину товаров на сайте продавца и нажимает кнопку Оплатить Яндекс Сплит при получении.

  2. Фронтенд продавца (Merchant Front) создает заказ на бэкенде продавца (Merchant Back).

  3. Бэкенд продавца передает заказ в бэкенд Яндекс Пэй (YaPay Back) с помощью метода /orders. Запрос должен содержать orderId — уникальный идентификатор заказа, а также параметр isPrepayment=true (для оформления оплаты в Сплит).

  4. В ответ бэкенд Яндекс Пэй возвращает бэкенду продавца ссылку на форму для оплаты.

  5. Бэкенд продавца передает полученную ссылку на фронтенд.

  6. Фронтенд продавца перенаправляет покупателя на форму для оплаты на фронтенде Яндекс Пэй (YaPay Front). Покупателю необходимо:

    1. Авторизоваться в Яндексе.
    2. Выбрать способ оплаты Пэй, указать карту или счет, с которого он хочет оплатить заказ, и нажать кнопку Оформить заказ.
  7. Чтобы отслеживать статусы заказа, продавцу необходимо предварительно реализовать две модели:

    Нотификации

    Для оповещения об изменениях статуса заказа или операции настройте обратный вызов (/webhook) от бэкенда Яндекс Пэй:

    1. Укажите публично доступный HTTPS URL-адрес бэкенда магазина в поле Callback URL в личном кабинете Яндекс Пэй в разделе Настройки.
    2. Настройте бэкенд магазина таким образом, чтобы он принимал запросы от бэкенда Яндекс Пэй. Подробнее о требованиях читайте в документации Merchant API.
    Поллинг статуса заказа

    Настройте регулярную отправку запросов о статусе заказа /orders/{order_id} к бэкенду Яндекс Пэй.

    Примечание

    Рекомендуем поддержать сразу обе модели получения информации об изменении статуса заказа, чтобы обеспечить лучшую отказоустойчивость.

  8. Если операция прошла успешно, заказ перейдет в статус CONFIRMED. Покупатель будет перенаправлен по адресу, переданному ранее в поле MerchantRedirectUrls.onSuccess при вызове метода /orders.

Отмена заказа

Если на стороне продавца происходит отмена заказа до подтверждения (например, клиент отменяет заказ через приложение), рекомендуем вызвать метод отмены заказа в API Яндекс Пэй, чтобы обеспечить соответствие статусов между системами продавца и Яндекс Пэй.

image

  1. Бэкенд продавца (Merchant Back) запрашивает статус заказа у бэкенда Яндекс Пэй с помощью метода /orders/{order_id}.

  2. Бэкенд Яндекс Пэй (YaPay Back) возвращает статус заказа.

    Важно

    Отмена заказа доступна только для заказов в статусе PENDING (ожидает подтверждения) или CONFIRMED (подтвержден).

  3. Бэкенд продавца отправляет запрос на отмену заказа с помощью метода orders/{order_id}/rollback.

  4. В ответ бэкенд Яндекс Пэй должен подтвердить получение запроса на отмену заказа (ответ 200 ОК).

Если операция прошла успешно, заказ перейдет в статус FAILED. Отслеживать статус отмены заказа можно через:

Нотификации

Бэкенд Яндекс Пэй отправит уведомление, когда статус заказа изменится на FAILED. Для оповещения об изменениях статуса заказа или операции настройте обратный вызов (/webhook) от бэкенда Яндекс Пэй:

  1. Укажите публично доступный HTTPS URL-адрес бэкенда магазина в поле Callback URL в личном кабинете Яндекс Пэй в разделе Настройки.
  2. Настройте бэкенд магазина таким образом, чтобы он принимал запросы от бэкенда Яндекс Пэй. Подробнее о требованиях читайте в документации Merchant API.
Поллинг статуса заказа

Настройте регулярную отправку запросов о статусе заказа /orders/{order_id} к бэкенду Яндекс Пэй. Отмена прошла успешно, если статус заказа изменился FAILED.

Примечание

Рекомендуем поддержать сразу обе модели получения информации об изменении статуса заказа, чтобы обеспечить лучшую отказоустойчивость.

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

image

  1. Бэкенд продавца (Merchant Back) запрашивает статус заказа у бэкенда Яндекс Пэй с помощью метода /orders/{order_id}.

  2. Бэкенд Яндекс Пэй (YaPay Back) возвращает статус заказа.

    Важно

    Списание средств доступно только для заказов в статусе CONFIRMED (оформлен).

  3. Для подтверждения заказа бэкенд продавца отправляет запрос с помощью метода /orders/{order_id}/submit.

    В запросе задайте параметр externalOperationId — идентификатор операции в системе продавца. Он будет использоваться для отслеживания статуса операции методом /operations/{external_operation_id}.

    Вы также можете изменить состав корзины. Например:

    • убрать позиции, если покупатель отказался от части товаров;
    • добавить позиции, если покупатель совершил дополнительную покупку в ПВЗ.

    Для изменения корзины передайте новые значения для полей cart и orderAmount.

Если операция прошла успешно, заказ перейдет в статус CAPTURED. Отслеживать статус заказа можно через:

Нотификации

Бэкенд Яндекс Пэй отправит уведомление, если:

  • статус операции изменится на SUCCESS или FAILED;
  • статус заказа изменится на CAPTURED.

Для оповещения об изменениях статуса заказа или операции настройте обратный вызов (/webhook) от бэкенда Яндекс Пэй:

  1. Укажите публично доступный HTTPS URL-адрес бэкенда магазина в поле Callback URL в личном кабинете Яндекс Пэй в разделе Настройки.
  2. Настройте бэкенд магазина таким образом, чтобы он принимал запросы от бэкенда Яндекс Пэй. Подробнее о требованиях читайте в документации Merchant API.
Поллинг статуса заказа

Настройте регулярную отправку запросов о статусе заказа /orders/{order_id} к бэкенду Яндекс Пэй. Подтверждение заказа прошло успешно, если статус заказа изменился CAPTURED.

Поллинг статуса операции

Настройте регулярную отправку запросов о статусе операции /operations/{external_operation_id} к бэкенду Яндекс Пэй. Подтверждение заказа прошло успешно, если статус операции изменился на SUCCESS.

Возможные ошибки

Статус в карточке заказа в личном кабинете

Возможность повторить оплату

Недостаточно средств

Да, после пополнения баланса карты или счета, с которых выполняется списание первого платежа

Лимит на карте превышен

Да, пользователю необходимо увеличить лимит по карте

Карта просрочена

Нет

Операция недоступна для карты

Нет

Проблема с подтверждением платежа

Да

Покупатель не успел оплатить

Да

Покупатель не завершил оплату в срок жизни заказа в Пэй

Нет

Ошибка сервиса Пэй

Да

Возврат

Минимальная сумма возврата — 1 рубль.

image

  1. Бэкенд продавца (Merchant Back) запрашивает статус заказа у бэкенда Яндекс Пэй с помощью метода /orders/{order_id}.

  2. Бэкенд Яндекс Пэй (YaPay Back) возвращает статус заказа.

    Важно

    Полный возврат доступен только для заказов в статусе CAPTURED или PARTIALLY_REFUNDED.

  3. Бэкенд продавца отправляет запрос на возврат с помощью метода v2/orders/{order_id}/refund. В запросе рекомендуем задать параметр externalOperationId — в дальнейшем его можно использовать для отслеживания статуса операции.

  4. В ответ бэкенд Яндекс Пэй возвращает данные операции и статус:

    • PENDING — возврат в процессе;
    • SUCCESS — возвращен;
    • FAILED — ошибка при проведении возврата.

Если операция прошла успешно, заказ перейдет в статус REFUNDED. Отслеживать статус возврата можно через:

Нотификации

Бэкенд Яндекс Пэй отправит уведомление, если:

  • статус операции изменится на SUCCESS или FAILED;
  • статус заказа изменится на REFUNDED.

Для оповещения об изменениях статуса заказа или операции настройте обратный вызов (/webhook) от бэкенда Яндекс Пэй:

1. Укажите публично доступный HTTPS URL-адрес бэкенда магазина в поле Callback URL в личном кабинете Яндекс Пэй в разделе Настройки.

2. Настройте бэкенд магазина таким образом, чтобы он принимал запросы от бэкенда Яндекс Пэй. Подробнее о требованиях читайте в документации Merchant API.

Поллинг статуса заказа

Настройте регулярную отправку запросов о статусе заказа /orders/{order_id} к бэкенду Яндекс Пэй. Возврат прошел успешно, если статус заказа изменился REFUNDED.

Поллинг статуса операции

Настройте регулярную отправку запросов о статусе операции /operations/{external_operation_id} к бэкенду Яндекс Пэй. Возврат прошел успешно, если статус операции возврата изменился на SUCCESS.

image

  1. Бэкенд продавца (Merchant Back) запрашивает статус заказа у бэкенда Яндекс Пэй с помощью метода /orders/{order_id}.

  2. Бэкенд Яндекс Пэй (YaPay Back) возвращает статус заказа.

    Важно

    Частичный возврат доступен только для заказов в статусе CAPTURED или PARTIALLY_REFUNDED.

  3. Бэкенд продавца отправляет запрос на частичный возврат с помощью метода v2/orders/{order_id}/refund. В запросе рекомендуем задать параметр externalOperationId — в дальнейшем его можно использовать для отслеживания статуса операции.

  4. В ответ бэкенд Яндекс Пэй возвращает данные операции и статус:

    • PENDING — возврат в процессе;
    • SUCCESS— возвращен;
    • FAILED— ошибка при проведении возврата.

Если операция прошла успешно, заказ перейдет в статус PARTIALLY_REFUNDED или REFUNDED. Отслеживать статус частичного возврата можно через:

Нотификации

Бэкенд Яндекс Пэй отправит уведомление, если:

  • статус операции изменится на SUCCESS или FAILED;
  • статус заказа изменится на PARTIALLY_REFUNDED или REFUNDED.

Для оповещения об изменениях статуса заказа или операции настройте обратный вызов (/webhook) от бэкенда Яндекс Пэй:

1. Укажите публично доступный HTTPS URL-адрес бэкенда магазина в поле Callback URL в личном кабинете Яндекс Пэй в разделе Настройки.

2. Настройте бэкенд магазина таким образом, чтобы он принимал запросы от бэкенда Яндекс Пэй. Подробнее о требованиях читайте в документации Merchant API.

Поллинг статуса заказа

Настройте регулярную отправку запросов о статусе заказа /orders/{order_id} к бэкенду Яндекс Пэй. Возврат прошел успешно, если статус заказа изменился на PARTIALLY_REFUNDED или REFUNDED.

Поллинг статуса операции

Настройте регулярную отправку запросов о статусе операции /operations/{external_operation_id} к бэкенду Яндекс Пэй. Частичный возврат прошел успешно, если статус операции возврата изменился на SUCCESS.

Статусы, которые мы высылаем в интеграции

Примечание

Статусы AUTHORIZED и VOIDED в текущей интеграции не используются.

Статусы при проведении оплаты:

PENDING

Оплата еще в процессе, нужно запросить статус платежа позже. Не отправляется в нотификации.

FAILED

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

CONFIRMED

Оплата еще в процессе, идет проверка карты.

CAPTURED

Оплата совершена, денежные средства у клиента списаны. Терминальный успешный статус.

Статусы при проведении возврата:

FAILED

Процедура возврата неуспешна. Терминальный неуспешный статус.

REFUNDED

Возврат совершен. Терминальный успешный статус.

PARTIALLY_REFUNDED

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

Сценарии тестирования механики

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

Если вы настроили интеграцию по API Яндекс Пэй, в ходе тестирования рекомендуем использовать тестовые сценарии:

Сценарий

Действия

Ожидаемый результат

Среда

Успешная оплата с последующим клиром по инициативе продавца

  1. Создайте заявку на оплату методом orders с isPrepayment = true и откройте ссылку на оплату клиенту. В корзине должно быть несколько товаров одного productId.
  2. Перейдите по ссылке и оплатите покупку.
  3. Завершите бронь заказа и вызовите метод для клира средств orders/{order_id}/submit.
  1. По факту оплаты от Яндекс пришел webhook или на опрос статуса orders/{order_id} получен статус CONFIRMED.

  2. По факту клира средств от Яндекс пришел webhook или на опрос статуса orders/{order_id} получен статус CAPTURED.

  3. На основании полученного из Яндекс статуса на стороне продавца сформирован чек продажи и передан клиенту и в ФНС.

Test, Prod

Успешная оплата с отменой покупки до клира средств

  1. Создайте заявку на оплату методом orders с isPrepayment = true и откройте ссылку на оплату клиенту.

  2. Перейдите по ссылке и оплатите покупку.
  3. Инициируйте отмену заказа методом orders/{order_id}/rollback.
  1. По факту оплаты от Яндекс пришел webhook или на опрос статуса orders/{order_id} получен статус CONFIRMED.

  2. По факту отмены от Яндекс пришел webhook или на опрос статуса orders/{order_id} получен статус FAILED.

Test, Prod

Успешная оплата с частичным клиром средств

  1. Создайте заявку на оплату методом orders с isPrepayment = true и откройте ссылку на оплату клиенту.

  2. Перейдите по ссылке и оплатите покупку.
  3. Завершите бронь заказа с изменением состава в меньшую сторону и вызовите метод для клира средств orders/{order_id}/submit на итоговую корзину.
  1. По факту оплаты от Яндекс пришел webhook или на опрос статуса orders/{order_id} получен статус CONFIRMED.

  2. По факту клира средств от Яндекс пришел webhook или на опрос статуса orders/{order_id} получен статус CAPTURED.

  3. На основании полученного из Яндекс статуса на стороне продавца сформирован чек продажи и передан клиенту и в ФНС.

Test, Prod

Успешная оплата с частичным возвратом после клира средств

  1. Создайте заявку на оплату методом orders с isPrepayment = true и откройте ссылку на оплату клиенту.

  2. Перейдите по ссылке и оплатите покупку.
  3. Подтвердите покупку orders/{order_id}/submit.
  4. Выберите несколько товаров к возврату (не все) и осуществите возврат методом v2/orders/{order_id}/refund с последующей проверкой статуса возврата.
  1. По факту оплаты от Яндекс пришел webhook или на опрос статуса orders/{order_id} получен статус CONFIRMED.

  2. По факту клира средств от Яндекс пришел webhook или на опрос статуса orders/{order_id} получен статус CAPTURED.

  3. Частичный возврат осуществлен и получен статус заказа PARTIALLY_REFUNDED в webhook или на метод orders/{order_id}.

Test, Prod

Успешная оплата с полным возвратом после клира средств

  1. Создайте заявку на оплату методом orders и откройте ссылку на оплату клиенту.

  2. Перейдите по ссылке и оплатите покупку.
  3. Подтвердите покупку orders/{order_id}/submit.
  4. Выберите все товары к возврату и осуществите возврат методом v2/orders/{order_id}/refund с последующей проверкой статуса возврата.

  1. По факту оплаты от Яндекс пришел webhook или на опрос статуса orders/{order_id} получен статус CONFIRMED.

  2. По факту клира средств от Яндекс пришел webhook или на опрос статуса orders/{order_id} получен статус CAPTURED.

  3. Полный возврат осуществлен и получен статус заказа REFUNDED в webhook или на метод orders/{order_id}.

Test, Prod

Проверка ежедневного отчета о продажах

Проведите и оставьте без возврата успешные продажи на сумму не менее 500 рублей.

  1. На следующий день после тестов получен ежедневный отчет с операциями, где за аннулирование оплат до клира нет комиссии.
  2. В отчете указана начисленная комиссию за успешную оплату.

Prod