Проведение оплаты с автоматическими списаниями
Общая информация
Повторяемая оплата с автоматическими списаниями — это тип платежа, в рамках которого на основании одного исходного запроса осуществляется серия регулярных переводов денежных средств от пользователя к мерчанту с использованием сохранённых платёжных данных и без подтверждения подлинности платёжного инструмента пользователя (такого, как ввод кода проверки подлинности карты).
В рамках платёжной платформы повторяемые оплаты с автоматическими списаниями проводятся в соответствии с моделью проведения платежей (подробнее).
Возможности управления повторными попытками списаний
В случаях, когда автоматическое списание в рамках регулярной оплаты отклоняется, например при недостатке средств на карте пользователя, в платёжной платформе ecommpay могут автоматически инициироваться повторные попытки выполнить такое списание спустя заданное время. Эта возможность подключается по согласованию с курирующим менеджером ecommpay и применяется, если она подключена для используемого проекта и при этом соблюдаются два условия:
- целевая оплата проводится с прямым использованием платёжной карты,
- списание отклонено на стороне платёжной системы или эмитента.
В других случаях при отклонении очередного списания в платформе ожидается следующее (согласно графику) и решения относительно необходимости дополнительных списаний или завершения серии списаний в целом должны приниматься на стороне мерчанта.
При использовании повторных попыток их количество и время на выполнение ограничиваются: для каждого очередного списания допускается не более 7 повторных попыток, которые могут быть выполнены в течение 6 суток. Интервал между первой (исходной) попыткой очередного списания и первой повторной попыткой, а также между первой и второй повторными попытками составляет 12 часов, интервал между остальными попытками — 24 часа. При этом проверяется, что до следующего очередного списания (согласно графику списаний) остаётся не менее 12,5 или 24,5 часов соответственно. Иначе повторные попытки прекращаются. Эти ограничения действуют для всех платежей в рамках любого проекта и не могут быть изменены.
Технически повторные попытки списаний выполняются следующим образом:
- При отклонении очередного списания со стороны платёжной системы или эмитента в платёжной платформе ecommpay проверяется возможность повторить попытку, и если эта возможность подтверждается, то к веб-сервису направляется оповещение об отклонении списания со статусом операции
decline
и с плановыми датой и временем повторной попытки. - В заданное время автоматически выполняется повторная попытка списания.
- Исходя из результата повторной попытки выполняются последующие действия:
- Если попытка приводит к переводу необходимых средств от пользователя к мерчанту, то к веб-сервису направляется оповещение о результате списания (со статусом операции
success
) и оплата проводится дальше согласно графику. - Если попытка отклоняется и в платёжной платформе подтверждается возможность выполнить следующую попытку, то к веб-сервису направляется повторное оповещение об отклонении списания (со статусом операции
decline
и с плановыми датой и временем следующей попытки) и шаг 2 повторяется. - Если попытка отклоняется и в платёжной платформе не подтверждается возможность выполнить следующую попытку, то к веб-сервису направляется итоговое оповещение об отклонении списания (со статусом операции
decline
и без информации о следующей попытке) и оплата проводится дальше согласно графику. В таком случае решения относительно необходимости дополнительных списаний или завершения серии списаний и оплаты в целом должны приниматься на стороне мерчанта.
- Если попытка приводит к переводу необходимых средств от пользователя к мерчанту, то к веб-сервису направляется оповещение о результате списания (со статусом операции
Вместе с тем, повторныеПовторные попытки списаний могут быть прекращены даже после того, как были запланированы — с помощью соответствующих программных запросов через Gate или инструментов интерфейса Dashboard, а также при изменении свойств повторяемой оплаты (в том числе при истечении срока её действия или отмене, что ведёт к изменению статуса платежа в целом и к отмене дальнейших списаний по нему). Кроме того, при необходимости всегда можно обращаться к специалистам технической поддержки ecommpay.
Схемы проведения
Проведение с инициированием списаний при регистрации платежа
В базовом случае, когда при регистрации повторяемой оплаты передаётся параметр scheduled_payment_id
, для проведения повторяемой оплаты с автоматическими списаниями необходимо:
- Зарегистрировать повторяемую оплату.
- Принять от платёжной платформы оповещение о результате списания.
- Продолжать принимать оповещения о результате каждого списания в рамках платежа.
Для изменения условий повторяемой оплаты или её отмены, а также для возврата средств после одного или нескольких списаний необходимо передать соответствующие запросы в платёжную платформу (подробнее — в статье Управление списаниями в рамках оплаты).
Информация о форматах запросов и оповещений приведена далее; общая информация о работе с API — в разделе Организация взаимодействия. Информацию о возможных статусах такой оплаты можно найти в соответствующей статье.
Проведение с отдельным инициированием списаний
В случае, если при регистрации повторяемой оплаты не передаётся параметр scheduled_payment_id
, для проведения повторяемой оплаты с автоматическими списаниями необходимо:
- Зарегистрировать повторяемую оплату.
- Передать запрос на проведение повторяемой оплаты с идентификатором записи о серии списаний.
- Принять от платёжной платформы оповещение о результате списания.
- Продолжать принимать оповещения о результате каждого списания в рамках платежа.
Проведение с повторными попытками списаний
В случае, если для проекта подключены повторные попытки списаний, необходимо:
- Зарегистрировать повторяемую оплату.
- Если при регистрации оплаты не был передан параметр
scheduled_payment_id
, передать запрос на проведение повторяемой оплаты с идентификатором записи о серии списаний (recurring.id
). - Принять от платёжной платформы оповещения о результате списания (одно или несколько, в зависимости от количества выполненных повторных попыток).
- Продолжать принимать оповещения о результате каждого планового списания и повторных попытках его выполнения (при их наличии) в рамках платежа. И при необходимости отменять выполнение повторных попыток для конкретных списаний (через Gate или Dashboard).
Стоит учитывать, что при отменах повторных попыток списаний оповещения о таких отменах не отправляются.
Чтобы отменить повторные попытки для конкретного списания, следует отправить запрос на отмену повторных попыток, принять ответ и при необходимости уведомить пользователя.
Формат запроса
Запрос на инициирование повторяемой оплаты
При работе с запросами на инициирование карточных повторяемых оплат с автоматическими списаниями необходимо учитывать следующее:
- Для инициирования каждой оплаты должен использоваться отдельный POST-запрос к конечной точке /v2/payment/card/recurring.
- В каждом запросе должны использоваться следующие объекты и параметры:
general
— объект, содержащий основные идентификационные сведения запроса:project_id
— идентификатор проекта, полученный от ecommpay при интеграции;,payment_id
— идентификатор платежа, уникальный в рамках проекта;,signature
— подпись запроса, составленная после указания всех целевых параметров (подробнее — в разделе Работа с подписью); (подробнее),
customer
— объект, содержащий сведения о пользователе:id
— идентификатор пользователя, уникальный в рамках проекта и имеющий то же значение, которое было использовано при регистрации данной повторяемой оплаты;,Внимание: Использование разных идентификаторов пользователя для операций в рамках одной повторяемой оплаты не допускаетсяip_address
— IP-адрес пользователя, актуальный для инициируемой операции;,
payment
— объект, содержащий сведения о платеже:amount
— сумма платежа в дробных единицах валюты;,currency
— код валюты платежа в формате ISO-4217 alpha-3;,
recurring
— объект, содержащий сведения повторяемой оплате:id
— идентификатор записи о серии списаний, полученный в оповещении после регистрации повторяемой оплаты или заданный при переносе информации об этой оплате от стороннего эквайера.
- С учётом региональных особенностей и специфики провайдеров, участвующих в проведении платежей, могут быть обязательны и некоторые другие параметры. Информацию о таких особенностях и требованиях провайдеров можно уточнять у курирующего менеджера ecommpay.
- Дополнительно могут использоваться любые другие параметры из числа указанных в спецификации.
Таким образом, в общем случае корректный запрос должен содержать идентификаторы проекта и платежа, подпись, IP-адрес пользователя, код валюты и сумму проведения платежа, а также идентификатор серии списаний.
Запрос на отмену повторных попыток списания
При работе с запросами на отмену повторных попыток отдельных списаний необходимо учитывать следующее:
- Для инициирования каждой отмены должен использоваться отдельный POST-запрос к конечной точке /v2/recurring/retry_stop.
- В каждом запросе должны использоваться следующие объекты и параметры:
general
— объект, содержащий основные идентификационные сведения запроса:project_id
— идентификатор проекта, полученный от ecommpay при интеграции;,signature
— подпись запроса, составленная после указания всех целевых параметров (подробнее — в разделе Работа с подписью); (подробнее),
recurring
— объект, содержащий сведения о повторяемой оплате:id
— идентификатор записи о серии списаний, полученный в оповещении после регистрации повторяемой оплаты или заданный при переносе информации об этой оплате от стороннего эквайера;,
trigger_operation_id
— идентификатор списания, для которого необходимо отменить выполнение повторных попыток.
Таким образом, корректный запрос на отмену повторных попыток должен содержать идентификаторы проекта, серии списаний и целевого списания, а также подпись.
Формат оповещений
От платёжной платформы к веб-сервису передаются оповещения с информацией о результате каждого списания в рамках повторяемой оплаты. Для этих оповещений используется типовой формат, описание которого представлено в разделе Оповещения.
В случае, если подключена возможность повторных попыток списаний, в таких оповещениях также содержится объект recurring_retry
, в который могут включаться следующие параметры:
trigger_operation_id
— идентификатор очередного списания, для которого была выполнена повторная попытка.retry_count
— номер повторной попытки (число от 1 до 7), если такая попытка была выполнена.next_retry_exists
— индикатор наличия следующей запланированной попытки.Этот параметр принимает значение
true
, если списание средств не было выполнено и возможность повторить попытку списания доступна (количество попыток и время на их выполнение не исчерпаны), и значениеfalse
во всех остальных случаях.next_retry_date
— дата и время следующей запланированной попытки.
В следующем примере оповещение свидетельствует о том, что в рамках проекта 42
для пользователя customer_12
было выполнено списание в размере 4,00 USD
с платёжной карты № 424242******4243
и ожидаются последующие списания. Возможность повторных попыток списаний не подключена.
В следующем примере содержится информация о том, что для отклонённого списания запланирована первая повторная попытка выполнить это списание ("next_retry_exists : true"
). В этом случае не указываются идентификатор целевого списания и идентификатор повторной попытки, поскольку ни одна повторная попытка ещё не выполнялась.
В следующем примере содержится информация о том, что в результате первой повторной попытки ("retry_count": 1
) списание 344589675
было отклонено, и для этого списания запланирована вторая повторная попытка ("next_retry_exists" : true
) на 2023-05-24T16:58:02+0000
.
В следующем примере содержится информация о том, что в результате второй повторной попытки ("retry_count": 2
) списание 344589675
было выполнено (привело к переводу средств от пользователя к мерчанту), и для этого списания больше не требуются повторные попытки ("next_retry_exists" : false
).
В следующем примере содержится информация о том, что для одного из списаний в рамках повторяемой оплаты не выполнялось и не планируется ни одной повторной попытки. Оповещения с такой информацией могут отправляться, когда списание привело к переводу средств с первой (исходной) попытки или повторные попытки не могут выполняться.