Регистрация повторяемых оплат
Помимо этой статьи для работы с повторяемыми оплатами могут быть полезны:
- статьи Повторяемая оплата со списаниями по запросам и Повторяемая оплата с автоматическими списаниями модели проведения платежей с описанием того, как в целом проводятся повторяемые оплаты в платёжной платформе ecommpay, какие операции при этом используются и как меняются статусы этих платежей и операций;
- статьи раздела Платёжные методы с описанием того, как регистрировать повторяемые оплаты через Payment Page при работе с различными платёжными методами и какие запросы и оповещения могут быть актуальны при этом.
Общая информация
Платёжная платформа ecommpay позволяет регистрировать повторяемые оплаты разными способами, в том числе при проведении платежей через интерфейсы Payment Page, Gate (подробнее) и Dashboard (подробнее), а также при переносе информации о повторяемых оплатах от стороннего эквайера (подробнее). В этом разделе представлена информация о регистрации повторяемых оплат с использованием Payment Page в рамках проведения оплат и проверки действительности платёжного инструмента.
Повторяемая оплата — это тип платежа, в рамках которого на основании одного исходного запроса осуществляется повторяемый перевод денежных средств от пользователя к мерчанту. При этом для проведения платежа используются сохранённые платёжные данные, а подтверждение подлинности платёжного инструмента пользователя (такое, как ввод кода проверки подлинности карты) не требуется.
Использование повторяемой оплаты может быть актуальным при выстраивании долгосрочных отношений с пользователями, когда важно предоставлять им возможность удобной оплаты без дополнительных действий с их стороны.
Базовыми действиями пользователя при регистрации повторяемых оплат с использованием Payment Page могут быть выбор платёжного инструмента, указание его реквизитов и ожидание уведомления о результате платежа.
В платёжной платформе поддерживаются следующие категории повторяемых оплат:
- Экспресс-оплаты. Списания в рамках таких оплат инициируются пользователем и выполняются без привязки к расписанию или сумме платежа. Например, пользователь онлайн-кинотеатра может оплатить прокат одного или нескольких фильмов с использованием сохранённых данных карты.
- Автооплаты. Списания в рамках таких оплат инициируются мерчантом и выполняются нерегулярно или на различные суммы. Например, когда остаток средств на счёте пользователя становится ниже заданного, выполняется списание средств с его платёжной карты для пополнения этого счёта.
- Регулярные оплаты. Списания в рамках таких оплат инициируются мерчантом по заданному графику и на фиксированную сумму. График таких списаний может храниться как на стороне веб-сервиса, так и на стороне платёжной платформы. Например, с пользователя онлайн-кинотеатра может ежемесячно списываться фиксированная сумма для оплаты доступа к просмотру всех фильмов кинотеатра.
Для регистрации любой повторяемой оплаты, вне зависимости от категории, необходимо получить согласие пользователя на хранение его платёжных данных и их дальнейшее использование на определённых условиях.
Для регистрации повторяемых оплат используются режимы работы платёжной формы Purchase или Card Verify. Для инициирования проведения повторяемой оплаты, изменения условий её проведения или её отмены, а также для выполнения возврата средств пользователю можно использовать Gate (для всех типов повторяемых оплат) и Dashboard (для регулярных оплат).
При изменениях в настройках системы провайдера может требоваться новая регистрация повторяемых оплат. В таких случаях от службы технической поддержки ecommpay мерчанту направляется письмо со списком идентификаторов повторяемых оплат, по которым следует выполнить регистрацию заново. Для этой регистрации необходимо уведомить пользователей о прекращении прежних списаний и необходимости инициирования новых, предварительно отвязав сохранённую карту, после чего инициировать регистрацию в платформе. Каждая вновь зарегистрированная повторяемая оплата получает новый идентификатор, который отправляется мерчанту в оповещении об успешной регистрации.
Схема работы
Для регистрации повторяемых оплат с помощью Payment Page со стороны веб-сервиса необходимо:
- Сформировать и отправить в платёжную платформу запрос на открытие Payment Page.
- Принять оповещение о результате выполнения запроса со стороны платёжной платформы.
При регистрации повторяемых оплат может потребоваться выполнение вспомогательных процедур:
- Аутентификация 3‑D Secure, при выполнении которой происходит перенаправление пользователя к сервису эмитента, где необходимо подтвердить свою подлинность кодом из SMS-сообщения или иным способом, либо отображается страница ожидания (в то время, пока эмитент подтверждает подлинность без участия пользователя).
- Аутентификация по инициативе мерчанта, при выполнении которой пользователю отображается дополнительная страница, на которой необходимо ввести проверочный код, полученный в SMS-сообщении или банковской выписке, при этом для аутентификации выполняется временная блокировка согласованной небольшой суммы. Такая аутентификация может использоваться в качестве замены аутентификации 3‑D Secure или для её дополнения.
- Дополнение информации о платеже, при выполнении которой пользователю отображаются соответствующее уведомление и дополнительные поля, которые требуется заполнить здесь же, на платёжной форме.
Такие процедуры выполняются без участия веб-сервиса мерчанта, но, как правило, требуют участия пользователя.
Информация о форматах запросов и оповещений для регистрации повторяемых оплат с прямым использованием платёжных карт представлена далее, а о форматах запросов и оповещений с использованием других платёжных методов представлена в разделе Методы.
Формат запросов
Формат запроса на открытие Payment Page для регистрации повторяемой оплаты соответствует описанному в разделе Описание Payment Page API. При формировании такого запроса необходимо учитывать следующее:
- Должен использоваться базовый минимум параметров, обязательный для любого платежа:
project_id
— идентификатор проекта, полученный от ecommpay;payment_id
— идентификатор платежа, уникальный в рамках проекта;customer_id
— идентификатор пользователя уникальный в рамках проекта;payment_amount
— сумма платежа в дробных единицах валюты; для регистрация повторяемой оплаты в рамках проверки действительности платёжного инструмента необходимо передавать значение0
;payment_currency
— код валюты платежа в формате ISO 4217 alpha-3;signature
— подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Работа с подписью к данным).
Внимание: С 12 августа 2024 года в связи с вступлением в силу новых требований платёжной системы Visa расширяется набор параметров, необходимых для аутентификации 3‑D Secure при проведении оплат с использованием карт этой платёжной системы. К параметрам, которые становятся обязательными для таких случаев, относятсяcustomer_email
иcustomer_phone
(подробнее). Эти параметры можно включать в состав запроса на открытие Payment Page или запрашивать у пользователей (подробнее). - Для регистрации повторяемой оплаты при проверке действительности платёжного инструмента необходимо дополнительно использовать параметр
mode
— индикатор режима работы Payment Page, для которого необходимо передавать значениеcard_verify
. - Для указания свойств повторяемой оплаты необходимо передавать параметр
recurring
— в виде объекта JSON, если для вызова платёжной формы используется JavaScript-библиотека ecommpay, или в виде строки, полученной в результате кодирования URL-encoding, если платёжная форма вызывается иным способом. Параметрrecurring
должен содержать основные сведения о регистрации повторяемой оплаты:register
, boolean — признак регистрации повторяемых оплат, для которого необходимо использовать значениеtrue
;type
, string — категория регистрируемой повторяемой оплаты, для которой необходимо указывать одно из следующих значений:C
— для экспресс-оплаты;U
— для автооплаты;R
— для регулярной оплаты;
period
, string — периодичность списаний (для регулярной оплаты), в параметре необходимо указывать одно из следующих значений:D
— ежедневно;W
— еженедельно;M
— ежемесячно (если установленный день отсутствует в следующем месяце, например 31, — списание происходит в последний день месяца);Q
— ежеквартально;Y
— ежегодно.
time
, string — время выполнения последующих списаний (для регулярной оплаты) в форматеhh:mm:ss
, передаётся, если указан параметрperiod
;interval
, integer — интервал между выбранным периодом проведения оплат, в параметре необходимо передавать числовое значение от1
до100
, например, каждые три недели. Параметр обязательно используется в связке с параметромperiod
.
- Для указания свойств регулярной оплаты в параметре
recurring
также могут использоваться и другие сведения:amount
, integer — фиксированная сумма последующих списаний в дробных единицах валюты;expiry_day
, integer или string — день окончания проведения повторяемой оплаты;expiry_month
, integer или string — месяц окончания проведения повторяемой оплаты;expiry_year
, integer — год окончания проведения повторяемой оплаты;start_date
, string — дата первого списания в форматеdd-mm-yyyy
(параметр обязательно используется в связке с параметромscheduled_payment_id
);scheduled_payment_id
, string — идентификатор платежа, в рамках которого следует выполнять списания; должен отличаться от идентификатора платежа, в рамках которого выполняется регистрация повторяемой оплаты, и быть уникальным в рамках проекта (также не стоит путать его с идентификатором серии списаний, передаваемым в параметреid
объектаrecurring
оповещения о регистрации повторяемой оплаты).Внимание: Если идентификаторы платежа, который необходимо присвоить повторяемой оплате (scheduled_payment_id
), и платежа, в рамках которого эта оплата регистрируется (payment_id
), совпадают, запрос на регистрацию отклоняется.
- Для отображения пользователю платёжной страницы на заданном языке в запросе дополнительно необходимо использовать параметр
language_code
— код языка в формате ISO 639-1 alpha-2. Если этот параметр не передан, платёжная страница отображается на языке, определённом автоматически (по языку браузера, языку региона или по умолчанию; подробнее). - Для добавления описания платежа можно использовать параметр
payment_description
, представляющий собой строку, которая отображается пользователю на странице с информацией о результате выполнения операции и мерчанту в интерфейсе Dashboard, а также передаётся мерчанту в составе оповещения о результате платежа. - Дополнительно могут использоваться любые другие параметры, применимые в режимах работы Purchase и Card Verify платёжной формы Payment Page. Полный список параметров вызова Payment Page представлен в разделе Параметры вызова платёжной формы.
Таким образом, запрос на регистрацию повторяемых оплат должен содержать:
- при проведении проверки действительности платёжного инструмента — параметры запроса на открытие Payment Page для проверки действительности платёжного инструмента и параметр
recurring
с данными о регистрации повторяемых оплат; - при проведении оплаты — параметры запроса на открытие Payment Page для проведения оплаты и параметр
recurring
с данными о регистрации повторяемых оплат.
Формат оповещений
Формат оповещения о выполнении оплаты или проверке действительности с регистрацией повторяемой оплаты соответствует описанному в разделе Оповещения.
В следующем примере содержится информация о том, что в рамках проекта 42
для пользователя customer_1
зарегистрировано проведение повторяемых оплат с использованием платёжной карты 431422******0056
.