Погашения (1.20)

Download OpenAPI specification:Download

Общая информация

Описание продукта

Погашения C2A — это решение, позволяющее принимать переводы от физических лиц. Данные переводы совершаются для погашения займов и кредитов, пополнения инвестиционного или брокерского счета. Продукт актуален для ломбардов, банков и МФО, управляющих и инвестиционных компаний, а также брокеров. В продукте отсутствует возможность возврата/отмены операции.

Merchant API

Merchant API — один из инструментов Т‑Кассы для приема переводов от физических лиц. С помощью Merchant API (далее MAPI) Мерчанты могут настроить прием переводов на своих сайтах

Инструкция по использованию MAPI написана для разработчиков и тех, кто хочет самостоятельно настроить вызов платежной формы Т‑Банка или реализовать прием погашений по API на своих ресурсах

При подключении по схеме AFT/комиссия снизу вы можете настроить прием погашений в своём мобильном приложении с помощью SDK:

Какими терминами пользуемся в документации?

Термин Определение
Клиент Физлицо, производящее перевод с использованием банковской карты на сайте Мерчанта
Мерчант Бизнес, принимающий и осуществляющий переводы по банковским картам на своем сайте
Т‑Касса Сервис, помогающий проводить выплату клиенту-физлицу
Эмитент Банк, выпустивший карту клиента-физлица
PCI DSS Международный стандарт безопасности, созданный для защиты данных банковских карт
3-D Secure Протокол, который используется как дополнительный уровень безопасности для онлайн-кредитных и дебетовых карт. 3-D Secure добавляет ещё один шаг аутентификации для онлайн-переводов
Терминал Точка приема переводов Мерчанта (в общем случае привязывается к сайту, на котором осуществляется прием переводов) Далее в этой документации описан протокол для терминала мерчанта

Существующие схемы и их особенности

Тип подключения Описание Особенности вызова методов
Down Fee (AFT/комиссия снизу) Тип подключения, при котором комиссия Т‑Кассы берется из возмещения Мерчанту
Side Fee (BROKER/комиссия сбоку) Тип подключения, при котором комиссия Т‑Кассы берется из отдельного счета, а возмещения Мерчанту отправляются на специальный брокерский счет
Up Fee (ATOP/комиссия сверху) Тип подключения, при котором возмещение Мерчанту выплачивается в полном объеме, а комиссию эквайера оплачивает клиент Мерчанта Для мерчантов с PCI DSS после вызова метода Init необходимо вызвать метод GetFee.

Обработка карточных данных

Платежные системы разработали требования к безопасности карточных данных клиентов — Payment Card Industry Data Security Standard (PCI DSS). Компания должна пройти сертификацию, чтобы подтвердить надежность управления карточной информацией

Если у вас нет сертификации PCI DSS, вы можете использовать платежную форму Т‑Кассы. В этом случае, все операции, связанные с обработкой критичных данных производятся на стороне Т‑Кассы. Мерчанту достаточно настроить интеграцию с MerchantAPI и инициализировать перевод. Клиент будет перенаправлен на платежную форму, в которую он сможет ввести данные карты. Когда перевод завершится, клиент снова увидит сайт Мерчанта. Подключение по этому типу возможно с использованием методов, описанных в данной документации без пометки «Для Мерчантов с PCI DSS».

Если ваш ресурс соответствует требованиям PCI DSS, то вы можете собирать и хранить карточные данные клиентов. В таком случае, MerchantAPI получает зашифрованные карточные данные от Мерчанта. Подключение по этому типу возможно с использованием методов, описанных в данной документации с пометкой «Для Мерчантов с PCI DSS».

Передача признака инициатора операции

Платежные системы хотят понимать, кем была инициирована карточная операция. Особенно остро эта необходимость проявляется в случае проведения операций без 3ds и по сохраненным реквизитам

Для выполнения требования регулятора мы добавили в метод /Init новый атрибут OperationInitiatorType. В значении этого атрибута ожидаем получать признак того, кем была инициирована операция и какой способ предоставления реквизитов был использован

Подробное описание сценариев проведения операций, значений OperationInitiatorType, взаимосвязь с другими атрибутами и типами терминалов:

Тип операции и инициатор Описание Сценарий карточной операции OperationInitiatorType RebillId в /Charge Recurrent в /Init AFT терминал ECOM терминал
Сustomer Initiated Credential-Not-Captured (CIT CNC) Инициированная покупателем оплата без сохранения реквизитов карты для последующего использования Стандартный платеж 0 null N Разрешено Разрешено
Сustomer Initiated Credential-Captured (CIT CC) Инициированная покупателем оплата c сохранением реквизитов карты для последующего использования Стандартный платеж с созданием родительского рекуррентного платежа 1 null Y Разрешено Разрешено
Сustomer Initiated Credential-on-File (CIT COF) Инициированная покупателем оплата по сохраненным реквизитам карты (ранее была проведена операция с сохранением реквизитов CIT CC) Рекуррентный платеж, инициированный покупателем 2 not null N Запрещено Разрешено
Merchant Initiated Credential-on-File, Recurring (CIT COF R) Инициированные торговым предприятием повторяющиеся платежи без графика (ранее была проведена операция с сохранением реквизитов CIT CC). Применяются для оплаты коммунальных услуг, платежей за услуги связи, кабельное/спутниковое телевидение и т.п. Сумма может быть определена заранее или становится известна непосредственно перед оплатой Рекуррентный платеж, инициированный торговым предприятием R not null N Запрещено Разрешено
Merchant Credential-on-File, Installment (CIT COF I) Инициированные торговым предприятием повторяющиеся платежи по графику (ранее была проведена операция с сохранением реквизитов CIT CC). Применяется для платежей в рассрочку по товарному кредиту, для оплаты страховки в рассрочку, для погашения кредита в соответствии с графиком платежей. График платежей может быть изменен по соглашению сторон, то есть суммы и даты платежей должны быть известны плательщику (держателю карты) до момента проведения операции. Рекуррентный платеж, инициированный торговым предприятием I not null N Разрешено Запрещено

Подпись запроса

Перед выполнением запроса MAPI проверяет, можно ли доверять его инициатору. Для этого сервер проверяет подпись запроса. В MAPI используется механизм подписи с помощью токена. Мерчант должен добавлять токен к каждому запросу, где это требуется.

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

Токен в MAPI - это строка, в которой Мерчант зашифровал данные своего запроса с помощью пароля из Личного кабинета мерчанта.

Подпись запроса формируется индивидуально для каждого запроса на основе передаваемых в нем параметров в виде пар Ключ-Значение. В формировании запроса не участвуют объекты и массивы, а также передаваемые в них параметры.

Рассмотрим на примере процесс шифрования тела запроса:

{
    "TerminalKey": "TinkoffBankTest",
    "PaymentId": "2304882",
    "Amount": 19200
}

Чтобы зашифровать данные запроса Мерчант должен выполнить следующие шаги:

  1. Собрать массив передаваемых данных в виде пар Ключ-Значения. В массив нужно добавить только параметры корневого объекта. Вложенные объекты и массивы не участвуют в расчете токена. В примере ниже в массив включены параметры TerminalKey, PaymentId, Amount.
[{"TerminalKey": "TinkoffBankTest"},{"PaymentId": "2304882"},{"Amount": "19200"}]
  1. Добавить в массив пару {Password, Значение пароля}. Пароль можно найти в личном кабинете Мерчанта
[{"TerminalKey": "TinkoffBankTest"},{"PaymentId": "2304882"},{"Amount": "19200"},{"Password": "usaf8fw8fsw21g"}]
  1. Отсортировать массив по алфавиту по ключу.
[{"Amount": "19200"},{"Password": "usaf8fw8fsw21g"},{"PaymentId": "2304882"},{"TerminalKey": "TinkoffBankTest"}]
  1. Конкатенировать только значения пар в одну строку
"19200usaf8fw8fsw21g2304882TinkoffBankTest"
  1. Применить к строке хеш-функцию SHA-256
"d20308febb1c333c26d6b1e138d71d0be922475a97e69f41ee3eb0c525fa0f1c"
  1. Добавить получившийся результат в значение параметра Token в тело запроса и отправить запрос
{
    "TerminalKey": "TinkoffBankTest",
    "PaymentId": "2304882",
    "Amount": 19200,
    "Token":"d20308febb1c333c26d6b1e138d71d0be922475a97e69f41ee3eb0c525fa0f1c"
}

Сценарии переводов

Правила работы

Прием переводов осуществляется вызовом методов с передачей параметров методом POST в формате JSON. Все методы и передаваемые параметры являются чувствительными к регистру

Для POST-запроса в заголовке должен присутствовать Content Type: application/json URL: https://securepay.tinkoff.ru/v2/

Сценарии перевода

Основная сущность в Погашениях от Т‑Кассы — это перевод. В зависимости от настроек терминала перевод может идти по разным сценариям

Стандартный перевод

Инициализация перевода

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

При создании перевода (вызов метода /Init), в объекте DATA в атрибуте OperationInitiatorType необходимо передавать признак инициатора операции. См. метод /Init Инициализация перевода без PCI DSS и Инициализация перевода с PCI DSS

В ответ MAPI создаст новый перевод в статусе NEW и вернет обратно его идентификатор в параметре PaymentId

На следующем этапе Мерчант вызвает метод Check3DSVersion, в котором передает зашифрованные карточные данные клиента и PaymentId. Это нужно для проверки версии протокола 3D-Secure по карте. Она может быть либо версии 1.0, либо 2.0

Если в ответе метода Check3DSVersion есть параметр ThreeDSMethodURL, то браузер клиента должен вызывать ресурс, адрес которого пришел в параметре >ThreeDSMethodURL. В запросе нужно передать строковый параметр threeDSMethodData. Эта строка — закодированный в формате base64 JSON-объект с параметрами:

Название параметра Тип данных Описание
threeDSMethodNotificationURL string Обратный адрес, на который будет >отправлен запрос после прохождения 3DS Method
threeDSServerTransID string Идентификатор транзакции из ответа метода Check3DSVersion

Браузер должен вызвать 3DS Method в скрытом iframe и передать данные в формате x-www-form-urlencoded

Пример запроса на ThreeDSMethodURL:

<body onload="document.form.submit()">
<form name="form" action="{ThreeDSMethodURL}" method="post" >
<input type="hidden" name="threeDSMethodData" value="eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjU2ZTcxMmE1LTE5MGEtNDU4OC05MWJjLWUwODYyNmU3N2M0NCIsInRocmVlRFNNZXRob2ROb3RpZmljYXRpb25VUkwiOiJodHRwczovL3Jlc3QtYXBpLXRlc3QudGlua29mZi5ydS92Mi9Db21wbGV0ZTNEU01ldGhvZHYyIn0">
</form>
</body>

Пример декодированного значения threeDSMethodData:

{

"threeDSServerTransID":"56e712a5-190a-4588-91bc-e08626e77c44",
"threeDSMethodNotificationURL":"https://rest-api-test.tinkoff.ru/v2/>Complete3DSMethodv2"

}

Стандартный перевод

За проведение перевода отвечает метод — FinishAuthorize. Через него Мерчант передает в MAPI карточные данные клиента, таким образом продолжая обработку перевода

В ответ MAPI вернет один из возможных статусов:

Статус Описание Доступные действия
AUTH_FAIL Неуспешная авторизация Провести перевод заново
REJECTED Перевод отклонен Провести перевод заново
CONFIRMED Успешное подтверждение перевода -
AUTHORIZED Авторизация прошла успешно Подтвердить перевод
3DS_CHECKING Требуется подтверждение перевода по 3D-Secure Пройти подтверждение (действие доступно для клиента)

Оплата всегда проводится только по одностадийной схеме (списание автоматически подтверждается)

Без 3DS-подтверждения

