Автоплатежи
Автоплатеж — это повторяющийся платеж, который автоматически списывается с банковской карты или счета клиента после первой оплаты. Еще его называют рекуррентным платежом.
Автоплатежи удобны, когда нужно оформить подписку. Покупатель привязывает карту или счет и соглашается на регулярное списание, например, по графику раз в месяц. Следующий платеж списывается автоматически без участия покупателя.
Оплата картой
- Сценарии автоплатежей подходят при оплате через T-Pay и MIR Pay.
- Параметры, которые передаются в методе ИНИЦИИРОВАТЬ ПЛАТЕЖ, приоритетнее настроек, которые установлены на терминале.
По умолчанию возможность проводить автоплатежи через метод ПОДТВЕРДИТЬ ПЛАТЕЖ отключена. Чтобы ее включить:
- на DEMO-терминале — напишите на acq_help@tbank.ru;
- на боевом терминале — обратитесь к своему персональному менеджеру.
Автоплатежи проводятся последовательно в два этапа:
- Родительский платеж, когда происходит привязка карты покупателя.
- Рекуррентный платеж, когда мерчант списывает деньги с банковской карты без участия покупателя.
Одностадийная оплата
Для проведения родительского платежа:
- Вызовите метод ИНИЦИИРОВАТЬ ПЛАТЕЖ с указанием параметров
Recurrent=Y
иCustomerKey
. В параметреOperationInitiatorType
в объектеDATA
обязательно передайте признак инициатора операции. - Вызовите метод ПОЛУЧИТЬ ВЕРСИЮ 3DS для проверки ожидаемой версии 3DS протокола.
- Вызовите метод ПОДТВЕРДИТЬ ПЛАТЕЖ для оплаты заказа. Если нужно, проверьте прохождение 3DS-проверки через метод ПОДТВЕРДИТЬ ПРОХОЖДЕНИЕ 3DS.
- Когда клиент оплатит заказ, в уведомлении о статусе
AUTHORIZED
илиCONFIRMED
вернется параметрRebillId
— он отвечает за последующие повторные списания. Сохраните его.
Для проведения рекуррентного платежа:
Вызовите метод ИНИЦИИРОВАТЬ ПЛАТЕЖ со стандартными параметрами и укажите нужную сумму для списания в параметре
Amount
. В параметреOperationInitiatorType
в объектеDATA
обязательно передайте признак инициатора операции">признак инициатора операции. Передавать параметрыRecurrent
иCustomerKey
в этом случае не нужно.Вернется параметр
PaymentId
— сохраните его.Вызовите метод ПОДТВЕРДИТЬ ПЛАТЕЖ с параметрами
RebillId
иPaymentId
.- При успешном сценарии операция перейдет в статус
CONFIRMED
. - При неуспешном — в
REJECTED
, и покупатель будет перенаправлен на страницуFailURL
. ПЕРЕЧЕНЬ КОДОВ ОШИБОК и возможные ОШИБКИ 3DS.
- При успешном сценарии операция перейдет в статус
Двухстадийная оплата
Для проведения родительского платежа:
- Вызовите метод ИНИЦИИРОВАТЬ ПЛАТЕЖ с указанием параметров
Recurrent=Y
иCustomerKey
. В параметреOperationInitiatorType
в объектеDATA
обязательно передайте признак инициатора операции. - Вызовите метод ПОЛУЧИТЬ ВЕРСИЮ 3DS для проверки ожидаемой версии 3DS протокола.
- Вызовите метод ПОДТВЕРДИТЬ ПЛАТЕЖ для оплаты заказа. Если нужно, проверьте прохождение 3DS-проверки через метод ПОДТВЕРДИТЬ ПРОХОЖДЕНИЕ 3DS.
- Когда клиент оплатит заказ, в уведомлении о статусе
AUTHORIZED
илиCONFIRMED
вернется параметрRebillId
— он отвечает за последующие повторные списания. Сохраните его.
Для проведения рекуррентного платежа:
Вызовите метод ИНИЦИИРОВАТЬ ПЛАТЕЖ со стандартными параметрами и укажите нужную сумму для списания в параметре
Amount
. В параметреOperationInitiatorType
в объектеDATA
обязательно передайте признак инициатора операции. Передавать параметрыRecurrent
иCustomerKey
в этом случае не нужно.Вернется параметр
PaymentId
— сохраните его.Вызовите метод ПОДТВЕРДИТЬ ПЛАТЕЖ с параметрами
RebillId
иPaymentId
. При успешном сценарии операция перейдет в статусAUTHORIZED
.Вызовите метод ПОДТВЕРДИТЬ СПИСАНИЕ для подтверждения платежа.
- При успешном сценарии операция перейдет в статус
CONFIRMED
. - При неуспешном — в
REJECTED
, и покупатель будет перенаправлен на страницуFailURL
. ПЕРЕЧЕНЬ КОДОВ ОШИБОК и возможные ОШИБКИ 3DS.
- При успешном сценарии операция перейдет в статус
Передача признака инициатора операции
Платежным системам нужно знать, кем была инициирована карточная операция. Это особенно важно при проведении операций без 3DS и по сохраненным данным.
За выполнение требований регулятора отвечает параметр OperationInitiatorType
в методе ИНИЦИИРОВАТЬ ПЛАТЕЖ. Значение этого параметра содержит признаки того, кем была инициирована операция и какой способ предоставления реквизитов был использован:
- Сustomer Initiated (CIT), Credential-Captured — оплата инициирована покупателем, реквизиты карты сохраняются для последующих платежей.
- Сustomer Initiated (CIT), Credential-on-File — оплата инициирована покупателем по сохраненным реквизитам карты. Ранее была проведена операция с сохранением реквизитов (CIT CC).
- Merchant Initiated (MIT), Credential-on-File, Recurring — повторяющиеся платежи без графика по ранее сохраненным реквизитам карты (CIT CC). Инициированы магазином. Применяется для оплаты коммунальных услуг, услуг связи и прочего. Сумма может быть определена заранее или становится известна перед оплатой.
- Merchant Initiated (MIT), Credential-on-File, Installment — повторяющиеся платежи по графику по ранее сохраненным реквизитам карты (CIT CC). Инициированы магазином. Применяется для платежей в рассрочку, оплаты страховки в рассрочку и прочего. График платежей должен быть известен покупателю до проведения операции.
При проведении автоплатежа учитывайте взаимосвязь параметра RebillId
метода ПОДТВЕРДИТЬ ПЛАТЕЖ cо значениями параметров OperationInitiatorType
и Reccurent
метода ИНИЦИИРОВАТЬ ПЛАТЕЖ.
Если передавать значения параметров, которые не соответствуют значениям в таблице, вернется ошибка 1126
— «Несопоставимые значения RebillId
или Recurrent
с переданным значением OperationInitiatorType
».
Тип операции и инициатор | Credential-Captured (CIT CC) | Credential-on-File (CIT COF) | Credential-on-File, Recurring (MIT COF R) | Credential-on-File, Installment (MIT COF I) |
---|---|---|---|---|
Сценарий операции | Стандартный платеж с созданием родительского рекуррентного платежа | Рекуррентный платеж, инициированный покупателем | Рекуррентный платеж, инициированный магазином | Рекуррентный платеж, инициированный магазином |
OperationInitiatorType | 1 | 2 | R | I |
RebillId в ПОДТВЕРДИТЬ ПЛАТЕЖ | null | not null | not null | not null |
Reccurent в ИНИЦИИРОВАТЬ ПЛАТЕЖ | Y | N | N | N |
Обязательность CVP2/CVV | Обязателен, если не используется 3DS | Нет | Нет | Нет |
Обязательность аутентификации 3DS | Обязательна, если нет CVP2 или CVV | Нет | Нет | Нет |
Через СБП
Автоплатеж через СБП — это повторный платеж, который автоматически списывается с привязанного счета по QR. В отличие от автоплатежей по картам, у автоплатежа по СБП нет родительского платежа — вместо него привязывается счет.
Автоплатежи через СБП работают только по одностадийной схеме оплаты. Для их проведения нужно дополнительно настроить оплату через СБП по API:
- В личном кабинете интернет-эквайринга перейдите в раздел Магазины.
- На вкладке Способы оплаты в разделе Своя платежная форма включите систему быстрых платежей.
Автоплатежи проводятся последовательно в два этапа:
- Привязка счета.
- Автоплатеж, когда мерчант списывает деньги со счета без участия покупателя.
Автоплатеж с привязкой счета до оплаты
Перед проведением автоплатежа привяжите счет:
- Вызовите метод ПРИВЯЗАТЬ СЧЕТ.
- На
NotificationURL
в уведомлении о привязке счета вернется параметрAccountToken
— он будет отвечать за последующие повторные списания. Сохраните его.Уведомление с
AccountToken
придет на URL, который установлен в настройках терминала, а не на переданный в методе ИНИЦИИРОВАТЬ ПЛАТЕЖ. - Проведите платеж через СБП:
- Вызовите метод ИНИЦИИРОВАТЬ ПЛАТЕЖ с указанием дополнительных параметров
Recurrent=Y
иDATA={"QR":"true"}
для получения параметраPaymentId
. - Вызовите метод ПОДТВЕРДИТЬ ПЛАТЕЖ с параметром
AccountToken
, который вы сохранили на шаге 2.
- Вызовите метод ИНИЦИИРОВАТЬ ПЛАТЕЖ с указанием дополнительных параметров
Автоплатеж с привязкой счета после оплаты
- Вызовите метод ИНИЦИИРОВАТЬ ПЛАТЕЖ с указанием дополнительных параметров
Recurrent=Y
,DATA={"QR":"true"}
и обязательной передачей параметраDescription
с описанием заказа. - Вызовите метод ЗАРЕГИСТРИРОВАТЬ QR и проведите оплату.
- После успешной оплаты в уведомлении или ответе метода ЗАРЕГИСТРИРОВАТЬ QR вернется параметр
RequestKey
— он отвечает за привязку счета. - Вызовите метод ПОЛУЧИТЬ СТАТУС ПРИВЯЗКИ СЧЕТА и передайте параметр
RequestKey
из пункта 3. Это нужно для проверки статуса привязки счета клиента по магазину. - На
NotificationURL
в уведомлении о привязке счета вернется параметрAccountToken
— он будет отвечать за последующие повторные списания. Сохраните его.Уведомление с
ИНИЦИИРОВАТЬ ПЛАТЕЖ.AccountToken
вернется на URL, который установлен в настройках терминала, а не на переданный в методе - После успешной привязки счета проведите автоплатеж — вызовите метод ПОДТВЕРДИТЬ ПЛАТЕЖ с параметром
AccountToken
, который вы сохранили на шаге 5.
Особенности привязки счета при наличии нескольких терминалов
Если счет привязан к одному из терминалов мерчанта, автоплатежи будут выполняться на всех его терминалах.
Описание процесса:
- У мерчанта есть терминалы А и Б. Ранее покупатель проводил оплату только по терминалу А.
- Мерчант пробует провести автоплатеж по терминалу Б.
- Банк проверяет наличие привязки к терминалу Б.
- Если привязки к этому терминалу нет, банк проверяет ее наличие на других терминалах мерчанта по идентификатору магазина.
- Банк успешно находит привязку по терминалу А и разрешает проведение автоплатежа.