Если по переводу не требуется проходить подтверждение 3DS, то MAPI в ответе FinishAuthorize вернет один из двух конечных статусов перевода:

  • CONFIRMED (при успешном сценарии),

  • REJECTED (при неуспешном сценарии).

C 3DS-подтверждением

Если в ответе метода FinishAuthorize вернулся статус перевода 3DS_CHECKING, то это означает, что требуется пройти проверку 3D-Secure. Для этого Мерчант должен сформировать запрос в сервис аутентификации банка, выпустившего карту. Адрес сервиса возвращается в ответе FinishAuthorize в параметре ACSUrl. Вместе с этим требуется перенаправить клиента на эту же страницу ACSUrl для прохождения 3DS.

В заголовке запроса требуется передать параметр Content-Type со значением application/x-www-form-urlencoded. Набор параметров в теле запроса зависит от версии протокола 3DS по карте

Завершение перевода

Если перевод завершился успешно, то клиент будет перенаправлен на страницу Success URL из настроек терминала

Рекуррентные переводы

Мерчант может сохранять платежные данные клиента и использовать их для повторных списаний. Такие переводы называются рекуррентными. В этом случае клиент должен совершить хотя бы один перевод, который был настроен как рекуррентный. Для этого Мерчант должен передать параметр Recurrent в методе Init.

После успешного перевода MAPI отправит Мерчанту уведомление об изменении статуса перевода на AUTHORIZED или CONFIRMED и передаст параметр RebillId. Следующие переводы этого клиента будут рекуррентными, если Мерчант вызовет метод Init, а затем без переадресации на PaymentURL вызовет метод Charge и передаст параметр RebillId

Платежи в 1 клик

Опция не предусмотрена для терминалов с комиссией сверху (ATOP)

Получение данных о переводе

Мерчант может получить информацию об основных параметрах перевода в любой момент

Если требуется получить данные по конкретному переводу, то Мерчант должен вызвать метод GetState и передать в запросе PaymentId

Если по одному заказу было несколько, то получить историю переводов и их текущий статус можно с помощью метода CheckOrder. Мерчант должен передать в запросе OrderId

Статусная модель переводов

В процессе обработки перевод меняет свое состояние. В таблице ниже описаны основные статусы, а также условия перехода в них

Статус Правило перехода
NEW MAPI получил запрос Init. После этого, он создает новый перевод в статусе NEW и возвращает обратно его идентификатор в параметре PaymentId и ссылку на платежную форму в параметре PaymentURL
FORM_SHOWED Мерчант перенаправил клиента на страницу платежной формы PaymentURL, и страница загрузилась у клиента в браузере
AUTHORIZING Перевод обрабатывается MAPI и платежной системой
3DS_CHECKING Перевод проходит проверку 3D-Secure
3DS_CHECKED Перевод успешно прошел проверку 3D-Secure
AUTHORIZED Перевод авторизован, деньги заблокированы на карте клиента
CONFIRMING Подтверждение перевода обрабатывается MAPI и платежной системой
CONFIRMED Перевод подтвержден, деньги списаны с карты клиента
DEADLINE_EXPIRED 1. Клиент не завершил перевод в срок жизни ссылки на платежную форму PaymentURL. Этот срок Мерчант передает в параметре RedirectDueDate при вызове метода Init.
2. Перевод не прошел проверку 3D-Secure в срок.
REJECTED Банк отклонил перевод
AUTH_FAIL Перевод завершился ошибкой или не прошел проверку 3D-Secure
PAY_CHECKING Перевод обрабатывается

Прием переводов для Мерчантов с PCI DSS

Схема проведения переводов

На схеме ниже - полный жизненный цикл перевода scheme

* Метод Cancel может быть применен только для переводов в статусе NEW и FORM_SHOWED

3DS 1.0

Если версия 3DS 1.0, то в запросе передаются параметры:

Название параметра Описание
MD Информация для идентификации перевода на стороне торговой точки. Придет в ответе метода FinishAuthorize
PaReq Запрос на аутентификацию плательщика, который содержит разные детали транзакции. Придет в ответе метода FinishAuthorize
TermURL Адрес перенаправления после аутентификации 3DS. Должен содержать ссылку на обработчик на стороне Мерчанта, принимающий результаты прохождения 3-D Secure
3DS 2.0

Если версия 3DS 2.0, то в запросе передаются параметры, в зависимости от типа устройства клиента. Тип устройства передается в запросе FinishAuthorize в параметре deviceChannel. Возможны два варианта — браузер (BRW, код 02) и приложение (APP, код 01).

Параметры для браузера:

Название параметра Тип данных Описание
creq string JSON с параметрами threeDSServerTransID, acsTransID,challengeWindowSize, messageType, messageVersion закодированный в формат base64

Строка creq для браузера формируется из следующих параметров:

Название параметра Тип данных Описание
threeDSServerTransID string Идентификатор транзакции из ответа метода FinishAuthorize
acsTransID string Идентификатор транзакции, присвоенный ACS, полученный в ответе на FinishAuthorize
challengeWindowSize string Размер экрана, на котором открыта страница ACS.Допустимые значения:
  • 01 = 250 x 400
  • 02 = 390 x 400
  • 03 = 500 x 600
  • 04 = 600 x 400
  • 05 = Full screen
  • messageType string Передается фиксированное значение «CReq»
    messageVersion string Версия 3DS, полученная из ответа метода Check3dsVersion

    Параметры для приложения:

    Название параметра Тип данных Описание
    creq string JWE object с параметрами threeDSServerTransID, acsTransID, messageType, messageVersion, sdkTransID, sdkCounterStoA закодированный в формат PS256

    Строка creq для приложения формируется из следующих параметров:

    Название параметра Тип данных Описание
    threeDSServerTransID string Идентификатор транзакции из ответа метода FinishAuthorize
    acsTransID string Идентификатор транзакции, присвоенный ACS, полученный в ответе на FinishAuthorize
    messageType string Передается фиксированное значение «CReq»
    messageVersion string Версия 3DS, полученная из ответа метода Check3dsVersion
    sdkTransID string Уникальный идентификатор транзакции, назначенный 3DS SDK для идентификации одной транзакции, полученный в ответе на FinishAuthorize
    sdkCounterStoA string Внутренний счетчик 3DS SDK внутри ACS. Поддерживаемые значения:
    000-255

    Подтверждение прохождения 3DS

    После того, как сервис аутентификации банка, выпустившего карту, прислал результат прохождения 3D-Secure, Мерчант должен передать эту информацию в MAPI. В зависимости от версии протокола 3DS для этого нужно вызвать один из методов:

    • Для 3DS 1.0 — Submit3DSAuthorization,
    • Для 3DS 2.0 — Submit3DSAuthorizationV2.

    Инициализация перевода

    Метод инициирует перевод

    Request Body schema: application/json
    required
    One of
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала. Выдается Мерчанту Т‑Кассой при заведении терминала

    Amount
    required
    number <= 10 characters
    • Сумма в копейках. Например, сумма 3руб. 12коп. — это число 312
    • Параметр должен быть равен сумме всех параметров Amount, переданных в объекте Items
    OrderId
    required
    string <= 36 characters

    Идентификатор заказа в системе Мерчанта

    Token
    string

    Подпись запроса.

    • Обязательность подписи запроса (token) задается отдельно через настройки терминала. Описание алгоритма формирования подписи доступно в Подпись запроса
    Description
    string <= 250 characters

    Описание заказа

    CustomerKey
    string <= 36 characters

    Идентификатор клиента в системе Мерчанта.

    • Обязателен, если передан атрибут Recurrent;
    • Если был передан в запросе, в нотификации будет указан CustomerKey и его CardId. См. метод GetCardList;
    • Необходим для сохранения карт на платежной форме (платежи в один клик).
    Recurrent
    string <= 1 characters

    Признак родительского рекуррентного платежа.

    • Для регистрации автоплатежа — обязателен. Если передается и установлен в Y, то регистрирует платеж как рекуррентный. В этом случае после оплаты в нотификации на AUTHORIZED будет передан параметр RebillId для использования в методе Charge. Для осуществления привязки и одновременной оплаты по CБП необходимо передавать 'Y'.

    Значение зависимо от атрибутов:

    Language
    string <= 2 characters

    Язык платежной формы

    • ru — русский,
    • en — английский. Если не передан, форма откроется на русском языке
    NotificationURL
    string <uri>

    URL на веб-сайте Мерчанта, куда будет отправлен POST запрос о статусе выполнения вызываемых методов (для настройки нужно обратиться на acq_help@tbank.ru):

    • Если параметр передан — используется его значение;
    • Если нет — значение в настройках терминала.
    SuccessURL
    string <uri>

    URL на веб-сайте Мерчанта, куда будет переведен клиент в случае успешного перевода (для настройки нужно обратиться на acq_help@tbank.ru):

    • Если параметр передан — используется его значение;
    • Если нет — значение в настройках терминала.
    FailURL
    string <uri>

    URL на веб-сайте Мерчанта, куда будет переведен клиент в случае неуспешного перевода (для настройки нужно обратиться на acq_help@tbank.ru):

    • Если параметр передан — используется его значение;
    • Если нет — значение в настройках терминала.
    RedirectDueDate
    any <date-time>

    Cрок жизни ссылки. Если текущая дата превышает дату, переданную в данном параметре, ссылка для перевода становится недоступной и перевод выполнить нельзя

    • Максимальное значение: 90 дней от текущей даты;
    • Минимальное значение: 1 минута от текущей даты;
    • Формат даты: YYYY-MM-DDTHH24:MI:SS+GMT;
    • Пример даты: 2016-08-31T12:28:00+03:00.
      Если не передан, принимает значение 24 часа для перевода и 30 дней для счета

    В случае, если параметр RedirectDueDate не был передан, проверяется настроечный параметр платежного терминала REDIRECT_TIMEOUT, который может содержать значение срока жизни ссылки в часах. Если его значение больше нуля, то оно будет установлено в качестве срока жизни ссылки. Иначе, устанавливается значение «по умолчанию» — 1440 мин.(1 сутки).

    object

    JSON-объект, который позволяет передавать дополнительные параметры по операции и задавать определенные настройки в формате "ключ":"значение"

    Максимальная длина для каждого передаваемого параметра:

    • ключ — 20 знаков,
    • значение — 100 знаков.

    Максимальное количество пар "ключ":"значение" — 20

    1. При использовании комиссии сверху на платежной форме возможно отображать номер договора займа. Для этого нужно передать параметр {"mfoAgreement":"номер договора займа на стороне клиента"} в "DATA" метода Init. Пример:
    "DATA":{"mfoAgreement":"1234"}
    
    1. Если у терминала включена опция привязки клиента после успешного перевода и передается параметр CustomerKey, то в передаваемых параметрах DATA могут присутствовать параметры метода AddCustomer. Если они присутствуют, то автоматически привязываются к клиенту. Например, если указать:
    "DATA":{"Phone":"+71234567890", "Email":"a@test.com"}
    

    к клиенту автоматически будут привязаны данные Email и телефон, и они будут возвращаться при вызове метода GetCustomer.

    Для МСС 4814 обязательно передать значение в параметре `Phone`.
    Требования по заполнению: 
      * минимум 7 символов,
      * максимум 20 символов,
      * разрешены только цифры, исключение — первый символ может быть «+».
    
    Для МСС 6051 и 6050 обязательно передать параметр `account` (номер электронного кошелька, не должен превышать 30 символов). Пример:
    ```
    "DATA": {"account":"123456789"}
    ```
    
    1. Если используется функционал сохранения карт на платежной форме, то при помощи опционального параметра DefaultCard можно задать какая карта будет выбираться по умолчанию. Возможные варианты:
    • Оставить платежную форму пустой. Пример:
      "DATA":{"DefaultCard":"none"}
      
    • Заполнить данными передаваемой карты. В этом случае передается CardId. Пример:
       "DATA":{"DefaultCard":"894952"}
      
    • Заполнить данными последней сохраненной карты. Применяется, если параметр DefaultCard не передан, передан с некорректным значением или в значении null. По умолчанию возможность сохранение карт на платежной форме может быть отключена. Для активации обратитесь в службу технической поддержки.
    1. При передаче в объекте DATA атрибута OperationInitiatorType учитывать взаимосвязь его значений с:
      • Значением атрибута Reccurent в методе /Init;
      • Значением атрибута RebillId в методе /Charge;
      • Типом терминала, используемом для проведения операций (ECOM/AFT).

    Подробную таблицу см. в разделе Передача признака инициатора операции

    В случае передачи значений атрибутов не соответствующих таблице — MAPI вернет ошибку 1126 (Несопоставимые значения rebillId или Recurrent с переданным значением OperationInitiatorType)

    PayForm
    string
    Deprecated
    Value: "mfo"

    Ранее для комиссии сверху заполнение атрибута было обязательно. В настоящий момент атрибут не используется. Вносить изменения в ранее созданные интеграции не требуется.

    Descriptor
    string

    Динамический дескриптор точки

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 140000,
    • "OrderId": "21050",
    • "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc7b96",
    • "Description": "Подарочная карта на 1400.00 рублей",
    • "CustomerKey": "string",
    • "Recurrent": "Y",
    • "Language": "ru",
    • "NotificationURL": "http://example.com",
    • "SuccessURL": "http://example.com",
    • "FailURL": "http://example.com",
    • "RedirectDueDate": null,
    • "DATA": {
      },
    • "PayForm": "mfo",
    • "Descriptor": "678451"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 100000,
    • "OrderId": "21050",
    • "Success": true,
    • "Status": "NEW",
    • "PaymentId": "13660",
    • "ErrorCode": "0",
    • "Message": "Неверные параметры",
    • "Details": "0"
    }

    Расчет суммы комиссии

    Метод используется для комиссии сверху (ATOP) с PCI DSS
    Метод используется для подсчета суммы комиссии. Его необходимо вызывать после метода Init и до FinishAuthorize

    Request Body schema: application/json
    PaymentId
    required
    string

    Уникальный идентификатор транзакции в системе Т‑Кассы

    SourceCard
    required
    string
    Enum: "CardNumber" "CardId"

    Источник карты:

    • Для несохраненных карт необходимо передавать значение CardNumber;
    • Для сохраненных карт необходимо передавать значение CardId.
    required
    object (FeeCardDataForGetFee)

    Объект с данными для проведения платежа в зависимости от способа оплаты.
    В объекте FeeCardData должен быть обязателен для передачи один из параметров: PAN/CardId в зависимости от значения, переданного в параметре SourceCard.
    Пример: если SourceCard="CardId", то на вход в объект FeeCardData обязательно должен быть передан параметр CardId с идентификатором карты

    Responses

    Request samples

    Content type
    application/json
    {
    • "PaymentId": "89453681",
    • "SourceCard": "CardNumber",
    • "FeeCardData": {
      }
    }

    Response samples

    Content type
    application/json
    {
    • "AmountIncludingFee": 16450934,
    • "ErrorCode": "0",
    • "FeeAmount": 327469,
    • "Success": true
    }

    Проверка версии 3DS

    Для Мерчантов с PCI DSS
    Проверяет поддерживаемую версию 3DS протокола по карточным данным из входящих параметров

    При определении второй версии, возможно в ответе получение данных для прохождения дополнительного метода 3DS Method, который позволяет эмитенту собрать данные браузера клиента — это может быть полезно при принятии решения в пользу Frictionless Flow (аутентификация клиента без редиректа на страницу ACS)

    Request Body schema: application/json
    required
    PaymentId
    required
    string <= 20 characters

    Идентификатор перевода в системе Т‑Кассы

    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала, выдается Мерчанту Т‑Кассой

    CardData
    required
    any

    Зашифрованные данные карты в формате:

    PAN=4300000000000777;ExpDate=0519;CardHolder=IVAN PETROV;CVV=111
    

    type: string

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    {
    • "PaymentId": "13660",
    • "TerminalKey": "TinkoffBankTest",
    • "CardData": "U5jDbwqOVx+2vDApxe/rfACMt+rfWXzPdJ8ZXxNFVIiZaLZrOW72bGe9cKZdIDnekW0nqm88YxRD↵jyfa5Ru0kY5cQV alU+juS1u1zpamSDtaGFeb8sRZfhj72yGw+io+qHGSBeorcfgoKStyKGuBPWfG↵d0PLHuyBE6QgZyIAM1XfdmNlV0UAxOnkTGDsskL pIt3AWhw2e8KOar0vwbgCTDjznDB1/DLgOW01↵Aj/bXyLJoG1BkOrPBm9JURs+f+uyFae0hkRicNKNgXoN5pJTSQxOEauOi6ylsVJ B3WK5MNYXtj6x↵GlxcmTk/LD9kvHcjTeojcAlDzRZ87GdWeY8wgg==",
    • "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e"
    }

    Response samples

    Content type
    application/json
    {
    • "Version": "2.1.0",
    • "TdsServerTransID": "17d3791b-5cfa-4318-bc23-3d949e8c4b7e",
    • "PaymentSystem": "mir",
    • "Success": true,
    • "ErrorCode": "0",
    • "Message": "None",
    • "Details": "None"
    }

    Прохождение этапа “3DS Method”

    Для Мерчантов с PCI DSS
    Если в ответе метода Check3DSVersion был получен параметр ThreeDSMethodURL, то необходимо отправить запрос на стороне браузера по полученному ThreeDSMethodURL. Это необходимо для сбора информации ACS-ом о девайсе клиента. Отправка запроса 3DS Method в браузере должна происходить в скрытом frame.
    Время ожидания выполнения метода не более 10 секунд

    Request Body schema: application/x-www-form-urlencoded
    threeDSMethodData
    required
    string

    JSON с параметрами threeDSMethodNotificationURL, threeDSServerTransID, закодированный в формат base-64

    Название параметра Тип Описание
    threeDSMethodNotificationURL string Обратный адрес, на который будет отправлен запрос после прохождения threeDSMethod
    threeDSServerTransID string Идентификатор транзакции из ответа метода

    Responses

    Request samples

    <body onload="document.form.submit()">
    <form name="form" action="{ThreeDSMethodURL}" method="post">
      <input type="hidden" name="threeDSMethodData" value="eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjU2ZTcxMmE1LTE5MGEtNDU4OC05MWJjLWUwODYyNmU3N2M0NCIsInRocmVlRFNNZXRob2ROb3RpZmljYXRpb25VUkwiOiJodHRwczovL3Jlc3QtYXBpLXRlc3QudGlua29mZi5ydS92Mi9Db21wbGV0ZTNEU01ldGhvZHYyIn0">
    </form>
    </body>
    

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

    Для Мерчантов с PCI DSS
    Подтверждает перевод передачей реквизитов, а также списывает денежные средства с карты клиента. Используется, если у площадки есть сертификация PCI DSS и собственная платежная форма

    Request Body schema: application/json
    required
    One of
    TerminalKey
    required
    string

    Идентификатор терминала. Выдается Мерчанту Т‑Кассой при заведении терминала

    PaymentId
    required
    string

    Уникальный идентификатор транзакции в системе Т‑Кассы

    Token
    required
    string

    Подпись запроса

    IP
    string

    IP-адрес клиента

    Обязательный параметр для 3DS второй версии. DS платежной системы требует передавать данный адрес в полном формате, без каких-либо сокращений (8 групп по 4 символа)

    Данный формат регламентируется на уровне спецификации EMVCo

    Пример правильного адреса: 2011:0db8:85a3:0101:0101:8a2e:0370:7334
    Пример неправильного адреса: 2a00:1fa1:c7da:9285:0:51:838b:1001

    3DSv2 (object) or object

    JSON объект, содержащий дополнительные параметры в виде ключ:значение.
    Данные параметры будут переданы на страницу оплаты (в случае ее кастомизации).

    Максимальная длина для каждого передаваемого параметра:

    • ключ — 20 знаков,
    • значение — 100 знаков.

    Максимальное количество пар ключ:значение не может превышать 20

    CardData
    required
    string

    Объект CardData собирается в виде списка ключ=значение c разделителем ;. Объект зашифровывается открытым ключом (X509 RSA 2048), получившееся бинарное значение кодируется в Base64. Открытый ключ генерируется Т‑Кассой и выдается при регистрации терминала. Все поля обязательны.

    Наименование Тип данных Обязательность Описание
    PAN Number ДА Номер карты
    ExpDate Number Да Месяц и год срока действия карты в формате MMYY
    CardHolder String Нет Имя и фамилия держателя карты (как на карте)
    CVV String Нет Код защиты (с обратной стороны карты).
    ECI String Нет Electronic Commerce Indicator. Индикатор, показывающий степень защиты, применяемую при предоставлении клиентом своих данных ТСП
    CAVV String Нет Cardholder Authentication Verification Value или Accountholder Authentication Value

    Пример значения элемента формы CardData:

    PAN=4300000000000777;ExpDate=0519;CardHolder=IVAN PETROV;CVV=111
    

    В случае получения CAVV в CardData перевод будет проводиться как оплата токеном, иначе прохождение 3DS будет регулироваться стандартными настройками терминала/перевода

    Amount
    number <= 10 characters

    Сумма в копейках

    deviceChannel
    string

    Канал устройства. Поддерживается следующий канал устройства:

    • 01 = Application (APP),
    • 02 = Browser (BRW).

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "PaymentId": "700001702044",
    • "Token": "f5a3be479324a6d3a4d9efa0d02880b77d04a91758deddcbd9e752a6df97cab5",
    • "IP": "2011:0db8:85a3:0101:0101:8a2e:0370:7334",
    • "DATA": {
      },
    • "CardData": "eyJzaWduYXR1cmUiOiJNRVVDSVFEdjNJS1A5WG9nWml4RytUUm9zZWFDK0RGd3RKd2FtMHVEcm91RUVGZVB6Z0lnYXBFbHhxQ3AwQWtZcVVmTFVMaVNhUjBKWkVQNmg 4THFqYks5YkJKQnM5d1x1MDAzZCIsInByb3RvY29sVmVyc2lvbiI6IkVDdjEiLCJzaWduZWRNZXNzYWdlIjoie1wiZW5jcnlwdGVkTWVzc2FnZVwiOlwiQW11dm5OYUIralBsa3VKTitrMUZLSDZFcm1VK2lTY052 L05rR3FFaXIxOHZmSWxkVFJ5L2U4cW5zMXkyanFtcm1acU1JSWNYMUhyTHBxRURpaXkvS3B6SUhNZFllcXRkSVVNOU1tRjNpejU2d2NTZUVVaXU2ODI3QThGcitaYm8xRWtWRjY1TUxRYVY3NlBOUFRndH UvQ1BodW5HUk0rN25KdVhDczVtbkVvOHFma0RNVk8xWktGWDQ4TnVEL2FKcDJQdVVIY2puSnBTZ0pTSDB4U21YSnAzU1MreXFDNm54N254WUEwN2h4YjYvSnp2R2s3ZExDU2hWWGU1Z2haUjNDaFQyV W8rRnpXTWJRRGZtSjBLQW9kc2VlR0xaaitqMzVqOUlKMkhJRFhIUUZZMWNuTW9YVUVoTjgvdEkvRkpqRnJiYVdFRkIzRDZwOFUzT2tkUmVaNHAyYi8yYURNZXVxR1ozSUtjc3R0R2lKMFhQQVhhZXYyQU8 o1M3RRQXVqQXRYdFlaekNTVjVBVXdXZS85T1VcXHUwMDNkXCJ9In0=",
    • "Amount": 10000,
    • "deviceChannel": "BRW"
    }

    Response samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 100000,
    • "OrderId": "21050",
    • "Success": true,
    • "Status": "NEW",
    • "PaymentId": "13660",
    • "ErrorCode": "0",
    • "Message": "Неверные параметры",
    • "Details": "0",
    • "RebillId": "21813157",
    • "CardId": "string"
    }

    Запрос в банк-эмитент, для прохождения 3ds

    Для Мерчантов с PCI DSS
    Для 3DS v1.0: ACSUrl возвращается в ответе метода Check3DSVersion. Если в ответе метода Check3DSVersion возвращается статус 3DS_CHECKING, Мерчанту необходимо сформировать запрос на URL ACS банка, выпустившего карту (в ответе метода /Check3DSVersion параметр ACSUrl)
    Для 3DS v2.1: Если в ответе метода Check3DSVersion возвращается статус 3DS_CHECKING, Мерчанту необходимо сформировать запрос на URL ACS банка, выпустившего карту (в ответе параметр ACSUrl).
    Компонент ACS использует пары сообщений CReq и CRes для выполнения Проверки (Challenge). В ответ на полученное сообщение CReq компонент ACS формирует сообщение CRes, которое запрашивает держателя карты ввести данные для аутентификации

    Формат ответа: CRes, полученный по cresCallbackUrl из запроса Check3DSVersion
    При успешном результате прохождения 3-D Secure подтверждается инициированный платеж с помощью методов Submit3DSAuthorization или Submit3DSAuthorizationV2 в зависимости от версии 3DS
    URL: ACSUrl (возвращается в ответе метода Check3DSVersion)

    Request Body schema: application/x-www-form-urlencoded
    One of
    MD
    required
    string

    Уникальный идентификатор транзакции в системе Банка (возвращается в ответе на Check3DSVersion)

    PaReq
    required
    string

    Результат аутентификации 3-D Secure (возвращается в ответе на Check3DSVersion)

    TermUrl
    required
    string

    Адрес перенаправления после аутентификации 3-D Secure (URL обработчик на стороне Мерчанта, принимающий результаты прохождения 3-D Secure)

    Responses

    Request samples

    <body onload="document.form.submit()" >
    <form name="form" action="{ACSUrl}" method="post" >
      <input type="hidden" name="TermUrl" value="{TermUrl}" >
      <input type="hidden" name="MD" value="{MD}" >
      <input type="hidden" name="PaReq" value="{PaReq}" >
    </form>
    </body>
    

    Response samples

    Content type
    application/json
    {
    • "cres": "FwlGfSwmRARfDXsgt1PBvbtYTIMY2l2SThPEeei6aFwlGfSwmRARfDXsgt1PBvbtYTIMY2l2SThPEeei6aGIdXfZ3psSfuKZt3O35yCVpfAbYs8AmIdIHQmJyskyNxYZyGIdXfZ3psSfuKZt3O35yCVpNkQwzuH68WlB9oiEnt6NdGaegzJ6ljDlKAl7tvQNCPw2FjDWbhHlxj34ut0hhivaJBNHSmvumv7sndTpA7AzxJYNUhkp67fG411fAbYs8AmIdIHQmJyskyNxYZy"
    }

    Подтверждение прохождения 3DS v1.0

    Для Мерчантов с PCI DSS
    Осуществляет проверку результатов прохождения 3-D Secure и при успешном результате прохождения 3-D Secure подтверждает инициированный перевод и осуществляет списание денежных средств с карты клиента.
    Статус при успешном сценарии: CONFIRMED.
    Статус при неуспешном сценарии: REJECTED.
    Формат запроса: x-www-form-urlencoded

    После получения на TermUrl мерчанта ответа ACS с результатами прохождения 3-D Secure необходимо сформировать запрос к методу Submit3DSAuthorization

    Request Body schema: application/x-www-form-urlencoded
    required
    MD
    required
    string

    Уникальный идентификатор транзакции в системе Т‑Кассы (возвращается в ответе от ACS)

    PaRes
    required
    string

    Шифрованная строка, содержащая результаты 3-D Secure аутентификации (возвращается в ответе от ACS)

    PaymentId
    required
    string

    Уникальный идентификатор транзакции в системе Т‑Кассы

    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала, выдается Мерчанту Т‑Кассой

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    <body onload="document.form.submit()">
    <form name="form" action="https://securepay.tinkoff.ru/v2/Submit3DSAuthorization" method="post">
      <input type="hidden" name="MD" value="2561504">
      <input type="hidden" name="PaRes" value="eJxVUttygjAU/BWG1w4mXKXOMY5WOrVTrOOtl7cAqeJI1AAO+vVNFKrlaffkZM9mD9Crsq12ZCJPd7yrmy2sa4zHuyTlq66+mD8bvt4jMF8LxoYzFpeCEQhZntMV09JE3vC8Hx9j27A8LzEcN7aNCPu24VIrihKXetiPdAKT/pQdCNSDiJzTsgA1VCqKeE15QYDGh8FoTBy73fZtQDWFjInRkFi4+Uz82JbH1zJwmjEyHcwAXRDEu5IX4kQ8R/Y0BEqxJeui2HcQOlGesKolSkCqCuhmYFIqlEuVKk3IDL8uPwI3jDaBGZ4XeLxZVeFw5I7nX11AqgMSWjDpzPSxb/ma6XRct4Pl4y51oJkar5zLx1wx7NWI/t3BfQFkxkKuoHHfMGDVfseZugLoDwO6+X16UfHFhUyk/32OMH3vZ5+nYBu/2d4xcMTDsn04j19VqJcmpZjKYKT3q6QigJQMqveF6lVL9O8X+AWMIbbt">
      <input type="hidden" name="PaymentId" value="10063">
      <input type="hidden" name="TerminalKey" value="TinkoffBankTest">
      <input type="hidden" name="Token" value="871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" >
    </form>
    

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "OrderId": "21050",
    • "Success": true,
    • "Status": "CONFIRMED",
    • "PaymentId": "10063",
    • "ErrorCode": "0"
    }

    Подтверждение прохождения 3DS v2.1

    Для Мерчантов с PCI DSS
    Осуществляет проверку результатов прохождения 3-D Secure v2 и при успешном результате прохождения 3-D Secure v2 подтверждает инициированный перевод и осуществляет списание денежных средств с карты клиента.
    Статус при успешном сценарии: CONFIRMED.
    Статус при неуспешном сценарии: REJECTED.
    Формат запроса: x-www-form-urlencoded

    После получения на TermUrl Мерчанта ответа ACS с результатами прохождения 3-D Secure необходимо сформировать запрос к методу Submit3DSAuthorization

    Request Body schema: application/x-www-form-urlencoded
    required
    PaymentId
    required
    string

    Уникальный идентификатор транзакции в системе Т‑Кассы

    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала, выдается Мерчанту Т‑Кассой

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    <body onload="document.form.submit()">
    <form name="form" action="https://securepay.tinkoff.ru/v2/Submit3DSAuthorizationV2" method="post">
      <input type="hidden" name="PaymentId" value="10063">
      <input type="hidden" name="TerminalKey" value="TinkoffBankTest">
      <input type="hidden" name="Token" value="871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" >
    </form>
    

    Response samples

    Content type
    application/json
    {
    • "OrderId": "21050",
    • "TerminalKey": "TinkoffBankTest",
    • "Status": "CONFIRMED",
    • "PaymentId": "10063",
    • "Success": true,
    • "ErrorCode": "0"
    }

    Получение статуса перевода

    Мерчант может получить информацию об основных параметрах перевода в любой момент.
    Если требуется получить данные по конкретному переводу, то Мерчант должен вызвать метод GetState и передать в запросе PaymentId.
    Если по одному заказу было несколько, то получить историю переводов и их текущий статус можно с помощью метода CheckOrder. Мерчант должен передать в запросе OrderId.

    Request Body schema: application/json
    required
    One of
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала. Выдается Мерчанту Т‑Кассой при заведении терминала

    PaymentId
    required
    string <= 20 characters

    Идентификатор перевода в системе Т‑Кассы

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "PaymentId": "13660",
    • "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc7b96"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 100000,
    • "OrderId": "21050",
    • "Success": true,
    • "Status": "NEW",
    • "PaymentId": "13660",
    • "ErrorCode": "0",
    • "Message": "OK",
    • "Details": "0"
    }

    Получение статуса заказа

    Мерчант может получить информацию об основных параметрах перевода в любой момент.
    Если требуется получить данные по конкретному переводу, то Мерчант должен вызвать метод GetState и передать в запросе PaymentId.
    Если по одному заказу было несколько, то получить историю переводов и их текущий статус можно с помощью метода CheckOrder. Мерчант должен передать в запросе OrderId.

    Request Body schema: application/json
    required
    TerminalKey
    required
    string

    Идентификатор терминала выдается Мерчанту Т‑Кассой

    OrderId
    required
    string

    Номер заказа в системе Мерчанта

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "OrderId": "21057",
    • "Token": "4c4c36adf9936b011879fa26f60759e7b47e57f7968283129b0ae9ac457486ab"
    }

    Response samples

    Content type
    application/json
    Example
    {
    • "Success": true,
    • "ErrorCode": "0",
    • "Message": "OK",
    • "TerminalKey": "TinkoffBankTest",
    • "OrderId": "21050",
    • "Payments": [
      ]
    }

    Получение справки по операции

    Справку по конкретной операции можно получить на:
    1. URL-сервиса, развернутого на своей стороне.
    2. Электронную почту.

    Request Body schema: application/json
    One of
    TerminalKey
    required
    string

    Идентификатор терминала, выдается Мерчанту Т‑Кассой

    CallbackUrl
    required
    string

    URL сервиса получения справок

    PaymentIdList
    required
    Array of numbers

    Json-массив, содержащий в себе перечень paymentID (уникальных идентификаторов в системе Т‑Кассы) c типом Number

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CallbackUrl": "https://www.tinkoff.ru",
    • "PaymentIdList": [
      ],
    • "Token": "f2fdd7fec8225872590e1558b7ea258c75df8f300d808006c41ab540dd7514d9"
    }

    Response samples

    Content type
    application/json
    Example
    {
    • "Success": true,
    • "ErrorCode": 0,
    • "Message": "OK",
    • "Details": "None",
    • "PaymentIdList": {
      }
    }

    Прием переводов для Мерчантов без PCI DSS

    Схема проведения переводов

    На схеме ниже - полный жизненный цикл перевода scheme

    * Метод Cancel может быть применен только для переводов в статусе NEW и FORM_SHOWED

    Методы Authorize и FinishAuthorize вызываются системами Т‑Кассы при переадресации клиента на PaymentURL (возвращается в ответе на метод Init). Актуально для Мерчантов, использующих платежную форму Банка

    Метод Authorize

    Вызов происходит автоматически при переадресации клиента на страницу PaymentURL, указанную в ответе на Init. Статус перевода выставляется в FORMSHOWED

    Метод FinishAuthorize

    Подтверждает инициированный перевод передачей карточных данных и осуществляет списание денежных средств с карты клиента

    Осуществление перевода на платежной форме Т‑Кассы

    Вызывается формой оплаты, доступной по адресу PaymentURL, при заполнении клиентом карточных данных и нажатии кнопки «Оплатить»

    Статус перевода:

    • при успешном сценарии: CONFIRMED,
    • при неуспешном: REJECTED.

    Переадресация клиента:

    • в случае успешного перевода на Success URL,
    • в случае неуспешного перевода на Fail URL.

    Инициализация перевода

    Метод инициирует перевод

    Request Body schema: application/json
    required
    One of
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала. Выдается Мерчанту Т‑Кассой при заведении терминала

    Amount
    required
    number <= 10 characters
    • Сумма в копейках. Например, сумма 3руб. 12коп. — это число 312
    • Параметр должен быть равен сумме всех параметров Amount, переданных в объекте Items
    OrderId
    required
    string <= 36 characters

    Идентификатор заказа в системе Мерчанта

    Token
    string

    Подпись запроса.

    • Обязательность подписи запроса (token) задается отдельно через настройки терминала. Описание алгоритма формирования подписи доступно в Подпись запроса
    Description
    string <= 250 characters

    Описание заказа

    CustomerKey
    string <= 36 characters

    Идентификатор клиента в системе Мерчанта.

    • Обязателен, если передан атрибут Recurrent;
    • Если был передан в запросе, в нотификации будет указан CustomerKey и его CardId. См. метод GetCardList;
    • Необходим для сохранения карт на платежной форме (платежи в один клик).
    Recurrent
    string <= 1 characters

    Признак родительского рекуррентного платежа.

    • Для регистрации автоплатежа — обязателен. Если передается и установлен в Y, то регистрирует платеж как рекуррентный. В этом случае после оплаты в нотификации на AUTHORIZED будет передан параметр RebillId для использования в методе Charge. Для осуществления привязки и одновременной оплаты по CБП необходимо передавать 'Y'.

    Значение зависимо от атрибутов:

    Language
    string <= 2 characters

    Язык платежной формы

    • ru — русский,
    • en — английский. Если не передан, форма откроется на русском языке
    NotificationURL
    string <uri>

    URL на веб-сайте Мерчанта, куда будет отправлен POST запрос о статусе выполнения вызываемых методов (для настройки нужно обратиться на acq_help@tbank.ru):

    • Если параметр передан — используется его значение;
    • Если нет — значение в настройках терминала.
    SuccessURL
    string <uri>

    URL на веб-сайте Мерчанта, куда будет переведен клиент в случае успешного перевода (для настройки нужно обратиться на acq_help@tbank.ru):

    • Если параметр передан — используется его значение;
    • Если нет — значение в настройках терминала.
    FailURL
    string <uri>

    URL на веб-сайте Мерчанта, куда будет переведен клиент в случае неуспешного перевода (для настройки нужно обратиться на acq_help@tbank.ru):

    • Если параметр передан — используется его значение;
    • Если нет — значение в настройках терминала.
    RedirectDueDate
    any <date-time>

    Cрок жизни ссылки. Если текущая дата превышает дату, переданную в данном параметре, ссылка для перевода становится недоступной и перевод выполнить нельзя

    • Максимальное значение: 90 дней от текущей даты;
    • Минимальное значение: 1 минута от текущей даты;
    • Формат даты: YYYY-MM-DDTHH24:MI:SS+GMT;
    • Пример даты: 2016-08-31T12:28:00+03:00.
      Если не передан, принимает значение 24 часа для перевода и 30 дней для счета

    В случае, если параметр RedirectDueDate не был передан, проверяется настроечный параметр платежного терминала REDIRECT_TIMEOUT, который может содержать значение срока жизни ссылки в часах. Если его значение больше нуля, то оно будет установлено в качестве срока жизни ссылки. Иначе, устанавливается значение «по умолчанию» — 1440 мин.(1 сутки).

    object

    JSON-объект, который позволяет передавать дополнительные параметры по операции и задавать определенные настройки в формате "ключ":"значение"

    Максимальная длина для каждого передаваемого параметра:

    • ключ — 20 знаков,
    • значение — 100 знаков.

    Максимальное количество пар "ключ":"значение" — 20

    1. При использовании комиссии сверху на платежной форме возможно отображать номер договора займа. Для этого нужно передать параметр {"mfoAgreement":"номер договора займа на стороне клиента"} в "DATA" метода Init. Пример:
    "DATA":{"mfoAgreement":"1234"}
    
    1. Если у терминала включена опция привязки клиента после успешного перевода и передается параметр CustomerKey, то в передаваемых параметрах DATA могут присутствовать параметры метода AddCustomer. Если они присутствуют, то автоматически привязываются к клиенту. Например, если указать:
    "DATA":{"Phone":"+71234567890", "Email":"a@test.com"}
    

    к клиенту автоматически будут привязаны данные Email и телефон, и они будут возвращаться при вызове метода GetCustomer.

    Для МСС 4814 обязательно передать значение в параметре `Phone`.
    Требования по заполнению: 
      * минимум 7 символов,
      * максимум 20 символов,
      * разрешены только цифры, исключение — первый символ может быть «+».
    
    Для МСС 6051 и 6050 обязательно передать параметр `account` (номер электронного кошелька, не должен превышать 30 символов). Пример:
    ```
    "DATA": {"account":"123456789"}
    ```
    
    1. Если используется функционал сохранения карт на платежной форме, то при помощи опционального параметра DefaultCard можно задать какая карта будет выбираться по умолчанию. Возможные варианты:
    • Оставить платежную форму пустой. Пример:
      "DATA":{"DefaultCard":"none"}
      
    • Заполнить данными передаваемой карты. В этом случае передается CardId. Пример:
       "DATA":{"DefaultCard":"894952"}
      
    • Заполнить данными последней сохраненной карты. Применяется, если параметр DefaultCard не передан, передан с некорректным значением или в значении null. По умолчанию возможность сохранение карт на платежной форме может быть отключена. Для активации обратитесь в службу технической поддержки.
    1. При передаче в объекте DATA атрибута OperationInitiatorType учитывать взаимосвязь его значений с:
      • Значением атрибута Reccurent в методе /Init;
      • Значением атрибута RebillId в методе /Charge;
      • Типом терминала, используемом для проведения операций (ECOM/AFT).

    Подробную таблицу см. в разделе Передача признака инициатора операции

    В случае передачи значений атрибутов не соответствующих таблице — MAPI вернет ошибку 1126 (Несопоставимые значения rebillId или Recurrent с переданным значением OperationInitiatorType)

    PayForm
    string
    Deprecated
    Value: "mfo"

    Ранее для комиссии сверху заполнение атрибута было обязательно. В настоящий момент атрибут не используется. Вносить изменения в ранее созданные интеграции не требуется.

    Descriptor
    string

    Динамический дескриптор точки

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 140000,
    • "OrderId": "21050",
    • "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc7b96",
    • "Description": "Подарочная карта на 1400.00 рублей",
    • "CustomerKey": "string",
    • "Recurrent": "Y",
    • "Language": "ru",
    • "NotificationURL": "http://example.com",
    • "SuccessURL": "http://example.com",
    • "FailURL": "http://example.com",
    • "RedirectDueDate": null,
    • "DATA": {
      },
    • "PayForm": "mfo",
    • "Descriptor": "678451"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 100000,
    • "OrderId": "21050",
    • "Success": true,
    • "Status": "NEW",
    • "PaymentId": "13660",
    • "ErrorCode": "0",
    • "Message": "Неверные параметры",
    • "Details": "0"
    }

    Получение статуса перевода

    Мерчант может получить информацию об основных параметрах перевода в любой момент.
    Если требуется получить данные по конкретному переводу, то Мерчант должен вызвать метод GetState и передать в запросе PaymentId.
    Если по одному заказу было несколько, то получить историю переводов и их текущий статус можно с помощью метода CheckOrder. Мерчант должен передать в запросе OrderId.

    Request Body schema: application/json
    required
    One of
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала. Выдается Мерчанту Т‑Кассой при заведении терминала

    PaymentId
    required
    string <= 20 characters

    Идентификатор перевода в системе Т‑Кассы

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "PaymentId": "13660",
    • "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc7b96"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 100000,
    • "OrderId": "21050",
    • "Success": true,
    • "Status": "NEW",
    • "PaymentId": "13660",
    • "ErrorCode": "0",
    • "Message": "OK",
    • "Details": "0"
    }

    Получение справки по операции

    Справку по конкретной операции можно получить на:
    1. URL-сервиса, развернутого на своей стороне.
    2. Электронную почту.

    Request Body schema: application/json
    One of
    TerminalKey
    required
    string

    Идентификатор терминала, выдается Мерчанту Т‑Кассой

    CallbackUrl
    required
    string

    URL сервиса получения справок

    PaymentIdList
    required
    Array of numbers

    Json-массив, содержащий в себе перечень paymentID (уникальных идентификаторов в системе Т‑Кассы) c типом Number

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CallbackUrl": "https://www.tinkoff.ru",
    • "PaymentIdList": [
      ],
    • "Token": "f2fdd7fec8225872590e1558b7ea258c75df8f300d808006c41ab540dd7514d9"
    }

    Response samples

    Content type
    application/json
    Example
    {
    • "Success": true,
    • "ErrorCode": 0,
    • "Message": "OK",
    • "Details": "None",
    • "PaymentIdList": {
      }
    }

    Рекуррентные переводы

    Автоперевод

    Схема проведения рекуррентного перевода

    Описание

    Осуществляет рекуррентный (повторный) перевод — безакцептное списание денежных средств со счета банковской карты клиента. Для возможности его использования клиент должен совершить хотя бы один перевод в пользу Мерчанта, который должен быть указан как рекуррентный (см. параметр Recurrent методе Init), фактически являющийся первичным. По завершении перевода в нотификации на AUTHORIZED или CONFIRMED будет передан параметр RebillId. В дальнейшем для совершения рекуррентного перевода Мерчант должен вызвать метод Init, а затем без переадресации на PaymentURL вызвать метод Charge для перевода по тем же самым реквизитам и передать параметр RebillId, полученный при совершении первичного перевода

    При проведении рекуррентного платежа учитывать взаимосвязь атрибута RebillId в методе /Charge с:

    • Значением атрибута OperationInitiatorType в методе /Init;
    • Значением атрибута Reccurent в методе /Init;
    • Типом терминала, используемом для проведения операций (ECOM/AFT).

    Наглядно допустимые сценарии взаимосвязи описаны в таблице:

    CIT/MIT Тип операции OperationInitiator в /Init RebillId в /Charge Recurrent в /Init AFT терминал ECOM терминал
    CIT Credential-Not-Captured 0 null N Разрешено Разрешено
    CIT Credential-Captured 1 null Y Разрешено Разрешено
    CIT Credential-on-File 2 not null N Запрещено Разрешено
    MIT Credential-on-File, Recurring R not null N Запрещено Разрешено
    MIT Credential-on-File, Installment I not null N Разрешено Запрещено

    В случае передачи значений атрибутов не соответствующих таблице — MAPI вернет ошибку 1126 (Несопоставимые значения rebillId или Recurrent с переданным значением OperationInitiatorType)

    Одностадийный перевод

    1. Совершить родительский перевод путем вызова Init с указанием дополнительных параметров Recurrent=Y и CustomerKey.
    2. Переадресовать клиента на PaymentUrl (только для Мерчантов без PCI DSS).
    3. После проведения перевода клиентом в нотификации на статус AUTHORIZED или CONFIRMED будет передан параметр RebillId, который необходимо сохранить.
    4. Спустя некоторое время для совершения рекуррентного перевода необходимо вызвать метод Init со стандартным набором параметров (параметры Recurrent и CustomerKey здесь не нужны).
    5. Получить в ответ на Init параметр PaymentId, (для Мерчантов без PCI DSS: дополнительно сделать переадресацию клиента на PaymentUrl, для Мерчантов с PCI DSS: переадресацию производить не надо).
    6. Вызвать метод Charge с параметром RebillId, полученным в п.3, и параметром PaymentId, полученным в п.5.
    Request Body schema: application/json
    required
    One of
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала. Выдается Мерчанту Т‑Кассой при заведении терминала

    PaymentId
    required
    string

    Уникальный идентификатор транзакции в системе Т‑Кассы

    RebillId
    required
    string

    Идентификатор рекуррентного платежа. Значение зависимо от атрибутов:

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "PaymentId": "700001702044",
    • "RebillId": "145919",
    • "Token": "f5a3be479324a6d3a4d9efa0d02880b77d04a91758deddcbd9e752a6df97cab5"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Amount": 100000,
    • "OrderId": "21050",
    • "Success": true,
    • "Status": "NEW",
    • "PaymentId": "13660",
    • "ErrorCode": "0",
    • "Message": "string",
    • "Details": "string"
    }

    Отмена инициации перевода

    Отмена инициации перевода

    Переводит операцию в статус CANCELED.
    Отменяет перевод только в статусе NEW и FORM_SHOWED

    Request Body schema: application/json
    required
    TerminalKey
    required
    string

    Идентификатор терминала. Выдается Мерчанту Т‑Кассой

    PaymentId
    required
    string

    Идентификатор платежа в системе Т‑Кассы

    Token
    required
    string

    Подпись запроса

    IP
    string

    IP-адрес клиента

    Responses

    Request samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "PaymentId": "6411171976",
    • "Token": "03f90992aee6016c78e4cc4c850b345e2b76ffaeb6427d10ac26c0143c46e65e",
    • "IP": "192.168.255.255"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "OrderId": "test1",
    • "Success": true,
    • "Status": "CANCELED",
    • "OriginalAmount": 140000,
    • "NewAmount": 0,
    • "PaymentId": "6411171976",
    • "ErrorCode": "0"
    }

    Сценарии привязки карты

    Общая информация

    Мерчант может сохранить платежные данные клиента, чтобы при последующих переводах ему не приходилось заполнять платежную форму. Для этого клиент привязывается к терминалу, через который будут проходить перевод. Мерчант может выбрать способ привязки клиента — с проверкой 3D-Secure или без.

    Если выбрана опция с проверкой, то клиент должен будет подтвердить операцию уже на этом этапе. Все дальнейшие переводы будут проходить по схеме рекуррентного перевода, то есть подтверждать каждое списание не нужно

    Если Мерчант выбрал опцию привязки без проверки 3D-Secure, то клиент и его карты будут сохранены без подтверждения. Однако, оно потребуется при первом переводе по привязанной карте

    Для корректной работы методов Т‑Касса должна разрешить Мерчанту привязывать карты и клиентов к терминалу. В результате привязки карты к параметру CustomerKey будет привязана CardId

    Для сохранения идентификатора клиента CustomerKey Мерчант должен вызвать метод AddCustomer и передать в запросе параметр CustomerKey

    Для удаления клиента из списка привязанных к терминалу Мерчант должен вызвать метод RemoveCustomerпередать в запросе параметр CustomerKey

    Для получения сохраненных данных клиента Мерчант должен вызвать метод GetCustomer и передать в запросе параметр CustomerKey

    Методы работы с клиентами

    Регистрация клиента

    Регистрирует клиента в связке с терминалом. Возможна автоматическая привязка клиента и карты, по которой был совершен перевод, при передаче параметра CustomerKey в методе Init. Это можно использовать для сохранения и последующего отображения клиенту замаскированного номера карты, по которой будет совершен рекуррентный перевод.

    Request Body schema: application/json
    required
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала, выдается Мерчанту Т‑Кассой

    CustomerKey
    required
    string <= 36 characters

    Идентификатор клиента в системе Мерчанта

    Token
    required
    string

    Подпись запроса

    Email
    string <email> <= 64 characters

    Email клиента

    Phone
    string <= 64 characters

    Телефон клиента в формате +{Ц}

    Responses

    Request samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "4387c647-a693-449d-bc35-91faecfc50de",
    • "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e",
    • "Email": "username@test.ru",
    • "Phone": "+79031234567"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "05d65baa-9718-445e-8212-76fa0dd4c1d2",
    • "ErrorCode": "0",
    • "Success": true,
    • "Message": "Неверные параметры",
    • "Details": "Терминал не найден"
    }

    Получение данных клиента

    Возвращает данные клиента, сохраненные в связке с терминалом

    Request Body schema: application/json
    required
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала, выдается Мерчанту Т‑Кассой

    CustomerKey
    required
    string <= 36 characters

    Идентификатор клиента в системе Мерчанта

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "string",
    • "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "4264aa7b-08ab-4429-ab5a-2a171d841ced",
    • "ErrorCode": "0",
    • "Success": true,
    • "Message": "Неверный статус клиента",
    • "Details": "Клиент не найден",
    • "Email": "a@test.ru",
    • "Phone": "+79031234567"
    }

    Удаление данных клиента

    Удаляет сохраненные данные клиента

    Request Body schema: application/json
    required
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала, выдается Мерчанту Т‑Кассой

    CustomerKey
    required
    string <= 36 characters

    Идентификатор клиента в системе Мерчанта

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "string",
    • "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "string",
    • "ErrorCode": "0",
    • "Success": true,
    • "Message": "Неверные параметры",
    • "Details": "string"
    }

    Методы работы с картами

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

    Валидно для карт, привязанных на терминалах Выплат A2C
    Возвращает список всех привязанных карт клиента, включая удаленные

    Request Body schema: application/json
    required
    One of
    TerminalKey
    required
    string

    Идентификатор терминала, выдается Мерчанту Т‑Кассой

    CustomerKey
    required
    string

    Идентификатор клиента в системе Мерчанта

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    Example
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "testCustomer1234",
    • "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e"
    }

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

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

    Валидно для карт, привязанных на терминалах Выплат A2C
    Метод удаляет привязанную карту клиента

    Request Body schema: application/json
    required
    TerminalKey
    required
    string <= 20 characters

    Идентификатор терминала, выдается Мерчанту Т‑Кассой

    CustomerKey
    required
    string <= 36 characters

    Идентификатор клиента в системе Мерчанта

    CardId
    required
    string <= 40 characters

    Идентификатор карты в системе Т‑Кассы

    Token
    required
    string

    Подпись запроса

    Responses

    Request samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "CustomerKey": "testCustomer1234",
    • "CardId": "156516516",
    • "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e"
    }

    Response samples

    Content type
    application/json
    {
    • "TerminalKey": "TinkoffBankTest",
    • "Status": "D",
    • "CustomerKey": "testCustomer1234",
    • "CardId": "156516516",
    • "CardType": 0,
    • "Success": true,
    • "ErrorCode": "0",
    • "Message": "Неверные параметры",
    • "Details": "Не удалось удалить карту клиента, для данного клиента такая карта не существует"
    }

    Нотификации Мерчанта об операциях

    Нотификации — это уведомления магазину о статусе выполнения переводов

    Нотификации по E-mail

    Т‑Касса может присылать письма с уведомлениями об успешных переводах (статус CONFIRMED). Настроить нотификации на электронную почту можно через acq_help@tbank.ru. Уведомления на почту можно комбинировать с уведомлениями, отправляемыми по http(s).

    Нотификации по HTTP(s)

    При совершении операций Authorize, FinishAuthorize, Confirm на адрес Notification URL высылается уведомление POST-запросом с информацией об операции. При обращении к методу FinishAuthorize нотификация отправляется на сайт Мерчанта на адрес Notification URL синхронно и ожидает ответа в течение 10 секунд

    После получения ответа или неполучения его за заданное время сервис переадресует клиента на Success URL или Fail URL в зависимости от результата перевода

    В случае успешной обработки нотификации Мерчант должен вернуть ответ c HTTP-кодом сообщения 200 с телом сообщения: OK (без тегов и заглавными английскими буквами). Если тело сообщения отлично от OK, любая нотификация считается неуспешной, и сервис будет повторно отправлять нотификацию раз в час в течение 24 часов. Если нотификация за это время так и не доставлена, она складывается в дамп.

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

    Если в NotificationURL используются порты, допустимо использование порта 443 (HTTPS). Актуальный список внешних сетей*, используемых Т‑Касса, для отправки нотификаций:

    • 91.194.226.0/23,
    • 91.218.132.0/24,
    • 91.218.133.0/24,
    • 91.218.134.0/24,
    • 91.218.135.0/24,
    • 212.233.80.0/24,
    • 212.233.81.0/24,
    • 212.233.82.0/24,
    • 212.233.83.0/24,
    • 91.194.226.181 (тестовая среда).

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

    URL: Notification URL

    Если вы хотите получить в нотификации информацию переданную вами в метод Init, такую как идентификатор клиента, электронную почту и телефон, обратитесь к менеджеру или в техническую поддержку, чтобы для вашего терминала включили передачу объекта "Data". Перечисленная выше информация будет возвращаться в объекте "Data", вместе с рядом других технических параметров, которые можно игнорировать.

    Параметры нотификаций:

    Наименование Тип Описание
    TerminalKey String Идентификатор терминала, выдается Мерчанту Т‑Кассой
    Amount Number Сумма в копейках
    OrderId String Идентификатор перевода в системе Мерчанта
    Success Boolean Успешность запроса
    RequestKey String Идентификатор запроса на привязку карты
    Status String Статус перевода
    PaymentId String Уникальный идентификатор транзакции в системе Т‑Кассы
    ErrorCode String Код ошибки. «0» в случае успеха
    PaymentURL String Ссылка на платежную форму
    Message String Краткое описание ошибки
    Details String Подробное описание ошибки
    RebillId String Идентификатор рекуррентного перевода
    CardId Number Идентификатор карты в системе Т‑Кассы
    Pan String Маскированный номер карты
    ExpDate String Срок действия карты в формате MMYY, где YY — две последние цифры года
    Data Object Объект с техническими и дополнительными параметрами.
    Примеры дополнительных параметров:
    • CUSTOMER_KEY (string) - Идентификатор клиента в системе Мерчанта;
    • Email (string) - Email клиента в системе Мерчанта;
    • Phone (string) - Номер телефона клиента в системе Мерчанта;
    Token String Подпись запроса. Формируется по такому же принципу, как и в случае запросов в Т‑Кассу

    Укажите в настройках терминала URL, чтобы получать на него POST-запросы со статусами:

    Статус Описание
    AUTHORIZED Деньги захолдированы на карте клиента. Ожидается подтверждение операции *
    CONFIRMED Операция подтверждена
    REJECTED Списание денежных средств закончилась ошибкой
    3DS_CHECKING ** Автоматическое закрытие сессии, которая превысила срок пребывания в статусе 3DS_CHECKING (более 36 часов)

    * Операция подтверждается автоматически

    • Узнать статус перевода можно с помощью вызова метода GetState

    ** Напишите на почту acq_help@tbank.ru c просьбой включить отправку нотификаций об автозакрытии сессий в статусе 3DS_CHECKING

    Ответ на HTTP(s)-нотификацию

    В случае успешной обработки нотификации Мерчанту необходимо вернуть ответ HTTP CODE = 200 с телом сообщения: OK (без тегов и заглавными английскими буквами)

    PHP. Пример ответа на http(s)-нотификацию

    <?php
    echo «OK»;
    ?>
    

    Java. Пример ответа на http(s)-нотификацию

    @POST
    @Path("/ok")
    public Response NotifyResponse() {
    return Response.status(200).entity("OK").build();
    }
    

    Если ответ «OK» не получен, нотификация считается неуспешной, и сервис будет повторно отправлять данную нотификацию раз в час в течение 24 часов. Если нотификация за это время не доставлена, она будет сложена в архив

    При получении нотификации и перед ее обработкой настоятельно рекомендуем проверить подпись запроса

    Проверка токенов

    Для формирования подписи запроса для нотификации небходимо:

    1. Собрать массив всех передаваемых параметров в виде пар Ключ-Значение (кроме параметра Token). Например:
    [["TerminalKey": "TinkoffBankTest"],["OrderId": "201709"],["Success": "true"],["Status": "AUTHORIZED"],["PaymentId": "8742591"],["ErrorCode": "0"],["Amount": "9855"],["CardId": "322264"],["Pan": "430000******0777"],["ExpDate": "1122"],["RebillId": "101709"]]
    
    1. Добавить в массив пару (Password, значение). Password – пароль для терминала, указан в Личном кабинете https://business.tbank.ru/oplata/main:
    [["TerminalKey": "TinkoffBankTest"],["OrderId": "201709"],["Success": "true"],["Status": "AUTHORIZED"],["PaymentId": "8742591"],["ErrorCode": "0"],["Amount": "9855"],["CardId": "322264"],["Pan": "430000******0777"],["ExpDate": "1122"],["RebillId": "101709"],["Password": "Dfsfh56dgKl"]]
    
    1. Отсортировать массив по Ключам по алфавиту:
    [["Amount": "9855"],["CardId": "322264"],["ErrorCode": "0"],["ExpDate": "1122"],["OrderId": "201709"],["Pan": "430000******0777"],["Password": "Dfsfh56dgKl"],["PaymentId": "8742591"],["RebillId": "101709"],["Status": "AUTHORIZED"],["Success": "true"],["TerminalKey": "TinkoffBankTest"]]
    
    1. Конкатенировать значения всех пар:
    985532226401122201709430000******0777Dfsfh56dgKl8742591101709AUTHORIZEDtrue1321054611234DEMO
    
    1. Вычислить SHA-256 от полученного в п.4. значения:
    b906d28e76c6428e37b25fcf86c0adc52c63d503013fdd632e300593d165766b
    

    Коды ошибок

    CODE MESSAGE DETAILS (опционально)
    0 None
    1 Параметры не сопоставлены
    2 Отсутствуют обязательные параметры
    3 Внутренняя ошибка системы интернет эквайринга
    4 Не получится изменить статус платежа
    5 Обратитесь в поддержку, чтобы уточнить детали
    6 Не получилось привязать карту покупателя. Обратитесь в поддержку, чтобы уточнить детали
    7 Неверный статус покупателя
    8 Неверный статус транзакции
    9 Переадресовываемый url пуст
    11 Невозможно выполнить платеж
    12 Неверный параметр RedirectDueDate
    13 Оплата с мобильного телефона недоступна
    13 Оплата через WebMoney недоступна
    14 Платеж неверный
    15 Не удалось осуществить платеж через EINV.
    16 Счет был отклонен
    17 Неверные введенные данные
    18 Не удалось осуществить платеж через MC
    19 Не удалось осуществить платеж через WebMoney
    20 Ошибка повторного идентификатора заказа
    21 Внутренняя ошибка вызова сервиса ACQAPI
    50 Ошибка отправки нотификации
    51 Ошибка отправки Email
    52 Ошибка отправки Sms
    53 Обратитесь к продавцу
    54 Повторное прохождение 3DS авторизации не допустимо
    55 Повторите попытку позже Не найдено оплаченных назначений платежа
    60 Запрещено получение документов по url для текущего терминала Запрещено получение документов по url для текущего терминала
    61 Должен быть заполнен один из параметров: emailList или Url Должен быть заполнен один из параметров: emailList или Url
    62 Запрещено получение документов по url для текущего systemId Запрещено получение документов по url для текущего systemId
    63 Не найдена операция Не найдена операция
    64 Невалидные данные в запросе Невалидные данные в запросе
    65 Не удалось сформировать документ. Обратитесь в службу поддержки Не удалось сформировать документ. Повторите операцию позднее
    66 Не удалось сформировать документ. Повторите операцию позднее Запрещено получение документов по url для текущего терминала
    67 Не удалось сформировать документ. Повторите операцию позднее Не удалось сформировать документ. Повторите операцию позднее
    68 Не удалось сформировать документ. Обратитесь в службу поддержки Стороний сервис не доступен
    76 Операция по иностранной карте недоступна Операция по иностранной карте недоступна. Воспользуйтесь картой российского банка
    78 Выплата на иностранную карту недоступна Выплата на иностранную карту недоступна. Воспользуйтесь картой российского банка
    96 Ошибка Iris
    97 Ошибка Jasper
    98 Ошибка SubExt
    99 Попробуйте повторить попытку позже Банк, выпустивший карту, отклонил операцию
    100 • Попробуйте еще раз. Если ошибка повторится — обратитесь в поддержку;
    • Платеж не получится отменить, потому что деньги покупателя не были зарезервированы;
    • Платеж уже отменен;
    • Не получилось отменить платеж. Укажите сумму не больше, чем зарезервировано;
    • Покупатель опротестовал платеж в банке. Обратитесь в поддержку,чтобы уточнить детали;
    • Платеж уже подтвержден;
    • Нужно настроить подтверждение платежа через СМС (3DS) — для этого обратитесь в поддержку;
    • Карта покупателя неактивна.
    101 Не пройдена идентификация 3DS Ошибка прохождения 3-D Secure
    102 • Обратитесь в поддержку, чтобы уточнить детали;
    • Сообщите покупателю, чтобы попробовал оплатить еще раз. Если ошибка повторится — обратитесь в поддержку
    102 Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой Заказ не может быть оплачен, обратитесь службу поддержки
    102 Превышен лимит на сумму выплат в месяц Для решения вопроса обратитесь к персональному менеджеру
    102 Отказ. Более двух успешных оплат с одного email в неделю по проекту dolyame.ru
    102 Отказ. Более двух успешных оплат с одного phone в неделю по проекту dolyame.ru
    102 Отказ. Более двух успешных оплат с одной карты в неделю по проекту dolyame.ru
    102 Отказ. Более двух успешных оплат с одной карты в сутки по проекту dolyame.ru
    102 Отказ. Более двух успешных оплат с одного устройства в сутки по проекту dolyame.ru
    102 Отказ. Более двух успешных оплат с одного устройства в неделю по проекту dolyame.ru
    102 Отказ. Более двух успешных оплат с одного куки/идентификатора клиентского агента в сутки по проекту dolyame.ru
    102 Отказ. Более двух успешных оплат с одного куки/идентификатора клиентского агента в неделю по проекту dolyame.ru
    102 Отказ. Попытка оплаты с виртуальных или мошеннических бинов по проекту dolyame.ru
    103 Недостаточно средств на счете
    105 Нужно настроить автоплатежи по Maestro — для этого обратитесь в поддержку
    106 Карта не поддерживает 3DS проверку. Попробуйте другую карту
    107 Неверно введен CardId. Проверьте, что такая карта была ранее привязана
    109 Не найден dsTranId для сессии
    110 Не передан cres
    111 Передан некорректный cres
    119 Превышено допустимое количество запросов авторизации операции
    120 Попробуйте повторить попытку позже
    123 Попробуйте повторить попытку позже
    125 Попробуйте повторить попытку позже
    191 Некорректный статус договора, обратитесь к вашему менеджеру
    201 Поле PaymentId не должно быть пустым
    202 Терминал заблокирован
    203 Параметры запроса не должны быть пустыми
    204 Неверный токен. Проверьте пару TerminalKey/SecretKey
    205 Неверный токен. Проверьте пару TerminalKey/SecretKey Указанный терминал не найден
    206 Email не может быть пустым
    207 Параметр DATA превышает максимально допустимый размер
    208 Наименование ключа из параметра DATA превышает максимально допустимый размер
    209 Значение ключа из параметра DATA превышает максимально допустимый размер
    210 Размер поля TerminalKey должен быть от {min} до {max}
    211 Неверный формат IP
    212 Размер поля OrderId должен быть от {min} до {max}
    213 Размер поля Description должен быть от {min} до {max}
    214 Поле Currency должно быть меньше или равно {value}
    215 Размер поля PayForm должен быть от {min} до {max}
    216 Размер поля CustomerKey должен быть от {min} до {max}
    217 Поле PaymentId числовое значение должно укладываться в формат (<{integer} цифр>.<{fraction} цифр>)
    218 Значение PAN не является числовым
    219 Неверный срок действия карты
    220 Размер поля CardHolder должен быть от {min} до {max}
    221 Значение CVV не является числовым
    222 Поле CardId числовое значение должно укладываться в формат (<{integer} цифр>.<{fraction} цифр>)
    223 Поле RebillId числовое значение должно укладываться в формат (<{integer} цифр>.<{fraction} цифр>)
    224 Неверный формат Email
    225 Неверный формат Email
    226 Размер поля Email должен быть от {min} до {max}
    227 Размер поля Phone должен быть от {min} до {max}
    228 Размер поля MD должен быть от {min} до {max}
    229 Размер поля PaRes должен быть от {min} до {max}
    230 Размер поля Code должен быть от {min} до {max}
    231 Не найден идентификатор карты
    233 Размер поля CardId должен быть от {min} до {max}
    234 Размер поля PAN должен быть от {min} до {max}
    235 Размер поля RebillId должен быть от {min} до {max}
    236 Размер поля Token должен быть от {min} до {max}
    237 Размер поля PaymentId должен быть от {min} до {max}
    238 Размер поля ExpDate должен быть от {min} до {max}
    239 Размер поля CVV должен быть от {min} до {max}
    240 Поле Amount числовое значение должно укладываться в формат (<{integer} цифр>.<{fraction} цифр>)
    241 Поле Currency должно быть больше или равно {value}
    242 Размер поля InfoEmail должен быть от {min} до {max}
    243 Ошибка шифрования карточных данных
    244 Ошибка сопоставления карточных данных
    245 Параметр AddCard не сопоставлен
    246 Параметр SendEmail не сопоставлен
    247 Параметр Amount не сопоставлен
    248 Параметр CVV не сопоставлен
    249 Параметр Currency не сопоставлен
    250 Параметр DATA не сопоставлен
    251 Неверная сумма. Сумма должна быть больше или равна {value} копеек
    252 Срок действия карты истек
    253 Валюта {value} не разрешена для данного терминала
    254 Дополнительные возможности отключены
    255 Платеж не найден
    257 Некорректное значение признака последней выплаты. Используйте значения true или false Некорректное значение признака последней выплаты. Используйте значения true или false
    259 Параметр EncryptedPaymentData не сопоставлен
    260 Максимальная длина номера телефона 30 символов
    261 Параметр Source не сопоставлен
    305 Ошибка проверки поля
    309 Поле Receipt не должно быть пустым
    316 Максимальная длина номера телефона 19 символов
    322 Передана некорректная подпись
    323 Amount не совпадают
    325 Транзакция не найдена
    326 Неверный amount
    327 Терминал не поддерживает C2C переводы или не передан Route=""C2C"" для C2C терминала
    328 Должны присутствовать данные для списания и данные для пополнения
    330 Сумма в запросе больше чем в оригинальной транзакции
    331 Неверный терминал
    335 OrderId {value} не найден для TerminalKey {value}
    381 Возможна привязка только резидентных карт
    382 Возможна привязка только нерезидентных карт
    401 Внутренняя ошибка системы
    402 Повторите попытку позже
    403 Превышен лимит на количество пополнений в месяц
    404 Превышен лимит на сумму пополнения через бесконтактные сервисы
    405 Превышен лимит на сумму пополнения по виртуальной карте
    406 Превышен лимит на сумму пополнения в месяц через мобильное приложение
    407 Не найдено
    410 Данный тип перевода для терминала не доступен
    411 Сертификат не найден
    412 Истек срок действия сертификата
    413 Сертификат заблокирован
    414 Сертификат уже сохранен для данного терминала
    415 Дата начала срока действия сертификата еще не наступила
    416 Некорректное значение параметра SetStatus
    417 Ошибка обработки сертификата
    419 Параметр account объекта DATA должен быть заполнен корректно для MCC: 6050/6051
    500 Добавление карты к данному терминалу запрещено
    501 Терминал не найден
    502 Карта по requestKey не найдена
    503 CustomerKey не найден
    504 Не удалось провести платеж при привязке карты
    505 Не удалось привязать карту. Внутренняя ошибка
    506 Карта добавлена в черный список
    507 Карта не поддерживает 3DS проверку. Попробуйте другую карту
    508 Неверный номер карты
    509 Не удалось выполнить отмену при привязке карты
    510 Карта уже привязана к переданному CustomerKey
    511 Проверка 3DS не пройдена
    512 Не удалось выполнить запрос на проверку 3DS
    513 Не удалось выполнить платеж после прохождения 3DS
    514 Введена неверная сумма холдирования
    515 Внутренняя ошибка
    600 Карта добавлена в черный список
    600 Интернет-магазин отклонил операцию по данной карте. Обратитесь в интернет-магазин для выяснения причин отказа в платеже
    601 Разрешены операции только по MasterCard
    603 Превышено количество попыток оплаты с данной карты
    604 Обратитесь в поддержку, чтобы уточнить детали
    619 Отсутствуют обязательные данные отправителя Не переданы персональные данные отправителя для операции emoney2card более 15000 руб
    620 Проверьте сумму — она не может быть равна 0 Сумма операции не может быть равна 0
    623 Выплата по этому заказу уже прошла Запрещено проводить платеж с OrderId для которого уже есть успешный платеж
    632 Превышен лимит на сумму операции Лимит на сумму пополнения emoney2card. См. лимиты
    633 Превышен лимит на количество переводов в день по иностранным картам Лимит на кол-во пополнений emoney2card для карт эмитированных нерезидентами РФ за 1 отчетный день
    634 Превышен лимит на сумму переводов по номеру карты в месяц Лимит на сумму пополнения emoney2card по номеру карты одного получателя в отчетный месяц
    637 Не хватает данных получателя или отправителя для выплаты на иностранную карту. Проверьте заполнение Отсутствуют персональные данные получателя/отправителя при переводе на иностранную карту
    642 Проверьте номер карты Карта не прошла проверку по алгоритму Луна
    648 Магазин заблокирован или еще не активирован. Обратитесь в поддержку, чтобы уточнить детали
    650 Сообщите покупателю, чтобы попробовал оплатить еще раз. Если ошибка повторится — обратитесь в поддержку
    651 Не получилось совершить платеж. Свяжитесь с поддержкой Передаваемый Request_Id не найден
    700 Список карт Masterpass недоступен для данного магазина
    701 Сервис MasterPass недоступен
    702 Поле maid и saav должно быть задано в настройках терминала
    703 Обратитесь в поддержку, чтобы уточнить детали
    800 Комиссия не найдена
    903 Повторите попытку позже
    914 Платеж не найден
    991 Для использования 3dsType необходимо установить 3ds терминал Для использования TDS роутинга необходимо пользоваться ТДС терминалом
    999 Попробуйте повторить попытку позже
    1001 Свяжитесь с банком Свяжитесь с банком, выпустившим карту, чтобы провести платеж
    1003 Неверный магазин Неверный номер магазина. Идентификатор магазина недействителен
    1004 Банк, который выпустил карту, считает платеж подозрительным
    1005 Платеж отклонен банком, выпустившим карту Платеж отклонен банком, выпустившим карту
    1006 Платеж не прошел Свяжитесь с банком, выпустившим карту, чтобы провести платеж
    1007 Банк, который выпустил карту, считает платеж подозрительным
    1008 Банк, который выпустил карту, отклонил платеж
    1012 Банк, который выпустил карту, отклонил платеж
    1013 Банк, который выпустил карту, отклонил платеж — сумма превышает лимит по карте Сумма превышает лимит платежа вашего банка. Воспользуйтесь другой картой или обратитесь в банк
    1014 Карта недействительна Неправильные реквизиты — проверьте их или воспользуйтесь другой картой
    1015 Неверный номер карты Неверный номер карты
    1017 Попробуйте снова или свяжитесь с банком, выпустившим карту Попробуйте снова или свяжитесь с банком, выпустившим карту
    1018 Неизвестный статус платежа
    1019 Банк, который выпустил карту, отклонил платеж — сумма превышает лимит по карте
    1030 Повторите попытку позже Не получилось оплатить. Попробуйте еще раз
    1033 Истек срок действия карты
    1034 Попробуйте повторить попытку позже Не получилось оплатить. Воспользуйтесь другой картой или обратитесь в банк, выпустивший карту
    1038 Превышено количество попыток ввода ПИН-кода — попробуйте снова или обратитесь в банк, выпустивший карту
    1039 Платеж отклонен — счет не найден
    1041 Карта утеряна Карта утеряна. Свяжитесь с банком, выпустившим карту
    1043 Банк, который выпустил карту, считает платеж подозрительным
    1051 Недостаточно средств на карте Не получилось оплатить. На карте недостаточно средств
    1053 Платеж отклонен — счет не найден
    1054 Истек срок действия карты Неправильные реквизиты — проверьте их или воспользуйтесь другой картой
    1055 Неверный ПИН
    1057 Покупатель запретил такие операции для своей карты
    1058 Покупатель запретил такие операции для своей карты
    1059 Банк, который выпустил карту, считает платеж подозрительным
    1061 Покупатель превысил лимит платежей по своей карте
    1062 Банк, который выпустил карту, отклонил платеж
    1063 Банк, который выпустил карту, считает платеж подозрительным
    1064 Проверьте сумму
    1065 Покупатель превысил лимит платежей по своей карте
    1071 Токен просрочен Токен просрочен
    1075 Покупатель оплатил максимум раз по своей карте за день
    1076 Не получилось отменить резервирование. Обратитесь в поддержку, чтобы уточнить детали
    1077 Коды не совпадают — попробуйте снова
    1078 Данный тип операции не поддерживается картой
    1080 Плательщик ввел неверный срок действия карты
    1082 Неверный CVV Неправильные реквизиты — проверьте их или воспользуйтесь другой картой
    1085 Операция успешна Успех
    1086 Платеж отклонен — не получилось подтвердить ПИН-код
    1088 Банк, который выпустил карту, отклонил платеж
    1089 Попробуйте повторить попытку позже Не получилось оплатить. Попробуйте еще раз или обратитесь в банк, выпустивший карту
    1091 Технические работы в банке, который выпустил карту
    1092 Банк, который выпустил карту, отклонил платеж
    1093 Банк, который выпустил карту, считает платеж подозрительным
    1094 Банк, который выпустил карту, считает платеж подозрительным
    1096 Системная ошибка Системная ошибка
    1116 Некорректная сумма выдачи Сумма баланса меньше суммы переданной в операции выдачи
    1119 Параметр account объекта DATA должен быть заполнен корректно для MCC: 6050/6051 Передан некорректный номер кошелька
    1125 Некорректное значение OperationInitiatorType. Должно быть одно из списка
    1126 Несопоставимые значения rebillId или Recurrent с переданным значением OperationInitiatorType
    1201 Обратитесь в поддержку, чтобы уточнить детали
    1202 Сумма платежа превышает лимит по разовой операции в этом магазине. Обратитесь в поддержку, чтобы уточнить детали Для решения вопроса обратитесь к персональному менеджеру
    1203 Сумма платежа превышает лимит по разовой операции или количеству операций в этом магазине. Обратитесь в поддержку, чтобы уточнить детали Для решения вопроса обратитесь к персональному менеджеру
    1204 Достигнут лимит по суточному обороту. Чтобы изменить лимит, обратитесь в поддержку Для решения вопроса обратитесь к персональному менеджеру
    1205 Магазин не принимает карты этой страны. Обратитесь в поддержку, чтобы уточнить детали Для решения вопроса обратитесь к персональному менеджеру
    1207 Сообщите покупателю, чтобы попробовал оплатить еще раз. Если ошибка повторится — обратитесь в поддержку Для решения вопроса обратитесь к персональному менеджеру
    1217 Воспользуйтесь другой картой или обратитесь к продавцу Воспользуйтесь другой картой или обратитесь к продавцу
    1218 Воспользуйтесь другой картой или обратитесь к продавцу Воспользуйтесь другой картой или обратитесь к продавцу
    1235 Для карт «Мир» нужно настроить подтверждение платежей по СМС 3DS 2.0. Обратитесь в поддержку, чтобы уточнить детали
    1316 Запрещено проведение авторизации Запрещено проведение авторизации с использованием 3DS
    1502 Недостаточно средств на счете компании Insufficient funds
    1503 Некорректный статус счета, обратитесь в поддержку Invalid account status
    2014 Не пройдена идентификация 3DS
    2015 Mерчант с таким именем и паролем не найден
    2200 Превышено допустимое количество запросов авторизации операции
    8002 T-Bank Credit Broker недоступен. Повторите попытку позже
    8003 Операция запрещена для покупки долями
    8004 BNPL недоступен. Повторите попытку позже
    9001 Попробуйте повторить попытку позже
    9999 Внутренняя ошибка системы

    Тестовые карты

    Карта используется для тестирования терминалов AFTDEMO и ATOPDEMO, обращение к методам проводится в домене https://securepay.tinkoff.ru/v2/"

    Поведение карты PAN
    Успешный перевод 4300000000000777
    expDate: любая действующая дата в формате 11/24
    cvv: любой набор из 3 цифр
    Неуспешный перевод 5000000000000009
    expDate: любая действующая дата в формате 11/24
    cvv: любой набор из 3 цифр
    Успешный перевод
    (подходит для рекуррентных платежей)
    4000000000000333
    expDate: любая действующая дата в формате 11/24
    cvv: любой набор из 3 цифр

    Обратная связь

    По техническим вопросам обратитесь на почту acq_help@tbank.ru.
    Для предоставления обратной связи и по вопросам улучшения обслуживания и предоставляемого сервиса обратитесь к вашему личному менеджеру

    История изменений

    Описание изменений Дата
    1.1 Добавлены методы Init и GetState для nonPCI 03.08.2023
    1.2 Обновлены значения параметра MarkCodeType для объекта Receipt 07.08.2023
    1.3 Добавлен метод GetFee 09.08.2023
    1.4 Добавлен метод getConfirmOperation
    Обновлены ссылки на Личный Кабинет
    16.08.2023
    1.5 Добавлено описание блока DATA 25.08.2023
    1.6 Удален параметр RebillId из ответа на метод GetState
    1.7 Изменено описание CustomerKey в методе Init 22.09.2023
    1.8 Исправлены якорные ссылки 25.09.2023
    1.9 Добавлен объект additionalProperties и параметр OperationInitiatorType в DATA 26.09.2023
    1.10 Обновлен список ошибок 28.09.2023
    1.11 Добавлен пункт "Передача признака инициатора операции" 20.12.2023
    1.12 Обновлены сроки действия тестовых карт
    Скорректировано описание параметра mfoAgreement и подписи запроса (отсутствие блоков)
    Добавлено упоминание об одностадийности платежей и отсутствии опции "Платежи в 1 клик"
    24.01.2024
    1.13 Обновлен тип данных CardId 22.02.2024
    1.14 Обновлен список тестовых карт 12.03.2024
    1.15 Исправлены опечатки в тексте 14.03.2024
    1.16 Добавлено описание метода Cancel для операций в статусах NEW и FORM_SHOWED 22.05.2024
    1.17 Добавлена схема проведения транзакции для non-PCI DSS 29.05.2024
    1.18 Исправлены примеры и параметры ответа в методе CheckOrder
    Обновлен список параметров, передаваемых в Нотификациях по HTTP(s)
    20.06.2024
    1.19 Добавлен параметр AddInfo в блок DATA для метода Init 14.08.2024
    1.20 Изменены описания параметров mfoAgreement и PayForm в блоке DATA для метода Init 21.08.2024