ПРОТОКОЛ EACQ Мультирасчеты
Рекомендации при интеграции Ниже мы расписали несколько рекомендаций, которые необходимо соблюдать при интеграции с MAPI через фронтенд сайта мерчанта, а именно: 1.1. Наиболее безопасный способ передачи данных от мерчанта в MAPI — прямая интеграция бэкенда мерчанта с бэкендом Т-Бизнес. В этом случае злоумышленник сможет перехватить запрос только, если окажется в локальной сети мерчанта; 1.2. Получение нотификаций: ▪ По e-mail: на указанную почту придет письмо при переходе платежа в статус CONFIRMED. ▪ По http: MAPI будет отправлять POST-запрос при каждом изменении статуса платежа на URL, указанный в настройках терминала. 2.0. Вызов метода GetState, который возвращает основные параметры и текущий статус платежа "Протокол EACQ Мультирасчеты" 7 1. Параметры приема платежей Параметры приема платежей настраиваются отдельно на каждый терминал. Таблица 1.1. Параметры приема платежей Название параметра Формат Описание TerminalKey 20 символов (чувствительно к регистру) Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. Success URL 250 символов (чувствительно к регистру) URL на веб-сайте Площадки, куда будет переведен Покупатель в случае успешной оплаты. * Fail URL 250 символов (чувствительно к регистру) URL на веб-сайте Площадки, куда будет переведен Покупатель в случае неуспешной оплаты. * Success Add Card URL 250 символов (чувствительно к регистру) URL на веб-сайте Площадки, куда будет переведен Покупатель после успешной привязки карты. * Fail Add Card URL 250 символов (чувствительно к регистру) URL на веб-сайте Площадки, куда будет переведен Покупатель после неуспешной привязки карты. * Notification URL 250 символов (чувствительно к регистру) URL на веб-сайте Площадки, куда будет отправлен POST запрос о статусе выполнения вызываемых методов. Только для методов Authorize, FinishAuthorize, Confirm, Cancel. Валюта терминала 3 символа Валюта, в которой будут происходить списания по данному терминалу, если иное не передано в запросе. Активность терминала Рабочий / Неактивный / Тестовый Определяет режим работы данного терминала. Password 20 символов (чувствительно к регистру) Используется для подписи запросов/ответов. Является секретной информацией, известной только Площадке и банку. Пароль находится в личном кабинете мерчанта https://business.tbank.ru. Отправлять нотификацию на Authorize Да/Нет Определяет, будет ли отправлена нотификация на выполнение метода Authorize. Значение по умолчанию — Нет. "Протокол EACQ Мультирасчеты" 8 Отправлять нотификацию на FinishAuthorize Да/Нет Определяет, будет ли отправлена нотификация на выполнение метода FinishAuthorize. Значение по умолчанию — Да. Отправлять нотификацию на Completed Да/Нет Определяет, будет ли отправлена нотификация на выполнение метода AttachCard. Значение по умолчанию — Да. Отправлять нотификацию на Reversed Да/Нет Определяет, будет ли отправлена нотификация на выполнение метода Cancel. Значение по умолчанию — Да. * в URL можно указать необходимые параметры в виде ${<параметр>}, которые будут переданы на URL методом GET. Таблица 1.2. Параметры Success URL и Fail URL Наименование Описание Success Возможные значения: • true – запрос завершился успешно; • false – запрос не завершился. ErrorCode Код ошибки (0 – если ошибки не было) OrderId Номер заказа в системе Площадки Message Заголовок ошибки (заполняется только в случае ошибки) Details Детальное описание ошибки (заполняется только в случае ошибки) Например: http://tcsbank.ru/success.html?Success=${Success}&ErrorCode=${ErrorCode}&OrderId=${OrderId}&M es sage=${Message}&Details=${Details} "Протокол EACQ Мультирасчеты" 9 2. Методы приема платежей 2.1. Общая информация Прием платежей осуществляется вызовом методов с передачей параметров методом POST в формате JSON. Все методы и передаваемые параметры являются чувствительными к регистру. Для POST запроса в заголовке должен присутствовать Content-Type: application/json. Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/ Боевой URL: https://securepay.tinkoff.ru/v2/ *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запросы отправляются с боевого терминала. Для настройки и подключения TLS-cертификата от НУЦ Минцифры используйте инструкцию. 2.2. Схема проведения платежа На схеме показаны статусы платежа и возможные методы, которые могут быть вызваны, если платеж находится в данном статусе. "Протокол EACQ Мультирасчеты" 10 "Протокол EACQ Мультирасчеты" 11 Статусы платежа: Статус Правило перехода NEW MAPI получил запрос Init. После этого он создает новый платеж со статусом NEW, возвращает идентификатор платежа в параметре PaymentId и ссылку на платежную форму в параметре PaymentURL. FORM_SHOWED Мерчант перенаправил Покупателя на страницу платежной формы, и она загрузилась у Покупателя в браузере. AUTHORIZING Платеж обрабатывается MAPI и платежной системой. 3DS_CHECKING Платеж проходит проверку 3DS. 3DS_CHECKED Платеж успешно прошел проверку 3DS. AUTHORIZED Платеж авторизован. Деньги заблокированы на карте Покупателя. PAY_CHECKING Платеж обрабатывается. В течение 60 минут статус сменится на конечный. CONFIRMING Подтверждение платежа обрабатывается MAPI и платежной системой. CONFIRMED Платеж подтвержден. Деньги списаны с карты покупателя. REVERSING Мерчант запросил отмену авторизованного, но еще неподтвержденного платежа. Возврат обрабатывается MAPI и платежной системой. PARTIAL_REVERSED Частичный возврат по авторизованному платежу. REVERSED Полный возврат по авторизованному платежу. REFUNDING Мерчант запросил отмену подтвержденного платежа. Возврат обрабатывается MAPI и платежной системой. PARTIAL_REFUNDED Частичный возврат по подтвержденному платежу. REFUNDED Полный возврат по подтвержденному платежу. CANCEL_CHECKING Выполняется проверка платежа в процессе его отмены. CANCELED Мерчант отменил платеж. DEADLINE_EXPIRED • Покупатель не завершил платеж в срок жизни ссылки на платежную форму. Этот срок мерчант передает в методе Init в параметре RedirectDueDate. • Платеж не прошел проверку 3DS в срок. REJECTED Банк отклонил платеж. AUTH_FAIL Платеж завершился ошибкой или не прошел проверку 3DS. "Протокол EACQ Мультирасчеты" 12 2.3. Метод Init Инициирует платежную сессию. При оплате через СБП — вызывайте только метод Init, метод Confirm не используется. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/Init Боевой URL: https://securepay.tinkoff.ru/v2/Init *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос отправляется с боевого терминала Метод: POST Таблица 2.3.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. Amount Number Да Сумма в копейках. Минимальное значение: • для карточных операций — 100 (1 руб.); • для операций по СБП— 1000 (10 руб.). OrderId String Да Номер заказа в системе Площадки. Token String Нет*** Подпись запроса. IP String Нет IP-адрес Покупателя. Description String Нет Краткое описание. PaymentRecipientId String Да Идентификатор будущего получателя выплаты (номер телефона, email или иной идентификатор). Ограничение по длине значения: 16 символов. DealId Number Нет Идентификатор сделки. Передается либо DealId, либо CreateDealWithType. CreateDealWithType String Да Флаг о необходимости создания сделки при выполнении запроса. Вариант заполнения: NN Передается либо DealId, либо CreateDealWithType. LevelOfConfidence String Нет Уровень проверки получателя выплаты. Параметр необходим только в том случае, если его передачу потребовал отдел рисков "Протокол EACQ Мультирасчеты" 13 на этапе подключения. Возможные значения: • low, • moderate, • high. Currency Number Нет Код валюты ISO 421. Если параметр передан, и валюта разрешена для Площадки, транзакция будет инициирована в переданной валюте. Иначе будет использована валюта по умолчанию для данного терминала. В текущей версии допустимы только рубли — код 643. CustomerKey String Нет Идентификатор Покупателя в системе Площадки. Нужен для сохранения карт на платежной форме — платежи в один клик. Параметр обязательный, если передан параметр Recurrent=Y и автоплатеж проводится по карте. Если передан, в нотификации будут указаны CustomerKey и его CardId. Recurrent String Для регистрации автоплатежа Если передан и установлен в Y, при платеже будут сохранены реквизиты карты Покупателя. В этом случае после оплаты в нотификации на AUTHORIZED будет передан параметр RebillId для использования в методе Charge. PayType Enum Нет Определяет тип проведения платежа – двухстадийная или одностадийная оплата. • "O" — одностадийная оплата; • "T" — двухстадийная оплата Если параметр передан, используется его значение, если нет — значение из настроек терминала. Language String Нет Язык платежной формы. • ru — русский; • en — английский. Если параметр не передан, форма откроется на русском языке. NotificationURL* String Нет URL на веб-сайте Площадки, куда будет отправлен POST запрос о статусе выполнения вызываемых методов. Если параметр передан, используется его значение, если нет — значение из настроек терминала. "Протокол EACQ Мультирасчеты" 14 SuccessURL* String Нет URL на веб-сайте Площадки, куда будет переведен Покупатель в случае успешной оплаты. Если параметр передан, используется его значение, если нет — значение из настроек терминала. FailURL* String Нет URL на веб-сайте Площадки, куда будет переведен Покупатель в случае неуспешной оплаты. Если параметр передан, используется его значение, если нет — значение из настроек терминала. RedirectDueDate Datetime Нет Cрок жизни ссылки или динамического QRкода СБП, если выбран этот способ оплаты****. Если дата в параметре меньше текущей, оплата по ссылке и QR будет недоступна. • Минимальное значение — 1 минута от текущей даты. • Максимальное значение — 90 дней от текущей даты. • Формат даты — YYYY-MMDDTHH24:MI:SS+GMT. Пример даты — 2016-08- 31T12:28:00+03:00 DATA** Object Нет JSON-объект с дополнительными параметрами по операции в формате "ключ: значение". Максимальная длина ключа — 20 знаков, значения — 100 знаков. Максимальное количество пар "ключ: значение" — не больше 20. Данные параметры будут переданы на страницу оплаты (в случае ее кастомизации). Descriptor String Нет Динамический дескриптор точки. "Протокол EACQ Мультирасчеты" 15 Структура объектов DATA Ключ Тип Обязательность Значение StartSpAccumulation String Нет Флаг о необходимости создания сделки при выполнении запроса. Игнорируется, если передан параметр DealId. Вариант заполнения: NN SpAccumulationId String Нет Идентификатор сделки. BasicFieldKey String Нет Идентификатор будущего получателя выплаты (номер телефона в формате "+79606747611"). Confidant String Нет Уровень проверки получателя выплаты. * Для настройки параметра напишите в службу технической поддержки на acq_help@tbank.ru. ** Если у терминала включена опция привязки Покупателя после успешной оплаты и передан параметр CustomerKey, то в объекте DATA можно указать параметры метода AddCustomer. Эти параметры будут привязаны к этому CustomerKey. Например, если указать: "DATA": {"Phone": "+71234567890", "Email": "a@test.com"}, к Покупателю автоматически будут привязаны эти Email и телефон и будут возвращаться при вызове метода GetCustomer. Дополнительные параметры DATA: – Для МСС 4814 обязательно передать значение в параметре Phone. Требования по заполнению параметра Phone: • минимум 7 символов; • максимум 20 символов; • разрешены только цифры, исключение – первый символ может быть "+". – Чтобы сохранять данные карты на платежной форме, вы можете использовать параметр DefaultCard. Он позволяет настроить, какая карта будет выбираться по умолчанию. Возможные варианты: • Оставить платежную форму пустой. Пример: "DATA": {"DefaultCard": "none"}. • Заполнить данными передаваемой карты. В этом случае передается CardId. Пример: "DATA": {"DefaultCard": "894952"}. • Заполнить данными последней сохраненной карты. Применяется, если параметр DefaultCard не передан, передан с некорректным значением или со значением null. По умолчанию возможность сохранения карт на платежной форме может быть отключена. Для активации обратитесь в службу технической поддержки. – Для привязки и одновременной оплаты по СБП передавайте параметр QR со значением true: "DATA": {"QR": true} "Протокол EACQ Мультирасчеты" 16 – При реализации подключения оплаты T-Pay Web на сайте мерчанта обязательно передавайте следующие параметры в объекте DATA: "DATA": { "TinkoffPayWeb": true, "Device": "Desktop", "DeviceOs": "iOS", "DeviceWebView": true, "DeviceBrowser": "Safari" } в котором следует передать параметры устройства, с которого будет осуществлен переход. Таблица 2.3.1.1 Параметры запроса для T-Pay Наименование Тип Обязательность Описание Device String Нет Тип устройства • SDK — вызов из мобильных приложений; • Desktop — вызов из браузера с десктопа; • Mobile — вызов из браузера мобильного устройств. DeviceOs String Нет ОС устройства DeviceWebView Boolean Нет Признак открытия в WebView DeviceBrowser String Нет Браузер TinkoffPayWeb Boolean Нет Признак проведения операции через T-Pay по API Если не удается определить параметр гарантированно (режим инкогнито и пр.), не передавайте его. *** Чтобы включить подпись запроса по токену (Token), напишите в службу технической поддержки на acq_help@tbank.ru. Инструкция по формированию токена доступна по ссылке. **** Если параметр RedirectDueDate не был передан, проверяется настроечный параметр терминала REDIRECT_TIMEOUT, который содержит значение срока жизни ссылки в часах. Если его значение: • больше нуля — оно будет установлено в качестве срока жизни ссылки или динамического QR-кода; • меньше нуля — устанавливается значение по умолчанию: 1440 мин. (1 сутки). "Протокол EACQ Мультирасчеты" 17 Примеры передачи параметров в запросах /v2/Init метод POST Content-Type : json /v2/Init метод POST Content-Type : json { "TerminalKey": "TBankTest", "Amount": "15000", "OrderId": "sp123", "Description": "Мультирасчеты", "DATA": { "Phone": "+71234567777", "Email": "a@test.com", "StartSpAccumulation": "NN", "SpAccumulationId": "2332112", "BasicFieldKey": "7921324234", "Confidant": 1 } } { "TerminalKey": "TBankTest", "Amount": "15000", "OrderId": "sp123", "Description": "Мультирасчеты", "DATA": { "Phone": "+71234567777", "Email": "a@test.com" }, "PaymentRecipientId": "asdasdad", "DealId" : "23123123", "CreateDealWithType": "NN" "LevelOfConfidence": "moderate" } Ответ Таблица 2.3.2 Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. Amount Number Да Сумма в копейках OrderId String Да Идентификатор заказа в системе мерчанта Status String Да Статус транзакции PaymentId String Да Идентификатор платежа в системе Т-Бизнес PaymentURL String Нет Ссылка на платежную форму. Параметр возвращается только для мерчантов без PCI DSS Success Boolean Да Успешность запроса "Протокол EACQ Мультирасчеты" 18 ErrorCode String Да Код ошибки, «0» — если успешно Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "Success": true, "ErrorCode": "0", "TerminalKey": "TBankTest", "Status": "NEW", "PaymentId": "7277900132", "OrderId": "sp123", "Amount": "15000", "PaymentURL": "https://pay-test.tbank.ru/kwVvZY9L" } "Протокол EACQ Мультирасчеты" 19 2.4. Метод Check3dsVersion Метод для схемы PCI DSS Метод возвращает версию протокола 3DS, по которому может аутентифицироваться карта. Если 3DS v2.1.0, можно получить данные для прохождения дополнительного метода 3DS Method. Он позволяет эмитенту собрать данные браузера Покупателя — это может быть полезно при принятии решения в пользу Frictionless Flow (аутентификация клиента без редиректа на страницу ACS). Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/Check3dsVersion Боевой URL: https://securepay.tinkoff.ru/v2/Check3dsVersion * Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос отправляется с боевого терминала Метод: POST Таблица 2.4.1 Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. PaymentId String Да Уникальный идентификатор транзакции в системе банка CardData String Да Данные карты* Token String Да Подпись запроса * Объект CardData описан в методе FinishAuthorize Пример запроса: { "TerminalKey": "TBankTest", "PaymentId": "777", "CardData": "b3tSlUYwsf3Erdv5ReB7WpWK3/NBWLIwDiSLjQG0cBxA0Mgs7ALd7edi0RbVlORsyGZEUJSlRynQ9zL MyHYzWP3z2sQYGAvzOqufoVPe2AozhW3pZV+dN5s7oGcpXd39NDC0Ma/Zw6oa3dJR0Zh8QYjv/sG 0zUllMjXl5aHgTpxk37q6OxUakxuG7euhvSN71JqxHsNEuoJELAqLq7U+3tuh9AjTuiBpmEH99maK9e7g nVXgZd1Nk8vachs97xj9cL/023qYMk7CMjldBfG4VOsYVqcHsKfbbJJ8CZXIJgmXhCYns1hmRD/kf3Oh EZr038LghC7Iio0yxHYMhZyJoQ==", "Token": "daab60d01863965284f1db558ff37534715afd0f1e726ca9611b1f90720ad03b" } "Протокол EACQ Мультирасчеты" 20 Ответ Таблица 2.4.2 Параметры ответа Наименование Тип Обязательность Описание Version String Да Версия протокола 3DS. Примеры: • 1.0.0 — первая версия, • 2.1.0 — вторая версия TdsServerTransID String Нет Идентификатор транзакции, который генерируется 3DS Server. Параметр обязательный для 3DS v2.1.0. ThreeDSMethodURL String Нет Дополнительный параметр для 3DS v2.1.0, который позволяет пройти этап по сбору данных браузера ACS-ом PaymentSystem String Да Платежная система карты Success Boolean Да Успешность запроса ErrorCode String Да Код ошибки, «0» — если успешно Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "Success": true, "ErrorCode": "0", "Message": "OK", "Version": "2.1.0", "TdsServerTransID": "17d3791b-5cfa-4318-bc23-3d949e8c4b7e", "ThreeDSMethodURL": "https://acs.vendorcert.mirconnect.ru/ds/6300", "PaymentSystem": "mir" } "Протокол EACQ Мультирасчеты" 21 Прохождение этапа «3DS Method» Метод для сбора информации ACS-ом об устройстве Покупателя. Обязателен, если для 3DS v2.1.0 в ответе метода Check3dsVersion был получен параметр ThreeDSMethodURL. Условия выполнения: • в скрытом iframe на стороне браузера; • с таймаутом ожидания ответа на запрос — 10 секунд. Формат запроса: x-www-form-urlencoded Таблица 2.4.3. Описание параметров запроса 3DS Method Название параметра Тип Обязательность Описание threeDSMethodData* String Y JSON-объект, закодированный в формат Base64 с параметрами: • threeDSMethodNotificationURL — обратный адрес, на который будет отправлен запрос после прохождения threeDSMethod; • threeDSServerTransID — идентификатор операции из ответа метода Check3dsVersion. Генерируется 3DS Server. * Запрещено использовать padding Пример запроса на 3DS Method Url: Пример декодированного значения threeDSMethodData { "threeDSServerTransID": "56e712a5-190a-4588-91bc-e08626e77c44", "threeDSMethodNotificationURL":https://rest-api-test.tinkoff.ru/v2/Complete3DSMethodv2" } "Протокол EACQ Мультирасчеты" 22 2.5. Метод FinishAuthorize Метод для схемы PCI DSS Метод подтверждает платеж: • при одностадийной оплате — списывает деньги за покупку сразу после завершения оплаты; • при двухстадийной оплате — блокирует деньги за покупку на карте Покупателя и только потом списывает их. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/FinishAuthorize Боевой URL: https://securepay.tinkoff.ru/v2/FinishAuthorize *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос отправляется с боевого терминала Метод: POST Таблица 2.5.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. PaymentId String Да Уникальный идентификатор транзакции в системе банка CardData String Да Данные карты* Token String Да Подпись запроса IP String Нет IP-адрес Покупателя в формате IPv4 и IPv6. DS платежной системы требует передавать IPv6 в полном формате — 8 групп по 4 символа Параметр обязательный для 3DS v2.1.0 Amount Number Нет Сумма в копейках SendEmail boolean Нет Отправка уведомлений об оплате на почту Покупателя: • true — отправлять; • false — не отправлять. deviceChannel String Нет Канал устройства. Поддерживаются следующие каналы: • 01 — Application (APP); • 02 — Browser (BRW). "Протокол EACQ Мультирасчеты" 23 Route Enum Нет Способ платежа. Возможные значения: • ACQ, • MC, • EINV, • WM. Source Enum Нет Источник платежа. Значение параметра зависит от параметра Route • ACQ — cards или Cards; • MC — beeline, mts, tele2, megafon; • EINV — einvoicing; • WM — webmoney. InfoEmail String Нет Адрес почты Покупателя. Параметр обязательный, если передан SendEmail=true. DATA*** Object Нет JSON-объект с дополнительными параметрами по операции в формате "ключ: значение". Максимальная длина ключа — 20 знаков, значения — 100 знаков. Максимальное количество пар "ключ: значение" — не больше 20. * Объект CardData собирается в виде списка "ключ=значение" (разделитель ";") и зашифровывается открытым ключом — X509 RSA 2048. Бинарное значение кодируется в Base64. Открытый ключ генерируется Банком и выдается при регистрации терминала. Таблица 2.5.2. Параметры CardData Наименование Тип Обязательность Описание PAN Number Да Номер карты ExpDate Number Да Месяц и год срока действия карты в формате MMYY CardHolder String Нет Имя и фамилия держателя карты как на карте CVV String Нет Код защиты с обратной стороны карты ECI String Нет Electronic Commerce Indicator. Индикатор, показывающий степень защиты, применяемую при предоставлении Покупателем своих данных ТСП. CAVV String Нет Cardholder Authentication Verification Value или Accountholder Authentication Value "Протокол EACQ Мультирасчеты" 24 Пример значения элемента формы CardData: PAN=4300000000000777;ExpDate=0519;CardHolder=IVAN PETROV;CVV=111 Пример запроса: { "TerminalKey": "TBankTest", "PaymentId": "10063", "CardData": "b3tSlUYwsf3Erdv5ReB7WpWK3/NBWLIwDiSLjQG0cBxA0Mgs7ALd7edi0RbVlORsyGZEUJSlRynQ9zL MyHYzWP3z2sQYGAvzOqufoVPe2AozhW3pZV+dN5s7oGcpXd39NDC0Ma/Zw6oa3dJR0Zh8QYjv/sG 0zUllMjXl5aHgTpxk37q6OxUakxuG7euhvSN71JqxHsNEuoJELAqLq7U+3tuh9AjTuiBpmEH99maK9e7g nVXgZd1Nk8vachs97xj9cL/023qYMk7CMjldBfG4VOsYVqcHsKfbbJJ8CZXIJgmXhCYns1hmRD/kf3Oh EZr038LghC7Iio0yxHYMhZyJoQ==", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" } *** Для 3DS v2.1.0 в параметрах DATA передавайте следующие параметры. Таблица 2.5.3. DATA для 3DS v2.1.0 Наименование Тип Обязательность deviceChannel Описание threeDSCompInd String Да 02 — BRW Идентификатор выполнения метода 3DS Method: • Y — выполнение метода успешно завершено; • N — выполнение метода завершено неуспешно или метод не выполнялся. javaEnabled String Нет 02 — BRW Поддержка Java браузером пользователя: • true, • false. Значение по умолчанию — false. language String Да 02 — BRW Язык браузера в формате IETF BCP47. Рекомендуем получать значение в браузере из глобального объекта navigator — navigator.language colorDepth String Нет 02 — BRW Глубина цвета в битах. Допустимые значения: 1/4/8/15/16/24/32/48 Рекомендуем получать значение в браузере из глобального объекта screen — screen.colorDepth. Значение по умолчанию — 48. "Протокол EACQ Мультирасчеты" 25 timezone String Да 02 — BRW Часовой пояс пользователя в минутах. Рекомендуем получать значение в браузере через вызов метода getTimezoneOffset(). screen_height String Да 02 — BRW Высота экрана в пикселях Рекомендуем получать значение в браузере из глобального объекта screen — screen.height. screen_width String Да 02 — BRW Ширина экрана в пикселях. Рекомендуем получать значение в браузере из глобального объекта screen — screen.width cresCallbackUrl String Да 02 — BRW URL, который будет использоваться для получения результата (CRES) после завершения Challenge Flow — аутентификации с дополнительным переходом на страницу ACS. Для 3DS v2.1.0 в HttpHeaders запроса обязательно должны присутствовать заголовки: "User-Agent" и "Accept" Ответ Формат ответа: JSON Таблица 2.5.4. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. OrderId String Да Номер заказа в системе Площадки Success Boolean Да Успешность запроса Status String Да Статус транзакции Amount Number Да Сумма в копейках PaymentId String Да Уникальный идентификатор транзакции в системе банка ErrorCode String Да Код ошибки, «0» — если успешно Message String Нет Краткое описание ошибки "Протокол EACQ Мультирасчеты" 26 Details String Нет Подробное описание ошибки RebillId String Нет Идентификатор рекуррентного платежа CardId String Нет Идентификатор карты в системе банка. Передается только для сохраненной карты Статус платежа: • при успешном сценарии и одностадийном проведении платежа — CONFIRMED; • при успешном сценарии и двухстадийном проведении платежа — AUTHORIZED; • при неуспешном — REJECTED; • при необходимости прохождения проверки 3DS — 3DS_CHECKING. Пример ответа: { "Success": true, "ErrorCode": "0", "TerminalKey": "TBankTest", "Status": "AUTHORIZED", "PaymentId": "2181311", "OrderId": "PAYMENT11750", "Amount": 120 } Пример ответа для статуса 3DS_CHECKING (3DS Version 1): { "Success": true, "ErrorCode": "0", "TerminalKey": "TBankTest", "Status": "3DS_CHECKING", "PaymentId": "1993052", "OrderId": "86d9d441-6685-43fd-b800-ded79290bd33", "Amount": 100, "ACSUrl": "https://secure.tcsbank.ru/acs/auth/start.do", "MD": "ACQT-563587431", "PaReq": "eJxVUl1TwjAQ/CtM30s+KLTDHGHQwsiogFh09C2kp1RpC2nLh7/eBAtqnnYvN3ubvUD/kK4bO9RFk mc9hzWp08BM5XGSvfecRTRyA6cvIFppxPARVaVRwD0WhXzHRhL3HMUU73itwKVtyl1Pcs8Nli3pymU QK+z2Sww6joDZYI5bAfUgYeY0OZAzNYparWRWCpBqezWeiDZnLe3BqSmkqMeh4PRy2p02BfJThkym KCIsSiAnCCqvslIfhXEG5Eyg0muxKstN0SVkv983yyT7zN/emroiQOwlkF8js8qiwogdklg8rEfT5WK0jj6G 7D4cepNo8TWNBmwSDXtAbAfEskTjkPk0oF6DeV3a6jLj8VQHmVoXglFTqTFs7IjBn4u/BTBZa7OK8yP ODPCwyTM0HSbACwby6/f6xsaoSpNMMN89+uHdV/iUPz2nyat/uxrPXz5nuX/c2nBPTVYxMflwzthJ0hI gVobUeyP1yg469xW+AedOuuM=" } "Протокол EACQ Мультирасчеты" 27 ! Если в ответе метода FinishAuthorize возвращается статус 3DS_CHECKING, мерчанту нужно сформировать запрос на URL ACS банка, выпустившего карту, и вместе с этим перенаправить клиента на эту же страницу ACSUrl для прохождения 3DS. URL: ACSUrl, который возвращается в ответе метода FinishAuthorize. Метод: POST Формат запроса: x-www-form-urlencoded Таблица 2.5.5. Параметры запроса Наименование Тип Обязательность Описание MD String Да Уникальный идентификатор транзакции в системе банка из ответа метода FinishAuthorize. PaReq String Да Результат 3DS аутентификации в ACS из ответа метода FinishAuthorize. TermUrl String Да Адрес перенаправления после 3DS аутентификации — URL обработчик на стороне мерчанта, принимающий результаты прохождения 3DS. Пример запроса на ACS: Формат ответа: JSON Таблица 2.5.6. Параметры ответа Наименование Тип Обязательность Описание MD String Да Уникальный идентификатор транзакции в системе банка из ответа метода FinishAuthorize. PaRes String Да Шифрованная строка с результатами 3DS аутентификации. FallbackOnTdsV1 Boolean Нет Если аутентификация по 3DS v2.1.0 невозможна, выполняется переход на 3DS v1.0.0 и параметр устанавливается в true, иначе не передается в ответе. "Протокол EACQ Мультирасчеты" 28 Пример ответа для статуса 3DS_CHECKING (3DS Version 2) для 02-BRW: { "Success": true, "ErrorCode": "0", "TerminalKey": "TBankTest", "Status": "3DS_CHECKING", "PaymentId": "1993052", "OrderId": "86d9d441-6685-43fd-b800-ded79290bd33", "Amount": 700000, "ACSUrl": "https://acs.vendorcert.mirconnect.ru/mdpayacs/creq", "TdsServerTransId": " d7171a06-7159-4bdd-891a-a560fe9938d2", "AcsTransId": " e176d5d3-2f19-40f5-8234-46d3464e0b08" } Пример ответа для статуса 3DS_CHECKING (3DS Version 2) для 01-APP: { "Success": true, "ErrorCode": "0", "TerminalKey": "TBankTest", "Status": "3DS_CHECKING", "PaymentId": "3114697365", "OrderId": "1647850270", "Amount": 8000, "TdsServerTransId": "d93f7c66-3ecf-4d10-ba62-46046e7b7596", "AcsTransId": "aceca6af-56ee-43f0-80ef-ea8d30d5c5b0", "AcsInterface": "02", "AcsUiTemplate": "03", "AcsSignedContent": "eyJ4NWMiOlsiTUlJRGtUQ0NBbm1nQXdJQkFnSVVRU1VEV05VZEFicWozS1Uya0M0VHpaSEpVVHd3 RFFZSktvWklodmNOQVFFTEJRQXdXREVMTUFrR0ExVUVCaE1DVWxVeER6QU5CZ05WQkFnTUJrMXZj Mk52ZHpFUE1BMEdBMVVFQnd3R1RXOXpZMjkzTVJJd0VBWURWUVFLREFsVGIyMWxJR0poYm1zeEV 6QVJCZ05WQkFNTUNtUnpMbTF2WTJzdWNuVXdIaGNOTWpBd056RTRNVFExT1RNM1doY05NakV3Tn pFNE1UUTFPVE0zV2pCWU1Rc3dDUVlEVlFRR0V3SlNWVEVQTUEwR0ExVUVDQXdHVFc5elkyOTNNUTh 3RFFZRFZRUUhEQVpOYjNOamIzY3hFakFRQmdOVkJBb01DVk52YldVZ1ltRnVhekVUTUJFR0ExVUVBd 3dLWkhNdWJXOWpheTV5ZFRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dn RUJBTUhNdXB1Wlg3VUFWR3Z5dm9uZ1o4U3BJcisrRDRnMjBRaFwvZ0NGb3JUN1pDUkRaVWhRamlD SzdXSWpiVHRKQUFKVG1yelhcLzlMSGJIdHpIcFFvRFVTNXZPTnRqVWFaVGVQUE91SklMRWl6NDBBVjJC UVZRd0xnRzBjbm9oK21Qa0dNMEZ4VmJFcHFEVHk3SHB0dFAwdm96cGxHNjdFWk1HTXdKSUpESmlD YUdGOGZ0aTlYR3M4MXB3NUhWZElmOHNpQnFaWW94cGt0QWJ1dnpBTFJEUnp3dFBhclFHOTZyQStP M0dJaE53VDhZXC9pallwS0hWNkJCWDBKNmxZdFdoaVY5blhBVktYNTNlVTJ4M1E2Njh4U3BLa2dwSV h1N2xiNUN2M2dDTlIrelVqK0lTODNZYjJhUlR2WkF6MFI1V3dBNW5Zb2J6V3Vta1wvdE5iV1FYdzBWT UNBd0VBQWFOVE1GRXdIUVlEVlIwT0JCWUVGRmVWN0dzR0tCSzhUTDljaVk4UFF2N0RhY290TUI4R0 ExVWRJd1FZTUJhQUZGZVY3R3NHS0JLOFRMOWNpWThQUXY3RGFjb3RNQThHQTFVZEV3RUJcL3dR Rk1BTUJBZjh3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUZqVGppUkxKOFpaWld5dXFLNTZHVkR6dn JiXC9uRlVDTHVjVXZEV2toK09lRWkxWUFPOUJZV3RFVTVzdmRNNTlsOWVTMGtjbGxrRzVDTklcL1U4S 2dKSnUzV0tEVXp5cU80eVRNU3g3RWZDXC9qVE1oT2d2YUJubktWK2hvV3FQZTlKNHZVYzZ2R0wz WE1cL0FNeWpoVDlBRko1ZjZBaVdZMk5QYkxHczQ2N0ZPY2Vwb1RJMkdseHBtcWdaMFVGKzlsblNZbD U0WEg2dGNZYUszWjcxS2NES0I0QkUySWVmV1Y3MUM3anBVdjFFSlFsNTY4XC8xaGpsZktXUExWcE5 NTzVlTlNMR1ZKd1VmdFA0V0tKU2Y2VmdtbG5XOU1yVStiK3hvZW44MFF1dUxrSWs1ZXBIM2l1ZDV4 a1IxcVVXQU1aTUZTQW4yUHJDdjQrZFFMRDd2OG83d3BrPSJdLCJhbGciOiJQUzI1NiJ9.eyJhY3NFcGh "Протокол EACQ Мультирасчеты" 29 lbVB1YktleSI6eyJrdHkiOiJFQyIsImNydiI6IlAtMjU2IiwieCI6IlRoRjNJY3BIMVVLanliQW5lNWhHcy1BNnpy YXo2aUxiYVk0WmVEOU1oSU0iLCJ5Ijoid0VuVXNvNlRLZDlfbjZSc2NjUXRCeFc2Q1gzLXFSTGk0UWJBU 3pNbm4tTSJ9LCJzZGtFcGhlbVB1YktleSI6eyJrdHkiOiJFQyIsImNydiI6IlAtMjU2IiwieCI6Ikp6R2tGM2w3 WGxnclJ6NU1PTl9ncDg3WUxfd0NkVVJpVUlxOXJmNnVyR2MiLCJ5IjoiTnI4UmllTE9vVzJXUkhiX2RFaz FmdHRoWEZXTHdYaWZFUzNZZkFnMkhvWSJ9LCJhY3NVUkwiOiJodHRwczovL2VhY3EtZHMtbW9jay1z ZXJ2aWNlLXRlc3QudGNzYmFuay5ydS9jaGFsbGVuZ2UvZDkzZjdjNjYtM2VjZi00ZDEwLWJhNjItNDYwND ZlN2I3NTk2In0.hQLVTT5YMAY8TjISRdYX2IT04zH8Z8DgoB4kIAyVfkuJ0X6AGIKXSVcIVSNgCA_SEkCZRqAyUeu0ZJtpoIVyOf1mumBGEKuC6yVQlX5WSPidQUj4nuBvpYsfdrGPeoHWvNsrBpMMxvvW4559jtbAUY00NcW3rwDShAi4gVKgJcssM PAM1zOOR5vi0_ClUsCW1k9a201Hv6cYcEBuO2JQ8NPLampEkZ55nOmwcPPTEziXeZsq9VjROXNfBewbA4wLuQmh8aSrcOc wFtJo0CPpdrsKiY77KPT0c8XMmZZK_FiAxzrWocfHraqC7cRJNQ5glEBakXvSfrwGg_xXA", "AcsReferenceNumber": "12345" } ! Если в ответе метода FinishAuthorize возвращается статус 3DS_CHECKING, мерчанту необходимо сформировать запрос (может быть два и более в рамках одного challenge) на URL ACS банка, выпустившего карту (в ответе параметр ACSUrl) и вместе с этим перенаправить клиента на эту же страницу ACSUrl для прохождения 3DS. URL: ACSUrl (возвращается в ответе метода FinishAuthorize/AttachCard внутри параметра acsSignedContent) Метод: POST Формат запроса: x-www-form-urlencoded Таблица 2.5.7. Параметры запроса creq Наименование Тип Обязательность deviceChannel Описание creq String Да 02 — BRW JSON-объект, закодированный в формате Base64, с параметрами: • threeDSServerTransID, • acsTransID, • challengeWindowSize, • messageType, • messageVersion. 01 — APP JWE-объект, закодированный в формате PS256 с параметрами: • threeDSServerTransID, • acsTransID, • messageType, • messageVersion. "Протокол EACQ Мультирасчеты" 30 JSON/JWE creq Наименование Тип Обязательность deviceChannel Описание threeDSServerTransID String Да 01 — APP 02 — BRW Идентификатор транзакции из ответа метода FinishAuthorize. acsTransID String Да 01 — APP 02 — BRW Идентификатор транзакции из ответа метода FinishAuthorize. Назначается ACS. challengeWindowSize String Да 02 — BRW Разрешение экрана в пикселях, на котором открыта страница ACS: • 01 — 250 x 400 • 02 — 390 x 400 • 03 — 500 x 600 • 04 — 600 x 400 • 05 — Fullscreen messageType String Да 01 — APP 02 — BRW Фиксированное значение CReq. messageVersion String Да 01 — APP 02 — BRW Версия 3DS из ответа метода Check3dsVersion. В Creq запрещено использовать padding Пример запроса на ACS: Creq, декодированный из Base64: { "acsTransID": "e176d5d3-2f19-40f5-8234-46d3464e0b08", "challengeWindowSize": "03", "messageType": "CReq", "messageVersion": "2.1.0", "threeDSServerTransID": "d7171a06-7159-4bdd-891a-a560fe9938d2" } "Протокол EACQ Мультирасчеты" 31 Формат ответа: Cres, полученный по NotificationUrl из ответа метода FinishAuthorize/AttachCard для 02 — BRW/3DS SDK для 01 — APP Таблица 2.5.8. Параметры ответа cres Наименование Тип Обязательность deviceChannel Описание cres String Да 02 — BRW JSON-объект, закодированный в формате Base64 с параметрами: • threeDSServerTransID, • acsTransID, • messageType, • messageVersion, • transStatus. 01 — APP JWE-объект, закодированный в формате PS256, с параметрами: • threeDSServerTransID, • acsTransID, • acsUiType, • challengeCompletionInd, • challengeInfoHeader, • challengeInfoLabel, • challengeInfoText, • challengeInfoTextIndicator, • expandInfoLabel, • expandInfoText, • issuerImage, • messageType, • messageVersion, • psImage, • resendInformationLabel, • submitAuthenticationLabel, • whyInfoLabel, • whyInfoText, • acsCounterAtoS. "Протокол EACQ Мультирасчеты" 32 JSON/JWE cres Наименование Тип Обязательность deviceChannel Описание threeDSServerTransID String Да 01 — APP 02 — BRW Идентификатор операции из ответа метода Check3dsVersion. acsTransID String Да 01 — APP 02 — BRW Идентификатор операции. Назначается ACS. acsUiType String Обязателен для финального cres 01 — APP Тип пользовательского интерфейса. challengeAddInfo String Нет 01 — APP Дополнительный текст в форме подтверждения. challengeCompletionInd String Да 01 — APP Индикатор завершения подтверждения: • Y — challenge завершен. • N — challenge не завершен, требуется дополнительный обмен сообщениями. challengeInfoHeader String Нет 01 — APP Заголовок страницы подтверждения. challengeInfoLabel String Нет 01 — APP Тип информации, запрошенной от Покупателя при подтверждении. challengeInfoText String Нет 01 — APP Текст, предоставленный Покупателю при подтверждении. challengeInfoTextIndicator String Нет 01 — APP Индикатор наличия рамки или иконки возле текста рядом с полем ввода на форме подтверждения. expandInfoLabel String Нет 01 — APP Название поля с дополнительной информацией. expandInfoText String Нет 01 — APP Текст поля с дополнительной информацией. issuerImage String Нет 01 — APP URL-адрес изображения подтверждения/эмитента. "Протокол EACQ Мультирасчеты" 33 messageType String Да 01 — APP 02 — BRW Фиксированное значение CRes. messageVersion String Да 01 — APP 02 — BRW Версия 3DS. transStatus String Обязателен для финального cres 01 — APP 02 — BRW Результат выполнения Challenge Flow: • Y — аутентификация выполнена успешно. • N — аутентификация не пройдена, Покупатель отказался или ввел неверные данные. • U — не удалось выполнить аутентификацию / проверку учетной записи; техническая или иная проблема, как указано в ARes или RReq. • A — попытки обработки завершены; Покупатель не аутентифицирован/не подтвержден, но было предоставлено доказательство попытки аутентификации/ подтверждения. • С — требуется дополнительная аутентификация с использованием CReq/CRes. • R — аутентификация/ верификация учетной записи отклонены; Эмитент отклоняет аутентификацию /верификацию и требует не предпринимать попытки авторизации. psImage String Нет 01 — APP URL-адрес изображения платежной системы. resendInformationLabel String Нет 01 — APP Текст кнопки повторной отправки подтверждения. submitAuthenticationLabel String Обязателен, если ACSUIType = 01, 02, 03. 01 — APP Текст кнопки завершения аутентификации. "Протокол EACQ Мультирасчеты" 34 whyInfoLabel String Нет 01 — APP UI-заголовок в секции, которые объясняет Покупателю причину прохождения аутентификации. whyInfoText String Нет 01 — APP UI-текст в секции, который объясняет Покупателю причину прохождения аутентификации. При успешном результате прохождения 3DS инициированный платеж подтверждается с помощью методов Submit3DSAuthorization или Submit3DSAuthorizationV2 в зависимости от версии 3DS. "Протокол EACQ Мультирасчеты" 35 2.6. Метод Submit3DSAuthorization Метод для схемы PCI DSS Проверяет результаты прохождения 3DS и при успешном прохождении подтверждает инициированный платеж. При использовании: • одностадийной оплаты — списывает денежные средства с карты Покупателя; • двухстадийной оплаты — блокирует указанную сумму на карте Покупателя. Запрос Метод: POST Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/Submit3DSAuthorization Боевой URL: https://securepay.tinkoff.ru/v2/Submit3DSAuthorization * Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос отправляется с боевого терминала. Формат запроса: x-www-form-urlencoded После получения ответа ACS с результатами прохождения 3DS на TermUrl нужно отправить запрос для подтверждения 3DS v1.0.0: Таблица 2.6.1. Параметры запроса Наименование Тип Обязательность Описание MD String Да Идентификатор платежа, который возвращается в ответе от ACS. PaRes String Да Результаты 3DS аутентификации, который возвращается в ответе от ACS. PaymentId String Да Идентификатор транзакции в системе Т-Бизнес. Token String Да Подпись запроса. TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. Пример запроса: "Протокол EACQ Мультирасчеты" 36 Ответ Формат ответа: JSON Таблица 2.6.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. OrderId String Да Номер заказа в системе Площадки Success Boolean Да Успешность запроса Status String Да Статус транзакции PaymentId String Да Идентификатор платежа в системе Т-Бизнес. ErrorCode String Да Код ошибки, «0» — если успешно Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Статус платежа: • при успешном сценарии и одностадийной оплате — CONFIRMED; • при успешном сценарии и двухстадийном оплате — AUTHORIZED; • при неуспешном — REJECTED. Пример ответа: { "Success": true, "ErrorCode": "0", "TerminalKey": "TBankTest", "Status": "CONFIRMED", "PaymentId": "10063", "OrderId": "21050", "Amount": 100000 } "Протокол EACQ Мультирасчеты" 37
2.7. Метод Submit3DSAuthorizationV2 Метод для схемы PCI DSS Проверяет результаты прохождения 3DS v2.1.0 и при успешном прохождении подтверждает инициированный платеж. При использовании: • одностадийной оплаты — списывает денежные средства с карты Покупателя; • двухстадийной оплаты — блокирует указанную сумму на карте Покупателя. Запрос Метод: POST Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/Submit3DSAuthorizationV2 Боевой URL: https://securepay.tinkoff.ru/v2/Submit3DSAuthorizationV2 * Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос отправляется с боевого терминала. Формат запроса: x-www-form-urlencoded После получения ответа ACS с результатами прохождения 3DS на cresCallbackUrl сформируйте запрос на подтверждение 3DS v2.1.0: Таблица 2.7.1. Параметры запроса Наименование Тип Обязательность Описание PaymentId String Да Идентификатор платежа в системе Т-Бизнес. Token String Да Подпись запроса. TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. Ответ Формат ответа: JSON Таблица 2.7.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. OrderId String Да Номер заказа в системе Площадки. Success Boolean Да Успешность запроса. "Протокол EACQ Мультирасчеты" 38 Status String Да Статус транзакции. PaymentId String Да Уникальный идентификатор транзакции в системе банка. ErrorCode String Да Код ошибки, «0» — если успешно. Message String Нет Краткое описание ошибки. Details String Нет Подробное описание ошибки. Статус платежа: • при успешном сценарии и одностадийной оплате —CONFIRMED; • при успешном сценарии и двухстадийном оплате — AUTHORIZED; • при неуспешном — REJECTED. Пример ответа: { "Success": true, "ErrorCode": "0", "TerminalKey": "TBankTest", "Status": "CONFIRMED", "PaymentId": "10063", "OrderId": "21050", "Amount": 100000 } "Протокол EACQ Мультирасчеты" 39 2.8. Метод Confirm Метод подтверждает списание денег с карты Покупателя. Используется при двухстадийном платеже. Применим только к платежам в статусе AUTHORIZED. Статус платежа перед разблокировкой переводится в CONFIRMING. Сумма списания может быть меньше или равна сумме авторизации. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/Confirm Боевой URL: https://securepay.tinkoff.ru/v2/Confirm * Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос отправляются с боевого терминала. Метод: POST Таблица 2.8.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. PaymentId String Да Идентификатор платежа в системе Т-Бизнес. Token String Да Подпись запроса. IP String Нет IP-адрес Покупателя. Amount Number Нет Сумма в копейках. Если не передан, используется Amount, который был передан в методе Init. Пример запроса: { "TerminalKey": "TBankTest", "PaymentId": "10063", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" } "Протокол EACQ Мультирасчеты" 40 Ответ Формат ответа: JSON Таблица 2.8.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. OrderId String Да Номер заказа в системе Площадки. Success Boolean Да Успешность запроса. Status String Да Статус транзакции. PaymentId String Да Уникальный идентификатор транзакции в системе банка. ErrorCode String Да Код ошибки, «0» — если успешно. Message String Нет Краткое описание ошибки. Details String Нет Подробное описание ошибки. Пример ответа: { "Success": true, "ErrorCode": "0", "TerminalKey": "TBankTest", "Status": "CONFIRMED", "PaymentId": "2164657", "OrderId": "PAYMENT117539" } "Протокол EACQ Мультирасчеты" 41 2.9. Метод Charge Осуществляет рекуррентный (повторный) платеж — безакцептное списание денежных средств со счета банковской карты Покупателя. Для использования метода Покупатель должен совершить хотя бы один платеж в пользу продавца, который должен быть указан как рекуррентный (см. параметр Recurrent в методе Init), фактически являющийся первичным. По завершении оплаты в нотификации на AUTHORIZED или CONFIRMED будет передан параметр RebillId. В дальнейшем для совершения рекуррентного платежа Площадка должна вызвать метод Init, а затем без переадресации на PaymentURL вызвать метод Charge для оплаты по тем же самым реквизитам и передать параметр RebillId, полученный при совершении первичного платежа. Метод Charge работает по одностадийной и двухстадийной схеме оплаты. Чтобы перейти на двухстадийную схему, напишите на acq_help@tbank.ru с просьбой переключить схему рекуррентов. Для использования рекуррентных платежей по одностадийной схеме (без PCI DSS) необходима следующая последовательность действий: 1. Совершить родительский платеж путем вызова Init с указанием дополнительных параметров Recurrent=Y и CustomerKey. 2. После оплаты заказа в нотификации на статус AUTHORIZED или CONFIRMED будет передан параметр RebillId, который необходимо сохранить 3. Спустя некоторое время для совершения рекуррентного платежа необходимо вызвать метод Init со стандартным набором параметров (параметры Recurrent и CustomerKey здесь не нужны). 4. Получить в ответе метода параметр PaymentId. 5. Вызвать метод Charge с параметром RebillId, полученным в п.2, и параметром PaymentId, полученным в п.4. При успешном сценарии операция перейдет в статус AUTHORIZED, а затем — в CONFIRMED. Для использования рекуррентных платежей по двухстадийной схеме (без PCI DSS) необходима следующая последовательность действий: 1. Совершить родительский платеж путем вызова Init с указанием дополнительных параметров Recurrent=Y и CustomerKey. 2. После оплаты заказа в нотификации на статус AUTHORIZED или CONFIRMED будет передан параметр RebillId, который необходимо сохранить. 3. Спустя некоторое время для совершения рекуррентного платежа необходимо вызвать метод Init со стандартным набором параметров (параметры Recurrent и CustomerKey здесь не нужны). 4. Получить в ответе метода параметр PaymentId. 5. Вызвать метод Charge с параметром RebillId и параметром PaymentId из п.4. При успешном сценарии операция перейдет в статус AUTHORIZED. 6. Вызвать метод Confirm для подтверждения платежа Для использования рекуррентных платежей по одностадийной схеме (с PCI DSS) необходима следующая последовательность действий: 1. Совершить родительский платеж путем вызова Init с указанием дополнительных параметров Recurrent=Y и CustomerKey. 2. Вызвать метод Check3dsVersion для проверки ожидаемой версии 3DS протокола. 3. Вызвать метод FinishAuthorize для оплаты заказа. При необходимости проверить прохождение 3DS проверки методом Submit3DSAuthorization/Submit3DSAuthorizationV2 в зависимости от версии "Протокол EACQ Мультирасчеты" 42 3DS. После оплаты заказа в нотификации на статус AUTHORIZED или CONFIRMED будет передан параметр RebillId, который необходимо сохранить. 4. Спустя некоторое время для совершения рекуррентного платежа необходимо вызвать метод Init со стандартным набором параметров (параметры Recurrent и CustomerKey здесь не нужны). 5. Получить в ответе метода параметр PaymentId. 6. Вызвать метод Charge с параметром RebillId, полученным в п.3, и параметром PaymentId, полученным в п.5. При успешном сценарии операция перейдет в статус AUTHORIZED. Для использования рекуррентных платежей по двухстадийной схеме (с PCI DSS) необходима следующая последовательность действий: 1. Совершить родительский платеж путем вызова Init с указанием дополнительных параметров Recurrent=Y и CustomerKey. 2. Вызвать метод Check3dsVersion для проверки ожидаемой версии 3DS протокола. 3. Вызвать метод FinishAuthorize для оплаты заказа. При необходимости проверить прохождение 3DS проверки методами Submit3DSAuthorization/Submit3DSAuthorizationV2 в зависимости от версии 3DS. После оплаты заказа в нотификации на статус AUTHORIZED или CONFIRMED будет передан параметр RebillId, который необходимо сохранить. 4. Вызвать метод Confirm для подтверждения платежа. При необходимости отмены платежа вызвать метод Cancel. 5. Спустя некоторое время для совершения рекуррентного платежа необходимо вызвать метод Init со стандартным набором параметров (параметры Recurrent и CustomerKey здесь не нужны). 6. Получить в ответе метода параметр PaymentId. 7. Вызвать метод Charge с параметрами RebillId и параметром PaymentId из п.6. При успешном сценарии операция перейдет в статус AUTHORIZED. Денежные средства будут заблокированы на карте Покупателя. 8. Вызвать метод Confirm для подтверждения платежа. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/Charge Боевой URL: https://securepay.tinkoff.ru/v2/Charge * Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос отправляется с боевого терминала. Метод: POST Таблица 2.9.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. PaymentId String Да Идентификатор платежа в системе банка, полученный в ответе на вызов метода Init. "Протокол EACQ Мультирасчеты" 43 RebillId String Да Уникальный идентификатор рекуррентного платежа. Возвращается в нотификации после успешного родительского рекуррентного платежа. Подробнее в описании параметра Recurrent в методе Init. Token String Да Подпись запроса. IP String Нет IP-адрес Покупателя. SendEmail Boolean Нет Отправка уведомлений об оплате на почту Покупателя: • true — отправлять; • false — не отправлять. InfoEmail String Нет Адрес электронной почты Покупателя. Параметр обязательный, если передан SendEmail=true. Пример запроса: { "TerminalKey": "TBankTest", "PaymentId": "10063", "RebillId": "145919", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" } Ответ Формат ответа: JSON Таблица 2.9.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. OrderId String Да Номер заказа в системе Площадки. Success Boolean Да Успешность запроса. Status String Да Статус транзакции. PaymentId String Да Идентификатор транзакции в системе банка. Amount Number Да Сумма списания в копейках. ErrorCode String Да Код ошибки, «0» — если успешно. "Протокол EACQ Мультирасчеты" 44 Message String Нет Краткое описание ошибки. Details String Нет Подробное описание ошибки. Пример ответа: { "TerminalKey": "TBankTest", "OrderId": "100668", "Success": true, "Status": "CONFIRMED", "PaymentId": "63100", "Amount": 444, "ErrorCode": "0" } "Протокол EACQ Мультирасчеты" 45 2.10. Метод Cancel Отменяет платеж. В зависимости от статуса платежа переводит его в следующее состояние: Таблица 2.10.1. Статусы платежа Начальный статус Статус после проведения операции NEW CANCELED AUTHORIZED PARTIAL_REVERSED — если отмена не на полную сумму AUTHORIZED REVERSED CONFIRMED PARTIAL_REFUNDED — если отмена не на полную сумму CONFIRMED REFUNDED — если отмена на полную сумму Если платеж находился в статусе AUTHORIZED, холдированные средства на карте клиента разблокируются. При переходе из статуса CONFIRMED — денежные средства возвращаются на карту клиента. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/Cancel Боевой URL: https://securepay.tinkoff.ru/v2/Cancel * Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос отправляются с боевого терминала. Метод: POST Таблица 2.10.2. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. PaymentId String Да Уникальный идентификатор транзакции в системе банка. Token String Да Подпись запроса. IP String Нет IP-адрес Покупателя. Amount Number Нет* Сумма отмены в копейках. Минимальное значение — 100. "Протокол EACQ Мультирасчеты" 46 QrMemberId String Нет Код банка в классификации СБП, в который необходимо выполнить возврат. См параметр MemberId в методе QrMembersList ExternalRequestId String Нет** Идентификатор операции на стороне мерчанта * При отмене операции в статусе NEW параметр Amount игнорируется, даже если он заполнен. Отмена производится на полную сумму. ** Если параметр передается, то перед проведением возврата проверяется запрос на отмену с таким ExternalRequestId: • если такой запрос уже есть, в ответе вернется текущее состояние платежной операции; • если такого запроса нет — произойдет отмена платежа; • если параметр не передан или передан пустой ("") — запрос будет обработан без проверки ранее созданных возвратов. Пример запроса: { "TerminalKey": "TBankTest", "PaymentId": "10063", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" } Ответ Формат ответа: JSON Таблица 2.10.3. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. Success Boolean Да Успешность запроса. Status String Да Статус транзакции. PaymentId String Да Идентификатор транзакции в системе банка. ErrorCode String Да Код ошибки, «0» — если успешно. OrderId String Да Номер заказа в системе Площадки. OriginalAmount Number Да Сумма в копейках до операции отмены. NewAmount Number Да Сумма в копейках после операции отмены. "Протокол EACQ Мультирасчеты" 47 Message String Нет Краткое описание ошибки. Details String Нет Подробное описание ошибки. ExternalRequestId String Нет Идентификатор операции на стороне мерчанта. Пример ответа: { "TerminalKey": "TBankTest", "Success": true, "Status": "REVERSED", "ErrorCode": "0", "PaymentId": "2167708", "OrderId": "PAYMENT117558", "OriginalAmount": 1000, "NewAmount": 0 } "Протокол EACQ Мультирасчеты" 48 2.11. Метод GetState Возвращает статус платежа. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/GetState Боевой URL: https://securepay.tinkoff.ru/v2/GetState * Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос отправляется с боевого терминала. Метод: POST Таблица 2.11.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. PaymentId String Да Идентификатор транзакции в системе банка. Token String Да Подпись запроса. IP String Нет IP-адрес Покупателя. Пример запроса: { "TerminalKey": "TBankTest", "PaymentId": "10063", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" } Ответ Формат ответа: JSON Таблица 2.11.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. OrderId String Да Номер заказа в системе Площадки. Success Boolean Да Успешность запроса. "Протокол EACQ Мультирасчеты" 49 Status String Да Статус транзакции. PaymentId String Да Идентификатор транзакции в системе банка. ErrorCode String Да Код ошибки, «0» — если успешно. Amount Number Да Сумма операции в копейках. Message String Нет Краткое описание ошибки. Details String Нет Подробное описание ошибки. Пример ответа: { "TerminalKey": "TBankTest", "OrderId": "21057", "Success": true, "Status": "NEW", "PaymentId": "10063", "ErrorCode": "0", "Amount": 1000 } Таблица 2.11.3. Возможные статусы транзакции Статус Промежуточный? Значение NEW Нет Платеж зарегистрирован в шлюзе, но его обработка в процессинге не начата. CANCELED Нет Платеж отменен Площадкой. PREAUTHORIZING Да Проверка платежных данных Покупателя. FORM_SHOWED Нет Покупатель переправлен на страницу оплаты. AUTHORIZING Да Покупатель начал аутентификацию. 3DS_CHECKING Нет Покупатель начал аутентификацию по протоколу 3DS. Платежи, находящиеся в этом статусе более 36 часов, автоматически перейдут в статус DEADLINE_EXPIRED. 3DS_CHECKED Да Покупатель завершил аутентификацию 3DS. "Протокол EACQ Мультирасчеты" 50 AUTH_FAIL Да Не пройдена проверка по протоколу 3DS. PAY_CHECKING Да Платеж обрабатывается. AUTHORIZED Нет Средства заблокированы, но не списаны. REVERSING Да Начало отмены блокировки средств. REVERSED Нет Денежные средства разблокированы. CONFIRMING Да Начало списания денежных средств. CONFIRM_CHECKING Да Платеж обрабатывается. В течение 60 минут платежу присвоится конечный статус согласно схеме. CONFIRMED Нет Денежные средства списаны. REFUNDING Да Начало возврата денежных средств. ASYNC_REFUNDING Да Обработка возврата денежных средств через QR. PARTIAL_REFUNDED Нет Произведен частичный возврат денежных средств. REFUNDED Нет Произведен возврат денежных средств. REJECTED Нет Платеж отклонен банком. DEADLINE_EXPIRED Нет Платежная сессия закрыта в связи с превышением срока отсутствия активности по текущему статусу. "Протокол EACQ Мультирасчеты" 51 2.12. Метод CheckOrder Метод возвращает статус заказа. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/CheckOrder Боевой URL: https://securepay.tinkoff.ru/v2/CheckOrder * Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос отправляется с боевого терминала. Метод: POST Таблица 2.12.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. OrderId Number Да Номер заказа в системе Площадки. Token String Да Подпись запроса. Пример запроса: { "TerminalKey": "TBankTest", "OrderId": "21057", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" } Ответ Формат ответа: JSON Таблица 2.12.2. Параметры ответа Наименование Тип Обязательность Описание Success Boolean Да Успешность запроса. ErrorCode String Да Код ошибки, «0» — если успешно. Message String Нет Краткое описание ошибки. Details String Нет Подробное описание ошибки. "Протокол EACQ Мультирасчеты" 52 TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. OrderId String Да Номер заказа в системе Площадки. Payments Object Да Детали. Таблица 2.12.3. Структура объекта Payments Наименование Тип Обязательность Описание PaymentId String Да Уникальный идентификатор транзакции в системе банка. Amount Number Нет Сумма операции в копейках. Status String Да Статус транзакции. RRN String Нет RRN операции Success Boolean Да Успешность запроса. ErrorCode Number Да Код ошибки, «0» — если успешно. Message String Да Краткое описание ошибки. Пример ответа: { "Success": true, "ErrorCode": "0", "Message": "OK", "OrderId": "21057", "TerminalKey": "TBankTest", "Payments": [ { "Status": "REJECTED", "PaymentId": "10063", "Rrn": 1234567, "Amount": 555, "Success": false, "ErrorCode": "1051", "Message": "Недостаточно средств на карте" }, { "Status": "AUTH_FAIL", "PaymentId": "1005563", "Rrn": 1234567, "Протокол EACQ Мультирасчеты" 53 "Amount": 555, "Success": false, "ErrorCode": "76", "Message": "Операция по иностранной карте недоступна." }, { "Status": "NEW", "PaymentId": "100553363", "Rrn": 1234567, "Amount": 555, "Success": true, "ErrorCode": "0", "Message": "ok" } ] } "Протокол EACQ Мультирасчеты" 54 2.13. Метод getConfirmOperation Метод генерирует справку по операции. Ее можно получить на вашу электронную почту или URL вашего сервиса, куда файл со справкой придет в формате Base64. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/getConfirmOperation Боевой URL: https://securepay.tinkoff.ru/v2/getConfirmOperation * Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос отправляется с боевого терминала. Метод: POST Таблица 2.13.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. Token String Да Подпись запроса. Для создания токена используйте только пароль и TerminalKey. PaymentIdList Array Да Номер заказа в системе Площадки. CallbackUrl String Да* URL cервиса получения справок. EmailList Array Да* Массив, который содержит перечень Email в формате String. * Передается либо CallbackUrl, либо EmailList. Пример запроса с получением справки на URL: { "TerminalKey": "TBankTest", "CallbackUrl": "http://www.tbank.ru", "PaymentIdList": [1201206437,1201206442], "Token": "f2fdd7fec8225872590e1558b7ea258c75df8f300d808006c41ab540dd7514d9 } Пример запроса с получением справки на Email: { "TerminalKey": "TBankTest", "PaymentIdList": [1201206437,1201206442], "EmailList": ["test1@tbank.ru","test2@tbank.ru"], "Token": "f2fdd7fec8225872590e1558b7ea258c75df8f300d808006c41ab540dd7514d9" } "Протокол EACQ Мультирасчеты" 55 Ответ Формат ответа: JSON Таблица 2.13.2. Параметры ответа Наименование Тип Обязательность Описание Success Boolean Да Успешность запроса. ErrorCode String Да Код ошибки, «0» — если успешно. Message String Нет Краткое описание ошибки. PaymentIdList Array of objects Да JSON-массив с объектами, которые содержат информацию по запросу Таблица 2.12.3. Структура PaymentIdList Наименование Тип Обязательность Описание PaymentId String Да Уникальный идентификатор транзакции в системе Т-Бизнес. Success Boolean Да Успешность запроса. ErrorCode Number Да Код ошибки, «0» — если успешно. Message String Да Сервисное сообщение. Пример ответа: { "Success": true, "ErrorCode": 0, "Message": "OK", "PaymentIdList": [ { "Success": true, "ErrorCode": 0, "Message": "Запрос на отправку документа принят", "PaymentId": "1201206442" } ] } "Протокол EACQ Мультирасчеты" 56 2.14. Оплата через T-Pay Web на сайте мерчанта Методы для схемы PCI DSS Оплата доступна на мобильных устройствах и десктопах и проводится последовательным вызовом методов: 1. TinkoffPay/terminals/{terminalKey}/status. 2. Init. 3. TinkoffPay/transactions/{paymentId}/versions/{version}/link или TinkoffPay/{paymentId}/QR. "Протокол EACQ Мультирасчеты" 57 2.14.1. Метод TinkoffPay/terminals/{terminalKey}/status Метод для схемы PCI DSS Метод определяет возможность проведения платежа через T-Pay на терминале и устройстве. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/TinkoffPay/terminals/{terminalKey}/status Боевой URL: https://securepay.tinkoff.ru/v2/TinkoffPay/terminals/{terminalKey}/status * Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос отправляется с боевого терминала. Метод: GET Таблица 2.14.1.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. Ответ Таблица 2.14.1.2. Параметры ответа Наименование Тип Обязательность Описание Success Boolean Да Успешность запроса. ErrorCode String Да Код ошибки, «0» — если успешно. Message String Нет Краткое описание ошибки. Details String Нет Подробное описание ошибки. Params Object Да Параметры ответа. "Протокол EACQ Мультирасчеты" 58 Таблица 2.14.1.3. Структура объекта Params Наименование Тип Обязательность Описание Allowed Boolean Да Наличие возможности проведения оплаты через T-Pay по API. Version String Да, если Allowed=true Наличие возможности проведения оплаты через T-Pay по: • 1.0 — E-invoice; • 2.0 — T-Pay. Если версия в ответе метода 1.0, то оплата может быть проведена только с мобильного устройства. Пример ответа: { "Success": true, "ErrorCode": "0", "Params": { "Allowed": true, "Version": "1.0" } } "Протокол EACQ Мультирасчеты" 59 2.14.2. Метод TinkoffPay/transactions/{paymentId}/versions/{version}/link Метод для схемы PCI DSS Метод генерирует и возвращает ссылку для безусловного редиректа для мобильных устройств. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/TinkoffPay/transactions/{paymentId}/versions/{version}/link Боевой URL: https://securepay.tinkoff.ru/v2/TinkoffPay/transactions/{paymentId}/versions/{version}/link * Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос отправляется с боевого терминала. Метод: GET Таблица 2.14.2.1 Параметры запроса Наименование Тип Обязательность Описание paymentId Number Да Идентификатор платежа. version String Да Версия T-Pay: • 1.0 — E-invoice; • 2.0 — T-Pay. Ответ Таблица 2.14.2.2. Параметры ответа Наименование Тип Обязательность Описание Success Boolean Да Успешность запроса. ErrorCode String Да Код ошибки, «0» — если успешно. Message String Нет Краткое описание ошибки. Details String Нет Подробное описание ошибки. Params* Object Да Параметры ответа. "Протокол EACQ Мультирасчеты" 60 Таблица 2.14.2.3. Структура объекта Params Наименование Тип Обязательность Описание RedirectUrl String Да Ссылка для перехода в приложение MB на мобильном устройстве. WebQR String Нет URL для получения QR. Пример ответа: { "Success": true, "ErrorCode": "0", "Params": { "RedirectUrl": "https://www.tinkoff.ru/tpay/2000000000000037338", "WebQR": "https://securepay.tinkoff.ru/v2/TinkoffPay/2332790853/QR" } } Устаревший ответ для версии 1.0 (E-invoice): { "Success": true, "ErrorCode": "0", "Params": { "RedirectUrl": "tinkoffbank://Main/EInvoicing?billId=5000015507&providerId=e-invoicing" } } "Протокол EACQ Мультирасчеты" 61 2.13.3. Метод GET /v2/TinkoffPay/{paymentId}/QR Метод для схемы PCI DSS Метод генерирует и возвращает QR на оплату для десктопов. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/TinkoffPay/{paymentId}/QR Боевой URL: https://securepay.tinkoff.ru/v2/TinkoffPay/{paymentId}/QR * Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос отправляется с боевого терминала. Метод: GET Таблица 2.14.3.1. Параметры запроса Наименование Тип Обязательность Описание paymentId Number Да Идентификатор платежа. Ответ Формат ответа: imageSVG Таблица 2.14.3.2. Параметры ответа Наименование Тип Обязательность Описание QR imageSVG Нет WebQR для T-Pay. "Протокол EACQ Мультирасчеты" 62 3. Методы оплаты по QR Метод для схемы PCI DSS URL отправки запросов https://securepay.tinkoff.ru/v2/ 3.1. Схема проведения платежа при оплате по QR "Протокол EACQ Мультирасчеты" 63 3.2. Схема проведения рекуррентного платежа по QR "Протокол EACQ Мультирасчеты" 64 3.3. Метод GetQr Метод регистрирует QR и возвращает информацию о нем. Вызывается после вызова метода Init. Запрос Боевой URL: https://securepay.tinkoff.ru/v2/GetQr Метод: POST Таблица 3.3.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. PaymentId String Да Идентификатор транзакции в системе Т-Бизнес. DataType String Нет Тип возвращаемых данных: • PAYLOAD — в ответе возвращается только Payload; • IMAGE — в ответе возвращается SVG изображение QR. Значение по умолчанию — Payload. Token String Да Подпись запроса. Пример запроса: { "TerminalKey": "TBankTest", "PaymentId": "10063", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" } "Протокол EACQ Мультирасчеты" 65 Ответ Формат ответа: JSON Таблица 3.3.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. OrderId String Да Номер заказа в системе Площадки. Success Boolean Да Успешность запроса. Data String Да В зависимости от параметра DataType в запросе: • Payload — информация, которая должна быть закодирована в QR; • SVG — изображение QR, в котором уже закодирован Payload. PaymentId Number Да Идентификатор транзакции в системе Т-Бизнес. ErrorCode String Да Код ошибки, «0» — если успешно. Message String Нет Краткое описание ошибки. Details String Нет Подробное описание ошибки. Пример ответа: { "TerminalKey": "TBankTest", "OrderId": "21057", "Success": true, "Data": https://qr.nspk.ru/AS1000670LSS7DN18SJQDNP4B05KLJL2?type=01&bank=100000000001&s um=10000&cur=RUB&crc=C, "PaymentId":10063, "ErrorCode": "0" } "Протокол EACQ Мультирасчеты" 66 3.4. Метод QrMembersList Метод возвращает список участников, которым может быть сделан возврат платежа, совершенного по QR. Запрос Боевой URL: https://securepay.tinkoff.ru/v2/QrMembersList Метод: POST Таблица 3.4.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. PaymentId String Да Идентификатор транзакции в системе Т-Бизнес. Token String Да Подпись запроса. Пример запроса: { "TerminalKey": "TBankTest", "PaymentId": "10063", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" } Ответ Формат ответа: JSON Таблица 3.4.2. Параметры ответа Наименование Тип Обязательность Описание Members Array of objects Нет Массив списка участников. Возвращается, только если возврат возможен. Success Boolean Да Успешность запроса. ErrorCode String Да Код ошибки, «0» — если успешно. Message String Нет Краткое описание ошибки. "Протокол EACQ Мультирасчеты" 67 Таблица 3.4.3. Параметры объекта Member Наименование Тип Обязательность Описание MemberId String Да Идентификатор участника. MemberName String Да Наименование участника. IsPayee Boolean Да Признак того, что данный участник был получателем указанного платежа. Пример ответа: { "Members": [ { "MemberId": "1000000", "MemberName": "АО\"Газпромбанк\"", "IsPayee": true }, { "MemberId": "1000000", "MemberName": "ПАО \"Сбербанк\"", "IsPayee": false } ], "Success": true, "ErrorCode": "0", "Message": "OK" } "Протокол EACQ Мультирасчеты" 68 3.5. Метод AddAccountQr Метод инициирует привязку счета Покупателя к магазину и возвращает информацию о нем. Запрос Боевой URL: https://securepay.tinkoff.ru/v2/AddAccountQr Метод: POST Таблица 3.5.1. Параметры запроса Наименование Тип Обязательност ь Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. Description String Да Подробное описание деталей заказа. DataType String Нет Тип возвращаемых данных: • PAYLOAD — в ответе возвращается только Payload; • IMAGE — в ответе возвращается SVG изображение QR. Значение по умолчанию — Payload. DATA Object Нет JSON-объект с дополнительными параметрами по операции в формате "ключ: значение". Максимальная длина ключа — 20 знаков, значения — 100 знаков. Максимальное количество пар "ключ: значение" — не больше 20. Если платежная форма кастомизирована, эти параметры будут переданы на нее. "Протокол EACQ Мультирасчеты" 69 RedirectDueDate Datetime Нет Cрок жизни ссылки или динамического QRкода СБП, если выбран этот способ оплаты****. Если дата в параметре меньше текущей, оплата по ссылке и QR, будет недоступна. • Минимальное значение — 1 минута от текущей даты. • Максимальное значение — 90 дней от текущей даты. • Формат даты — YYYY-MMDDTHH24:MI:SS+GMT. Пример даты — 2016-08-31T12:28:00+03:00 Token String Да Подпись запроса. * Если параметр RedirectDueDate не был передан, проверяется настроечный параметр терминала REDIRECT_TIMEOUT, который содержит значение срока жизни ссылки в часах. Если его значение: • больше нуля — оно будет установлено в качестве срока жизни ссылки или динамического QR-кода; • меньше нуля — устанавливается значение по умолчанию: 1440 мин. (1 сутки). Пример запроса: { "TerminalKey": "TBankTest", "RedirectDueDate": "2016-08-31T12:28:00+03:00", "DataType": "PAYLOAD", "Description": "Подписка в пользу АО\"Кофеек\", регулярность раз в месяц, сумма 100 рублей", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" } Ответ Формат ответа: JSON Таблица 3.5.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. Data String Да В зависимости от параметра DataType в запросе: • Payload — информация, которая должна быть закодирована в QR; • SVG — изображение QR, в котором уже закодирован Payload. "Протокол EACQ Мультирасчеты" 70 RequestKey String Да Идентификатор запроса на привязку счета. Success Boolean Да Успешность запроса. ErrorCode String Да Код ошибки. • "0" — если успешно; • "3013" — "Рекуррентные платежи недоступны"; • "3001" — "Оплата через QrPay недоступна". Message String Нет Краткое описание ошибки. Пример ответа: { "TerminalKey": "TBankTest", "RequestKey": "AB1000670LSS7DN18SJQDNP4B05KLJL2", "Data": "https://qr.nspk.ru/AS1000670LSS7DN18SJQDNP4B05KLJL2?type=01&bank=100000000001& sum=10000&cur=RUB&crc=C08B", "Success": true, "Message": "OK", "ErrorCode": "0" } "Протокол EACQ Мультирасчеты" 71 3.6. Метод ChargeQr Метод проводит рекуррентный платеж — списание денежных средств Покупателя по ранее привязанному счету с помощью метода AddAccountQr. Схема проведения платежа. Чтобы провести рекуррентный платеж: 1. Вызовите метод Init с указанием дополнительных параметров Recurrent=Y и DATA= {"QR": true} для получения параметра PaymentId. 2. Вызовите метод ChargeQr с параметром AccountToken. Метод проверяет и возвращает промежуточный результат: • Негативный — отказ на стороне банка-эквайера. Коды ошибок. • Позитивный — платеж передан в обработку НСПК и банка-эмитента. Конечный результат обработки — изменение статуса на CONFIRMED или CANCELED, который сообщается в ответе метода GetState или в нотификации от Т-Бизнес. Запрос Боевой URL: https://securepay.tinkoff.ru/v2/ChargeQr Метод: POST Таблица 3.6.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. PaymentId String Да Уникальный идентификатор транзакции в системе банка. AccountToken String Да Идентификатор привязки счета. Назначается Банком Покупателя. Token String Да Подпись запроса. IP String Нет IP-адрес Покупателя. SendEmail Boolean Нет Отправка уведомлений об оплате на почту Покупателя: • true — отправлять; • false — не отправлять. InfoEmail String Нет Адрес почты Покупателя. "Протокол EACQ Мультирасчеты" 72 Пример запроса: { "TerminalKey": "TBankTest", "PaymentId": "10063", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" "AccountToken": "70LSS7DN18SJQRS10006DNPKLJL24B05" } Ответ Формат ответа: JSON Таблица 3.6.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. OrderId String Да Номер заказа в системе Площадки. Success Boolean Да Успешность прохождения запроса Status String Да Статус транзакции Amount Number Да Сумма списания в копейках. Currency Number Да Код валюты по стандарту ISO 421. PaymentId String Да Уникальный идентификатор транзакции в системе Т-Бизнес. ErrorCode String Да Код ошибки: • "0" — успешный платеж; • "3013" — "Рекуррентные платежи недоступны"; • "3015" — "Неверный статус AccountToken". Message String Нет Краткое описание ошибки Пример ответа: { "TerminalKey": "TBankTest", "OrderId": "21057", "Success": true, "Status": "`OK", "Amount": 100, "Currency": "643", "PaymentId": "10063", "ErrorCode": "0" } "Протокол EACQ Мультирасчеты" 73 3.7. Метод GetAddAccountQrState Возвращает статус привязки счета Покупателя по магазину. Таблица 3.7.1. Статусы привязки счета Наименование Описание NEW Получен запрос на привязку счета. PROCESSING В обработке. ACTIVE Привязка счета успешна. INACITVE Привязка счета неуспешна/деактивирована. Запрос Боевой URL: https://securepay.tinkoff.ru/v2/GetAddAccountQrState Метод: POST Таблица 3.7.2. Параметры запроса Наименование Тип Обязательность Описание RequestKey String Да Идентификатор запроса на привязку счета. TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. Token String Да Подпись запроса. Пример запроса: { "TerminalKey": "TBankTest", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6", "RequestKey": "AB1000670LSS7DN18SJQDNP4B05KLJL2", } "Протокол EACQ Мультирасчеты" 74 Ответ Формат ответа: JSON Таблица 3.
7.3. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. RequestKey String Да Идентификатор запроса на привязку счета Status String Да Статус привязки BankMemberId String Нет Идентификатор Банка Покупателя, который будет совершать оплату по привязанному счету. Параметр передается, если статус ACTIVE или INACTIVE. BankMemberName String Нет Наименование Банка. Заполнен если BankMemberId передан. Success Boolean Да Успешность прохождения запроса ErrorCode String Да Код ошибки. • "0" — успешный платеж; • "3012" — "Привязка счета не найдена". Message String Нет Краткое описание ошибки. Пример ответа: { "TerminalKey": "TBankTest", "RequestKey": "AB1000670LSS7DN18SJQDNP4B05KLJL2", "Status": "NEW", "Success":true, "Message": "OK", "ErrorCode": "0" } "Протокол EACQ Мультирасчеты" 75 3.8. Метод GetAccountQrList Возвращает список привязанных счетов Покупателей по магазину. Запрос Боевой URL: https://securepay.tinkoff.ru/v2/GetAccountQrList Метод: POST Таблица 3.8.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. Token String Да Подпись запроса Пример запроса: { "TerminalKey": "TBankTest", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" } Ответ Формат ответа: Массив JSON Таблица 3.8.2. Параметры ответа Наименование Тип Обязательность Описание RequestKey String Да Идентификатор запроса на привязку счета. Status String Да Статус привязки. AccountToken String Нет Идентификатор привязки счета, назначаемый Банком Покупателя. BankMemberId String Нет Идентификатор Банка Покупателя, который будет совершать оплату по привязанному счету. Параметр передается, если статус ACTIVE или INACTIVE. BankMemberName String Нет Наименование Банка. Заполнен, если передан BankMemberId. Success Boolean Да Успешность прохождения запроса. ErrorCode String Да Код ошибки, «0» — если успешно. "Протокол EACQ Мультирасчеты" 76 Message String Нет Краткое описание ошибки. Пример ответа: { "AccountTokens": [ { "RequestKey": "AB1000670LSS7DN18SJQDNP4B05KLJL2", "Status": "ACTIVE", "AccountToken": "70LSS7DN18SJQRS10006DNPKLJL24B05", "BankMemberId": "100000000004", "BankMemberName": "Промсвязьбанк" }, { "RequestKey": "AB1000670LSS7DN18SJQDNP4B05KLJL3", "Status": "ACTIVE", "AccountToken": "70LSS7DN18SJQRS10006DNPKLJL24B33", "BankMemberId": "100000000004", "BankMemberName": "Промсвязьбанк" } ], "TerminalKey": "TBankTest", "Success": true, "ErrorCode": "0", "Message": "OK" } "Протокол EACQ Мультирасчеты" 77 4. Нотификации Площадки об операциях Нотификации – это уведомления магазину о статусе выполнения платежа. На основании этих уведомлений магазин должен предоставлять услугу/товар Покупателю. 4.1. Нотификации по электронной почте Т-Бизнес может присылать письма с уведомлениями об успешных платежах. Настроить нотификации на электронную почту можно по обращению в службу технической поддержки acq_help@tbank.ru. Уведомления на почту можно комбинировать с уведомлениями, отправляемыми по http(s). 4.2. Нотификации по http(s) Т-Бизнес может уведомлять магазин об успешных/ошибочных платежах и изменении статуса платежа. Для этого в настройках терминала необходимо указать URL, на который будут отправляться POSTзапросы со статусами. При вызове методов Authorize, FinishAuthorize, Confirm и Cancel на адрес NotificationURL высылается уведомление POST-запросом с информацией об операции. При одностадийной оплате после вызова метода FinishAuthorize нотификация отправляется на сайт Площадки на адрес NotificationURL синхронно и ожидает ответа в течение 10 секунд. После получения ответа или неполучения его за заданное время сервис переадресует Покупателя на SuccessURL или FailURL в зависимости от результата платежа. В случае успешной обработки нотификации Площадка должна вернуть ответ с телом сообщения: 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.49.24.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 — тестовая среда. *Для корректной работы нотификаций необходимо добавить данные сети в исключения сетевых фильтров или других видов защиты в случае их использования. "Протокол EACQ Мультирасчеты" 78 URL: Notification URL Метод: POST Таблица 4.2.1. Параметры нотификации Наименование Тип Описание TerminalKey String Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. OrderId String Номер заказа в системе Площадки. Success Boolean Успешность прохождения запроса. Status String Статус платежа. PaymentId String Уникальный идентификатор платежа в системе банка. ErrorCode String Код ошибки, «0» — если успешно. Amount Number Текущая сумма платежа в копейках. CardId Number Идентификатор карты в системе Т-Бизнес. Если в Pan указан номер телефона, параметр в уведомлении может отсутствовать. Pan String Замаскированный номер карты или номер телефона. ExpDate String Срок действия карты RebillId String Идентификатор рекуррентного платежа. Заполнен, если при вызове метода Init платеж был помечен как рекуррентный и платеж был подтвержден. Token String Подпись запроса. Формируется по такому же принципу, как и в случае запросов в банк. DATA String Дополнительные параметры платежа, переданные при создании заказа. SpAccumulationId String Идентификатор сделки (DealId). Вне зависимости от способа создания сделки ее идентификатор всегда возвращается в параметре SpAccumulationId вне блока DATA * Параметры, передаваемые в нотификации, могут изменяться. "Протокол EACQ Мультирасчеты" 79 Рекомендуется проверять данные, полученные в нотификации: 1. Сеть, с которой будут приходить уведомления: 91.218.132.1, 91.218.133.1 и далее по списку, который указан выше. 2. Проверить Token. 3. Проверить сумму платежа. 4. Проверить идентификатор терминала. 5. Проверить номер заказа в системе Площадки. Таблица 4.2.2. Статусы платежей, по которым приходят http(s)-нотификации Status Описание AUTHORIZED Деньги захолдированы на карте клиента. Ожидается подтверждение операции. * CONFIRMED Операция подтверждена. REVERSED Операция отменена. REFUNDED Произведен возврат. PARTIAL_REFUNDED Произведен частичный возврат. REJECTED Списание денежных средств закончилась ошибкой. 3DS_CHECKING Автоматическое закрытие сессии, которая превысила срок пребывания в статусе 3DS_CHECKING (более 36 часов).** * Операция может быть подтверждена: – Через Личный Кабинет; – Запросом Confirm; – Автоматически, если у магазина настроена одностадийная схема оплаты. По неподтвержденным операциям возмещение не производится. Узнать статус платежа можно с помощью вызова метода GetState. ** Для получения нотификаций по 3DS_CHECKING вам нужно реализовать на своей стороне возможность получения нотификаций со статусом DEADLINE_EXPIRED и написать на почту acq_help@tbank.ru c просьбой включить отправку нотификаций об автозакрытии сессий в статусе 3DS_CHECKING. Пример http(s)-нотификации: { "TerminalKey": "TBankTest", "OrderId": "test2", "Success": true, "Status": "CONFIRMED", "PaymentId": "2006896", "ErrorCode": "0", "Протокол EACQ Мультирасчеты" 80 "Amount": 102120, "CardId": 867911, "Pan": "430000**0777", "ExpDate": "1122", "Token": "d0815e288f121255d5d6b77831fb486cc5e9f91914a3f58a99b6118b54676d84" } Ответ на HTTP(s)-нотификацию В случае успешной обработки нотификации Площадке необходимо вернуть ответ HTTP CODE = 200 и с телом сообщения: OK (без тегов и заглавными английскими буквами). PHP. Пример ответа на http(s)-нотификацию Java. Пример ответа на http(s)-нотификацию @POST @Path("/ok") public Response NotifyResponse() { return Response.status(200).entity("OK").build(); } Если ответ "OK" не получен, нотификация считается неуспешной, и сервис будет повторно отправлять эту нотификацию раз в час в течение 24 часов. Если нотификация за это время не доставлена, она будет сложена в архив. При получении нотификации и перед её обработкой настоятельно рекомендуем проверить подпись. Проверка токена Для формирования подписи запроса для нотификации необходимо: 1. Собрать массив всех передаваемых параметров в виде пар Ключ-Значение (кроме параметра Token). Например: [["TerminalKey","TBankTest"], ["OrderId","201709"], ["Success","true"], ["Status","AUTHORIZED"], ["PaymentId","8742591"], ["ErrorCode","0"], ["Amount","9855"], ["CardId","322264"], ["Pan","430000******0777"], ["ExpDate","1122"], ["RebillId ","101709"]] 2. Добавить в массив пару (Password, значение). Password — пароль для терминала, указан в Личном кабинете https://business.tbank.ru: [["TerminalKey","TBankTest"], ["OrderId","201709"], ["Success","true"], ["Status","AUTHORIZED"], ["PaymentId","8742591"], ["ErrorCode","0"], ["Amount","9855"], ["CardId","322264"], ["Pan","430000******0777"], ["ExpDate","1122"], ["RebillId ","101709"], ["Password","Password"]] 3. Отсортировать массив по Ключам по алфавиту: [["Amount","9855"], ["CardId","322264"], ["ErrorCode","0"], ["ExpDate","1122"], ["OrderId","201709"], ["Pan","430000******0777"], ["Password","Password"], ["PaymentId","8742591"], ["RebillId","101709"], ["Status","AUTHORIZED"], ["Success","true"], ["TerminalKey","TBankTest"]] 4. Конкатенировать значения всех пар: 985532226401122201709430000******0777Dfsfh56dgKl8742591101709AUTHORIZEDtrue1 321054611234DEMO 5. Вычислить SHA-256 от полученного значения: b906d28e76c6428e37b25fcf86c0adc52c63d503013fdd632e300593d165766b "Протокол EACQ Мультирасчеты" 81 Пример генерации токена: private static final String PASSWORD_KEY = "Password"; private static final String PASSWORD_VALUE = "12345678"; private String generateToken(final Map parameters) throws UnsupportedEncodingException, NoSuchAlgorithmException { final Map sortedParameters = new TreeMap(parameters); if (sortedParameters.containsKey(TOKEN)) { sortedParameters.remove(TOKEN); } sortedParameters.put(PASSWORD_KEY, PASSWORD_VALUE); final String paramString = Joiner.on("").skipNulls().join(sortedParameters.values()); return calculateSha256(paramString); } Пример сравнения токенов private boolean checkToken(final Map params, final String expectedToken) { final String actualToken = params.get(TOKEN); return !(expectedToken == null || !expectedToken.equals(actualToken)); } "Протокол EACQ Мультирасчеты" 82 4.3. Нотификация о привязке карты Вам будет отправлена информация о статусе привязки после привязки карты через метод: • AddCard для мерчантов без PСI DSS; • AttachCard для мерчантов с PCI DSS. После завершения привязки на адрес NotificationURL отправляется уведомление POST-запросом с информацией о привязке карты. Нотификация отправляется на сайт Площадки на адрес NotificationURL синхронно и ожидает ответа в течение 10 секунд. По истечении этого времени сервис переадресует Покупателя на SuccessAddCardURL или FailAddCardURL в зависимости от результата привязки карты. В случае успешной обработки нотификации Площадка должна вернуть ответ с телом сообщения: OK (без тегов и заглавными английскими буквами). Если тело сообщения отлично от OK, любая нотификация считается неуспешной, и сервис будет повторно отправлять нотификацию раз в час в течение 24 часов. Если нотификация за это время так и не доставлена, она складывается в дамп. URL: Notification URL Метод: POST Таблица 4.3.1. Параметры нотификации Наименование Тип Описание TerminalKey String Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. CustomerKey String Идентификатор Покупателя в системе Площадки RequestKey String Идентификатор запроса на привязку карты Success bool Успешность запроса Status String Статус привязки PaymentId String Уникальный идентификатор транзакции в системе банка ErrorCode String Код ошибки, «0» — если успешно CardId Number Идентификатор привязанной карты Pan String Маскированный номер карты ExpDate String Срок действия карты. Возвращается пустым для привязок с CheckType=NO. "Протокол EACQ Мультирасчеты" 83 NotificationType String Тип нотификации, всегда константа "LINKCARD" RebillId String Идентификатор рекуррентного платежа Token String Подпись запроса. Формируется по такому же принципу, как и в случае запросов в банк Таблица 4.3.2. Статусы привязок, по которым приходят http(s)-нотификации Status Описание COMPLETED Карта успешно привязана REJECTED Привязка карты неуспешна Пример http(s)-нотификации: { "TerminalKey": "TBankTest", "CustomerKey": "G_customer5", "RequestKey": "9ca9b229-dc31-4712-8e53-b3f9540869e5", "Success": true, "Status": "COMPLETED", "PaymentId": "700000045896", "ErrorCode": "0", "CardId": 70000000857, "Pan": "430000******0777", "ExpDate": "1122", "NotificationType": "LINKCARD", "RebillId": "700000004090", "Token": "f2fdd7fec8225872590e1558b7ea258c75df8f300d808006c41ab540dd7514d9" } Ответ на HTTP(s)-нотификацию В случае успешной обработки нотификации Площадке необходимо вернуть ответ HTTP CODE = 200 и с телом сообщения: OK (без тегов и заглавными английскими буквами). PHP. Пример ответа на http(s)-нотификацию Java. Пример ответа на http(s)-нотификацию @POST @Path("/ok") public Response NotifyResponse() { return Response.status(200).entity("OK").build(); } Если ответ "OK" не получен, нотификация считается неуспешной, и сервис будет повторно отправлять данную нотификацию раз в час в течение 24 часов. Если нотификация за это время не доставлена, она будет сложена в архив. При получении нотификации и перед её обработкой настоятельно рекомендуем проверить подпись. "Протокол EACQ Мультирасчеты" 84 4.4 Нотификация о статусе привязки счета После привязки счета по QR, магазину отправляется статус привязки и токен. Нотификация будет приходить по статусам ACTIVE и INACTIVE. Таблица 4.6.1. Статусы привязки счета Наименование Описание ACTIVE Привязка счета успешна. INACTIVE Привязка счета неуспешна/деактивирована. Запрос URL: Notification URL Метод: POST Таблица 4.6.2. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. RequestKey String Да Идентификатор запроса на привязку счета. Status String Да Статус привязки. AccountToken String Нет Идентификатор привязки счета — Token. Назначается Т-Бизнес. BankMemberId String Нет Идентификатор Банка Покупателя, который будет совершать оплату по привязанному счету. Заполнен, если статус ACTIVE. BankMemberName String Нет Наименование Банка. Заполнен если BankMemberId передан. NotificationType String Да Тип нотификации. Всегда "LINKACCOUNT". Success Boolean Да Успешность запроса. ErrorCode String Да Код ошибки, «0» — если успешно. "Протокол EACQ Мультирасчеты" 85 Message String Нет Краткое описание ошибки. Token String Да Подпись запроса. Формируется по такому же принципу, как и в случае запросов в банк Пример http(s)-нотификации: { "TerminalKey": "TBankTest", "RequestKey ": "AB1000670LSS7DN18SJQDNP4B05KLJL2", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6 ", "Status": "ACTIVE", "AccountToken": " 70LSS7DN18SJQRS10006DNPKLJL24B05", "BankMemberId": "100000000004", "BankMemberName": "Промсвязьбанк", "NotificationType": "LINKACCOUNT", "Success": true, "Message": "OK", "ErrorCode": "0" }, Ответ на HTTP(s)-нотификацию В случае успешной обработки нотификации Площадке необходимо вернуть ответ HTTP CODE = 200 и с телом сообщения: OK (без тегов и заглавными английскими буквами). PHP. Пример ответа на http(s)-нотификацию Java. Пример ответа на http(s)-нотификацию { @POST @Path("/ok") public Response NotifyResponse() { return Response.status(200).entity("OK").build(); } Если ответ OK не получен, нотификация считается неуспешной, и сервис будет повторно отправлять данную нотификацию раз в час в течение 24 часов. Если нотификация за это время не доставлена, она будет сложена в архив. "Протокол EACQ Мультирасчеты" 86 5. Методы работы с привязанными картами и клиентами Необходимо обратить внимание, что для корректной работы методов банком должна быть разрешена привязка карт и клиентов к терминалу Площадки. В результате привязки карты к параметру CustomerKey будет привязана CardId. Рисунок 1. Статусная схема привязки карт Описание статусов: − NEW — новая сессия; − FORM_SHOWED — показ формы привязки карты; − 3DS_CHECKING — отправка пользователя на проверку 3DS − 3DS_CHECKED — пользователь успешно прошел проверку 3DS; − AUTHORIZING — отправка платежа на 0 руб.; − AUTHORIZED — платеж на 0 руб. прошел успешно; − COMPLETED — привязка успешно завершена; − REJECTED — привязка отклонена. "Протокол EACQ Мультирасчеты" 87 5.1. Метод AddCustomer Описание: Регистрирует Покупателя в терминале Площадки. Возможна автоматическая привязка Покупателя и карты, по которой был совершен платеж, при передаче параметра CustomerKey в методе Init. Это можно использовать для сохранения и последующего отображения Покупателю замаскированного номера карты, по которой будет совершен рекуррентный платеж. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/AddCustomer Боевой URL: https://securepay.tinkoff.ru/v2/AddCustomer *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 5.1.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. CustomerKey String Да Идентификатор Покупателя в системе Площадки Token String Да Подпись запроса IP String Нет IP-адрес запроса Email String Нет Email клиента Phone String Нет Телефон клиента Пример запроса: { "TerminalKey": "TBankTest", "CustomerKey": "Customer1", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" } Ответ Формат ответа: JSON "Протокол EACQ Мультирасчеты" 88 Таблица 5.1.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. CustomerKey String Да Идентификатор Покупателя в системе Площадки Success Boolean Да Успешность запроса ErrorCode String Да Код ошибки, "0" – если успешно Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "TerminalKey": "TBankTest", "CustomerKey": "Customer1", "Success": true, "ErrorCode": "0" } "Протокол EACQ Мультирасчеты" 89 5.2. Метод GetCustomer Описание: Возвращает данные Покупателя, зарегистрированного в терминале Площадки. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/GetCustomer Боевой URL: https://securepay.tinkoff.ru/v2/GetCustomer *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 5.2.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. CustomerKey String Да Идентификатор Покупателя в системе Площадки IP String Нет IP-адрес запроса Token String Да Подпись запроса Пример запроса: { "TerminalKey": "TBankTest", "CustomerKey: "Customer1", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" } Ответ Формат ответа: JSON Таблица 5.2.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. CustomerKey String Да Идентификатор Покупателя в системе Площадки "Протокол EACQ Мультирасчеты" 90 Success Boolean Да Успешность запроса ErrorCode String Да Код ошибки, "0" - успешно Email String Нет Email клиента Phone String Нет Телефон клиента (+71234567890) Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "TerminalKey": "TBankTest", "CustomerKey": "Customer1", "Success": true, "ErrorCode": "0" } "Протокол EACQ Мультирасчеты" 91 5.3. Метод RemoveCustomer Описание: Удаляет сохраненные данные Покупателя. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/RemoveCustomer Боевой URL: https://securepay.tinkoff.ru/v2/RemoveCustomer *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 5.3.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. CustomerKey String Да Идентификатор Покупателя в системе Площадки Token String Да Подпись запроса IP String Нет IP-адрес запроса Пример запроса: { "TerminalKey": "TBankTest", "CustomerKey": "Customer1", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" } Ответ Формат ответа: JSON Таблица 5.3.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. CustomerKey String Да Идентификатор Покупателя в системе Площадки Success Boolean Да Успешность запроса "Протокол EACQ Мультирасчеты" 92 ErrorCode String Да Код ошибки, «0» — если успешно Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "TerminalKey": "TBankTest", "CustomerKey": "Customer1", "Success": true, "ErrorCode": "0" } "Протокол EACQ Мультирасчеты" 93 5.4. Метод AddCard Описание: Инициирует привязку карты к Покупателю. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/AddCard Боевой URL: https://securepay.tinkoff.ru/v2/AddCard *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 5.4.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. CustomerKey String Да Идентификатор Покупателя в системе Площадки Token String Да Подпись запроса CheckType String Нет Есть параметр не передается, автоматически проставляется значение NO. Возможные значения: − NO *– сохранить карту без проверок. RebillID для рекуррентных платежей не возвращается; − HOLD – при сохранении сделать списание на 0 руб. RebillID возвращается для терминалов без поддержки 3DS. − 3DS – при сохранении карты выполнить проверку 3DS и выполнить списание на 0 р. В этом случае RebillID будет только для 3DS карт. Карты, не поддерживающие 3DS, привязаны не будут. − 3DSHOLD – при привязке карты выполняем проверку, поддерживает карта 3DS или нет. Для всех карт выполняется списание на 0р. IP String Нет IP-адрес запроса ResidentState Boolean Нет Признак резидентности добавляемой карты. Возможные значения: • true — карта РФ, • false — карта не РФ, • null — не специфицируется (универсальная карта) * Если передан параметр CheckType=NO, на форме привязки будет только поле для заполнения номера карты. В этом случае в нотификации о привязке карты параметр ExpDate будет пустым. "Протокол EACQ Мультирасчеты" 94 Пример запроса: { "TerminalKey": "TBankTest", "CustomerKey": "testCustomer1234", "CheckType": "HOLD", "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e", "ResidentState": true } Ответ Формат ответа: JSON Таблица 5.4.2. Параметры ответа Имя Тип Обязательность Описание PaymentId Number Да Уникальный идентификатор транзакции в системе банка TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. CustomerKey String Да Идентификатор Покупателя в системе Площадки RequestKey String Да Идентификатор запроса на привязку карты PaymentURL String Да UUID, используется для работы без PCI DSS Success Boolean Да Успешность запроса ErrorCode String Да Код ошибки, "0" если успешно Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "PaymentId": 800000113483, "Success": true, "ErrorCode": "0", "TerminalKey": "TBankTest", "CustomerKey": "906540", "PaymentURL": "82a31a62-6067-4ad8-b379-04bf13e37642d", "RequestKey": "ed989549-d3be-4758-95c7-22647e03f9ec" } "Протокол EACQ Мультирасчеты" 95 5.5. Метод AttachCard Метод для схемы PCI DSS Метод завершает привязку карты к Покупателю. В случае успешной привязки переадресует клиента на Success Add Card URL в противном случае на Fail Add Card URL. Для прохождения 3DS v2.1.0 перед вызовом метода должны быть вызван Check3dsVersion и выполнен 3DS Method, который является обязательным при прохождении 3DS v.2.1.0. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/AttachCard Боевой URL: https://securepay.tinkoff.ru/v2/AttachCard *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 5.5.1. Параметры запроса Имя Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. RequestKey String Да Идентификатор запроса на привязку карты CardData String Да Зашифрованные данные карты в формате: "PAN=%pan%;ExpDate=%month%%year%;CVV=%secur e_code%" DATA* Object Нет JSON-объект с дополнительными параметрами по операции в формате "ключ: значение". Максимальная длина ключа — 20 знаков, значения — 100 знаков. Максимальное количество пар "ключ: значение" — не больше 20. Если платежная форма кастомизирована, эти параметры будут переданы на нее. Token String Да Подпись запроса Пример запроса: { "TerminalKey": "TBankTest", "CardData: "U5jDbwqOVx+2vDApxe/rfACMt+rfWXzPdJ8ZXxNFVIiZaLZrOW72bGe9cKZdIDnekW0nqm88YxRDjyfa5 "Протокол EACQ Мультирасчеты" 96 Ru0kY5cQValU+juS1u1zpamSDtaGFeb8sRZfhj72yGw+io+qHGSBeorcfgoKStyKGuBPWfGd0PLHuyBE6Q gZyIAM1XfdmNlV0UAxOnkTGDsskLpIt3AWhw2e8KOar0vwbgCTDjznDB1/DLgOW01Aj/bXyLJoG1BkOrP Bm9JURs+f+uyFae0hkRicNKNgXoN5pJTSQxOEauOi6ylsVJB3WK5MNYXtj6x GlxcmTk/LD9kvHcjTeojcAlDzRZ87GdWeY8wgg==", "RequestKey": "13021e10-a3ed-4f14-bcd1-823b5ac37390", "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc7b96" } * ВАЖНО! Для 3DS v2.1.0 в DATA необходимо передавать параметры, описанные в таблице DATA для 3DS v2 (см. выше на стр. 24). В HttpHeaders запроса обязательны заголовки: "User-Agent" и "Accept". Ответ Формат ответа: JSON Таблица 5.5.2. Параметры ответа Имя Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. CustomerKey String Да Идентификатор Покупателя в системе Площадки RequestKey String Да Идентификатор запроса на привязку карты CardId String Да Идентификатор карты в системе банка Success Boolean Да Успешность запроса ErrorCode String Да Код ошибки, "0" если успешно Status String Нет Статус привязки карты RebillId String Нет Идентификатор рекуррентного платежа Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "Success": true, "ErrorCode": "0", "TerminalKey": "TBankTest", "Протокол EACQ Мультирасчеты" 97 "CustomerKey": "testRegress5", "RequestKey": "8de92934-26c9-474c-a4ce-424f2021d24d", "CardId": "5555", "RebillId": "130799909" } ВАЖНО! Если в ответе метода возвращается статус 3DS_CHECKING, мерчанту необходимо сформировать запрос на URL ACS банка, выпустившего карту (в ответе параметр ACSUrl). "Протокол EACQ Мультирасчеты" 98 5.6. Метод GetAddCardState Метод возвращает статус привязки карты. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/GetAddCardState Боевой URL: https://securepay.tinkoff.ru/v2/GetAddCardState *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 5.6.1. Параметры запроса Имя Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. RequestKey String Да Идентификатор запроса на привязку карты Token String Да Подпись запроса Пример запроса: { "TerminalKey": "TBankTest", "RequestKey": "13021e10-a3ed-4f14-bcd1-823b5ac37390", "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc1111" } Ответ Таблица 5.6.2. Параметры ответа Имя Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. RequestKey String Да Идентификатор запроса на привязку карты Status String Да Статус привязки карты Success Boolean Да Успешность запроса ErrorCode String Нет Код ошибки, «0» — если успешно CustomerKey String Нет Идентификатор Покупателя в системе Площадки "Протокол EACQ Мультирасчеты" 99 CardId String Нет Идентификатор карты в системе банка RebillId String Нет Идентификатор рекуррентного платежа Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "TerminalKey": "TBankTest", "RequestKey": "c28a965b-7968-4d14-b05c-682b5221b8da", "Status": "COMPLETED", "Success": true, "ErrorCode": "0", "CustomerKey": "Test-112", "CardId": "881000", "RebillId": "130799276" } "Протокол EACQ Мультирасчеты" 100 5.7. Метод GetCardList Метод возвращает список привязанных карт Покупателя, в том числе и удаленные. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/GetCardList Боевой URL: https://securepay.tinkoff.ru/v2/GetCardList *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 5.7.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. CustomerKey String Да Идентификатор Покупателя в системе Площадки IP String Нет IP-адрес запроса Token String Да Подпись запроса Пример запроса: { "TerminalKey": "TBankTest", "CustomerKey": "Customer1", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf8 52c5dc1e99a8d6" } Ответ Формат ответа: Массив JSON Таблица 5.7.2. Параметры ответа Наименование Тип Обязательность Описание CardId String Да Идентификатор карты в системе банка Pan String Да Номер карты 411111******1111 Status String Да Статус карты: • A – активная, "Протокол EACQ Мультирасчеты" 101 • I – не активная, • D - удаленная RebillId String Нет Идентификатор рекуррентного платежа (см. параметр Recurrent в методе Init) CardType Enum Да Тип карты: • карта списания (0); • карта пополнения (1). ExpDate String Нет Срок действия карты Пример ответа: [ { "CardId": "881900", "Pan": "518223******0036", "Status": "D", "RebillId": "", "CardType": 0, "ExpDate": "1122" }, { "CardId": "882263", "Pan": "448744******4487", "Status": "A", "RebillId": "", "CardType": 0, "ExpDate": "0619" } ] "Протокол EACQ Мультирасчеты" 102 5.8. Метод RemoveCard Метод удаляет привязанную карту Покупателя. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/RemoveCard Боевой URL: https://securepay.tinkoff.ru/v2/RemoveCard *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 5.8.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. CardId String Да Идентификатор карты в системе банка CustomerKey String Да Идентификатор Покупателя в системе Площадки IP String Нет IP-адрес запроса Token String Да Подпись запроса Пример запроса: { "TerminalKey": "TBankTest", "CardId": "4750", "CustomerKey": "Customer1", "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" } Ответ Формат ответа: JSON Таблица 5.8.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. CardId String Да Идентификатор карты в системе банка "Протокол EACQ Мультирасчеты" 103 CustomerKey String Да Идентификатор Покупателя в системе Площадки Status String Да Статус карты: D – удалена Success Boolean Да Успешность запроса CardType Enum Да Тип карты: • карта списания (0); • карта пополнения (1). ErrorCode String Да Код ошибки, "0" - успешно Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "Success": true, "ErrorCode": "0", "TerminalKey": "TBankTest", "CustomerKey": "740892", "CardId": "879157", "Status": "D", "CardType": 0 } "Протокол EACQ Мультирасчеты" 104 6. Коды ошибок, передаваемые на FailURL Подробный список ошибок с описанием представлен в отдельном документе по следующей ссылке. "Протокол EACQ Мультирасчеты" 105 7. Список тестовых карт Тестовые карты используются при проведении операций на тестовой среде. Вы можете совершить несколько тестовых привязок с разными сроками действия и потом с помощью метода GetCardList посмотреть, какие карты привязаны. Для тестовых карт можно указывать любой срок действия, не раньше текущей даты. Таблица 7.1 Список тестовых карт для оплаты через протокол 3ds2.0 Поведение карты TranStatus* Описание PAN Ошибка оплаты Ошибка при списании Нет - 2201382000000021 expDate: 12/25 cvv: 123 Ошибка оплаты Недостаточно средств Нет Ошибка по карте возникает только при передаче значения Amount = 2233 в методе Init 2201382000000831 expDate: 12/25 cvv: 123 Успешная оплата 3ds 2.0 Frictionless Flow Нет AUTHENTICATION_SUCCESSFUL Успешное прохождение аутентификации без ввода пароля 2201382000000013 expDate: 12/25 cvv: 123 Успешная оплата 3ds 2.0 Challenge flow C CHALLENGE_REQURIED Требуется полное прохождение 3DS с редиректом на acsURL. Открытие формы для ввода одноразового пароля (OTP) 2201382000000047 expDate: 12/25 cvv: 123 Метод аутентификации на ACS: Static Passcode. Ввести верный пароль 1qwezxc Ошибка оплаты 3ds2.0 Restricted R ACCOUNT_VERIFICATION_REJECTED Эмитент отклонил аутентификацию 2201382000000005 expDate: 12/25 cvv: 123 Ошибка оплаты Frictionless Flow Not Authenticated N NOT_AUTHENTICATED Карта не поддерживает 3DS 2201382000000021 expDate: 12/25 cvv: 123 Успешная оплата Card not Enrolled (Attempt) A ATTEMPTS_PROCESSING_PERFORMED Эмитент недоступен или не поддерживает 3DS v2.1. Платежная система разрешает провести Pay, но эмитент мог отклонить авторизацию 2201382000000039 expDate: 12/25 cvv: 123 "Протокол EACQ Мультирасчеты" 106 Таблица 7.2 Список тестовых карт для оплаты через протокол 3ds1.0 Поведение карты TranStatus* Описание PAN Успешная оплата Нет - 5586200071492158 expDate: 12/25 cvv: 123 Ошибка оплаты Недостаточно средств при сумме авторизации больше 1000 рублей Нет - 5586200071499591 expDate: 12/25 cvv: 123 Таблица 7.3 Список тестовых карт для оплаты без 3ds Поведение карты TranStatus* Описание PAN Успешная оплата Нет - 2200770239097761 expDate: 12/25 cvv: 123 Ошибка оплаты Недостаточно средств Нет - 4249170392197566 expDate: 12/25 cvv: 123 Ошибка оплаты Ошибка при списании Нет - 5586200071492075 expDate: 12/25 cvv: 123 * Описание параметра TransStatus находится в описании параметров ответа cres (JSON/JWE cres объект) "Протокол EACQ Мультирасчеты" 107 8. Правила расчета возмещений по операционному реестру При наличии РКО от Т-Банка выплаты производятся в календарные дни. При отсутствии – в дни работы расчетно-кассового центра по графику Центробанка. Возмещение считается за один календарный день. Таблица 8.1 Типы операций и их влияние на подсчет реестра Тип операции Пояснение Плюс/минус Debit Операция оплаты Плюс Credit Операция возврата Минус Fee Комиссия по операции оплаты (в том числе неуспешной) Минус CancelRefund Отмена возврата Плюс Chargeback Опротестование операции эмитентом Минус 2Chargeback Арбитражное опротестование эмитентом Минус Chargeback_Reversal Отмена опротестования операции эмитентом Плюс 2Chargeback_Reversal Отмена арбитражного опротестования операции эмитентом Плюс CR_Chargeback Возврат операции Refund от эмитента (карта или договор закрыты) Плюс Representment Обратное опротестование Chargeback Т-Банком Плюс Representment_Reversal Отмена обратного опротестования 2Chargeback ТБанком Минус AUTH_FAIL Неуспешная авторизация. Сама операция в расчете не участвует. Участвует только комиссия за них. - CreditClientCorrection FeeColl (Ручное урегулирование операции с банкомэмитентом по договоренности или при списании с Т-Банка по клирингу) Минус DebitClientCorrection FeeColl (Ручное урегулирование операции с банкомэмитентом по договоренности или при списании с Т-Банка по клирингу) Плюс CreditCorrection Списание с ТСП претензии клиента Т-Банка Минус DebitCorrection Зачисление ТСП претензии клиента Т-Банка Плюс
ОПИСАНИЕ ПРОТОКОЛА A2C_V2 Мультирасчеты
1. Параметры выплат Параметры выплат настраиваются отдельно на каждый терминал. Таблица 1.1. Параметры выплат Название параметра Формат Описание TerminalKey 20 символов (чувствительно к регистру) Уникальный символьный ключ терминала. Устанавливается банком Success Add Card URL 250 символов (чувствительно к регистру) URL на веб-сайте продавца, куда будет переведен покупатель после успешной привязки карты Fail Add Card URL 250 символов (чувствительно к регистру) URL на веб-сайте продавца, куда будет переведен покупатель после неуспешной привязки карты Notification URL 250 символов (чувствительно к регистру) URL на веб-сайте продавца, куда будет отправлен POST запрос о статусе выполнения вызываемых методов. Только для методов Authorize, FinishAuthorize, Confirm, Cancel Валюта терминала 3 символа Валюта, в которой будут происходить списания по данному терминалу, если иное не передано в запросе Активность терминала Рабочий / Неактивный / Тестовый Определяет режим работы данного терминала Password 20 символов (чувствительно к регистру) Используется для подписи запросов/ответов. Является секретной информацией, известной только продавцу и банку. Пароль находится в личном кабинете мерчанта https://business.tbank.ru. Он совпадает с паролем от терминала интернет-эквайринга «Протокол A2C_V2 Мультирасчеты» 7 Таблица 1.2. Параметры Success Add Card URL и Fail Add Card URL Наименование Описание Success Возможные значения: true – привязка карты завершилась успешно; false – привязка карты не завершилась ErrorCode Код ошибки (0 – если ошибки не было). OrderId Номер заказа в системе Площадки. Message Заголовок ошибки (заполняется только в случае ошибки). Details Детальное описание ошибки (заполняется только в случае ошибки). Например: https://securepay.tinkoff.ru/html/payForm/e2c/html/e2cSuccess.html?Success=${Success}&ErrorCode=${E rrorCode}&Message=${Message}&Details=${Details}&PaymentId=${PaymentId}&TranDate=${TranDate}&B ackUrl=${BackUrl} «Протокол A2C_V2 Мультирасчеты» 8 2. Методы приема платежей 2.1. Общая информация Выдача средств осуществляется вызовом методов с передачей параметров методом GET или POST в зависимости от метода. Все методы и передаваемые параметры являются чувствительными к регистру. Порядок передачи параметров в запросе значения не имеет. Для POST запроса в заголовке должен присутствовать Content-Type: application/json Тестовый URL*: https://rest-api-test.tinkoff.ru/e2c/v2 Боевой URL: https://securepay.tinkoff.ru/e2c/v2 *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала. Для настройки и подключения TLS-cертификата от НУЦ Минцифры используйте инструкцию. «Протокол A2C_V2 Мультирасчеты» 9 2.2. Схема проведения платежа На схеме показаны статусы платежа и возможные методы, которые могут быть вызваны, если платеж находится в данном статусе. Полный список возможных статусов операции: • NEW — новая сессия, • AUTHORIZING — авторизация, • CHECKING — проверка данных, • CREDIT_CHECKING — на стадии обработки, • COMPLETING — операция выполняется, • REJECTED — операция отклонена, • CHECKED — проверка прошла успешно, • COMPLETED — операция успешно выполнена. «Протокол A2C_V2 Мультирасчеты» 10 2.3. Метод Init Метод для схем PCI DSS \ Без PCI DSS Описание: Инициирует платежную сессию. Примечание: При выплате по СБП не требуется использовать метод Payment. Выплата происходит в рамках одного метода Init. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/e2c/v2/Init/ Боевой URL: https://securepay.tinkoff.ru/e2c/v2/Init/ *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 2.3.1. Параметры запроса на выплату Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком OrderId String Да Номер заказа в системе Площадки IP String Нет IP-адрес клиента PaymentRecipientId String Да Идентификатор будущего получателя выплаты (номер телефона, email или иной идентификатор). Ограничение по длине значения: 16 символов. DealId Number Да Идентификатор сделки LevelOfConfidence String Нет Уровень проверки получателя выплаты. Параметр необходим только в том случае, если его передачу потребовал отдел рисков на этапе подключения. Возможные значения: "low", "moderate", "high" FinalPayout Boolean Нет Признак финальной выдачи. Если передан в значении true - сделка автоматически закроется после выплаты DigestValue String Да** Значение хеша в Base64 SignatureValue String Да** Значение подписи в Base64 X509SerialNumber String Да** Серийный номер сертификата «Протокол A2C_V2 Мультирасчеты» 11 Token String Нет** Подпись запроса CardId String Да* Идентификатор карты пополнения, привязанной с помощью метода AddCard. CardData String Да* Данные карты пополнения Phone String Да* Номер телефона получателя Формат: 11 цифр Пример: 70123456789 SbpMemberId Number Да* Идентификатор банка-получателя в СБП Получить список идентификаторов банка можно через Метод GetSbpMembers PartnerId String Да* ID партнера магазина Мультирасчётов, которому предназначается выплата. Партнер должен быть зарегистрирован в системе Банка (подробнее в документации). Передается значение из shopCode, полученного при регистрации партнера. Amount Number Да Сумма в копейках. Минимальное значение —100 Currency Number Нет Код валюты ISO 4217 (например, 643). Если передан Currency, и он разрешен для Продавца, то транзакция будет инициирована в переданной валюте. Иначе будет использована валюта по умолчанию для данного терминала. DATA Object Нет JSON объект, содержащий дополнительные параметры в виде “ключ”:“значение”. При передаче параметра CustomerKey, переданные в Data параметры привяжутся к пользователю. Максимальная длина для каждого передаваемого параметра: − Ключ – 20 знаков; − Значение – 100 знаков. Максимальное количество пар «ключзначение» не может превышать 20. senderAccountInfo Object Нет Объект для передачи данных отправителя (необходим для выплат на иностранные карты) recipientAccountInfo Object Нет Объект для передачи данных получателя (необходим для выплат на иностранные карты) «Протокол A2C_V2 Мультирасчеты» 12 * условная обязательность передачи: – CardId для выплаты на привязанную карту – или CardData для выплаты по зашифрованным данным карты – или набор параметров Phone и SbpMemberId для выплаты по СБП – или PartnerId для выплат Партнеру ** передается или Token (если отключена валидация подписи), или набор параметров DigestValue, SignatureValue, X509SerialNumber (при включенной валидации подписи) Таблица 2.3.2. Параметры CardData Наименование Тип Обязательность Описание PAN Number Да Номер карты ExpDate Number Нет Месяц и год срока действия карты в формате MMYY CardHolder String Нет Имя и фамилия держателя карты (как на карте) CVV String Нет Код защиты (с обратной стороны карты) Объект CardData собирается в виде списка «ключ=значение» (разделитель «;»), зашифровывается открытым ключом (X509 RSA 2048), получившееся бинарное значение кодируется в Base64. Открытый ключ генерируется в Т-Бизнес. Для получения открытого ключа для шифрования CardData можете написать на acq_help@tbank.ru или обратиться к сотруднику, который вам помогал с процессом выпуска терминала. Пример значения элемента формы CardData: PAN=4300000000000777;ExpDate=0523;CardHolder=IVAN PETROV;CVV=111 Привязка карты, переданной в объекте CardData, должна происходить в момент вызова Init к указанному CustomerKey (если он был передан) Таблица 2.3.3. Параметры объекта senderAccountInfo Наименование Тип Обязательность Описание addressInfo Object Обязателен для нерезидентов Блок адресных данных отправителя address String Да Адрес отправителя apartment String Да Номер квартиры отправителя «Протокол A2C_V2 Мультирасчеты» 13 building String Да Номер дома отправителя city String Да Город отправителя country String Да Код страны по стандарту ISO street String Да Улица отправителя postalCode String Да Почтовый индекс отправителя personInfo Object Обязателен для нерезидентов Блок персональных данных отправителя firstName String Да Имя lastName String Да Фамилия middleName String Да Первая буква отчества. При отсутствии отчества передается пробел dateOfBirth String Да Дата рождения citizenship String Да Гражданство passportInfo Object Обязателен для нерезидентов Блок паспортных данных series String Да Серия паспорта number String Да Номер паспорта issueDate String Да Дата выдачи паспорта accountNumber String Да Номер счета Пример заполнения объекта senderAccountInfo: "senderAccountInfo": { "addressInfo": { "address": "100000 Russia Moscowovie Moscow Titushkino 1 111", "apartment": "111", "building": "1", "city": "Moscow", "country": "643", "street": "Titushkino", "postalCode": "100000" }, «Протокол A2C_V2 Мультирасчеты» 14 "personInfo": { "firstName": "Nikolay", "lastName": "Petrov", "middleName": "A", "dateOfBirth": "21.12.2000", "citizenship": "RUS" }, "passportInfo": { "series": "00", "number": "000000", "issueDate": "12.12.2023" }, "accountNumber": "5546329130144633" } Таблица 2.3.4. Параметры объекта recipientAccountInfo Наименование Тип Обязательность Описание personInfo Object Да Блок персональных данных получателя firstName String Да Имя lastName String Да Фамилия middleName String Да Первая буква отчества. При отсутствии отчества передается пробел dateOfBirth String Да Дата рождения citizenship String Да Гражданство Пример заполнения объекта senderAccountInfo: { "TerminalKey": "TerminalKeyE2C", "recipientAccountInfo": { "personInfo": { "firstName": "Darja", "lastName": "Shulgan", "middleName": "A", "dateOfBirth": "21.12.2000", "citizenship": "RUS" } } «Протокол A2C_V2 Мультирасчеты» 15 Пример запроса для выплат на карту: { "TerminalKey": "TerminalKeyE2C", "OrderId": " TestOrder ", "CardId": "11111", "Amount": 1751, "PaymentRecipientId": "+7 999123456”, "DealId": "112233", "LevelOfConfidence": "moderate”, "FinalPayout": true, "Token": "17b0ac0170ec685cd9e3fc57948d21aeb45778c2c7da54140e9f258cb0a68ba1", "senderAccountInfo": { "addressInfo": { "address": "Moscow 5 259", "apartment": "259", "building": "5", "city": "Moscow ", "country": "643", "street": "Moscow ", "postalCode": "215010" }, "personInfo": { "firstName": " Отправитель ", "lastName": " Тест ", "middleName": " Тестович ", "dateOfBirth": "01.01.1990", "citizenship": "RUS" }, "passportInfo": { "series": "00 11", "number": "123456", "issueDate": "01.01.2010" }, }, "recipientAccountInfo": { "personInfo": { "firstName": " Получатель ", "lastName": " Тест", "middleName": " Тестович", "dateOfBirth": "01.01.2000", "citizenship": "BLR" } } Пример запроса для выплат СБП: { "TerminalKey": "TerminalKeyE2C", «Протокол A2C_V2 Мультирасчеты» 16 "OrderId": "testSBP 10", "Phone": "79998887766", "SbpMemberId": "100000000004", "FinalPayout": "true", "Amount": 100, "DealId": "9043456", "PaymentRecipientId": "79066589133", "Token": "e24fd85c4c20e85d2eab5f65e8b2066c83970b" } Пример запроса для выплат Партнеру: { "TerminalKey": "TerminalKeyE2C", "OrderId": "TestOrder", "Amount": 1751, "PartnerId": "523456”, "DealId": "112233", "FinalPayout": true, "Token": "cb70d75fff815c433b17297593e66eb33d0dd90ec5933b24272820cc564e7dca" } Ответ Формат ответа: JSON Таблица 2.3.5 Параметры ответа при выплате на карту Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком Amount Number Да Сумма в копейках OrderId String Да Номер заказа в системе Площадки Success bool Да Успешность операции Status String Да Статус транзакции PaymentId String Да Уникальный идентификатор транзакции в системе Банка CardId String Нет Идентификатор карты в системе Банка MaskedFio String Нет Маскированные данные ФИО получателя (для выплат по СБП) ErrorCode String Да Код ошибки, «0» - если успешно Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки «Протокол A2C_V2 Мультирасчеты» 17 Примеры ответа: { "Success": true, "ErrorCode": "0", "TerminalKey": "TerminalKeyE2C", "Status": "CHECKED", "PaymentId": "2353039", "OrderId": " PaymentTestN ", "Amount": 100000 } Пример ответа при выплате по СБП: { "TerminalKey": "TerminalKeyE2C", "OrderId": "Номер заказа", "PaymentId": "4443333222211", "Amount": "10000", "Success": "true", "Status": "COMPLETING", "ErrorCode": "0", "MaskedFio": "Иван И." } Статус платежа при выплате на карту или выплате Партнеру: • при успешном сценарии: CHECKED • при неуспешном: REJECTED при выплате по СБП: • при успешном сценарии: COMPLETED • при неуспешном: REJECTED • временный статус обработки: COMPLETING «Протокол A2C_V2 Мультирасчеты» 18 2.4. Метод Payment Метод для схем PCI DSS \ Без PCI DSS Описание: Пополняет карту. Примечание: При выплате по СБП не требуется использовать метод Payment. Выплата происходит в рамках одного метода Init. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/e2c/v2/Payment/ Боевой URL: https://securepay.tinkoff.ru/e2c/v2/Payment/ *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 2.4.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком PaymentId String Да Уникальный идентификатор транзакции в системе Банка DigestValue String Да* Значение хеша в Base64 SignatureValue String Да* Значение подписи в Base64 X509SerialNumber String Да* Серийный номер сертификата Token String Нет* Подпись запроса * передается или Token (если отключена валидация подписи), или набор параметров DigestValue, SignatureValue, X509SerialNumber (при включенной валидации подписи) Пример запроса: { "TerminalKey": "TerminalKeyE2C", "PaymentId": "700000085140", "DigestValue": "qfeohMmrsEvr4QPB8CeZETb+W6VDEGnMrf+oVjvSaMU=", "SignatureValue": "rNTloWBbTsid1n9B1ANZ9/VasWJyg6jfiMeI12ERBSlOnzy6YFqMaa5nRb9ZrK9wbKimIBD70v8j8eP/tKn7/g==", "X509SerialNumber": "2613832945" } «Протокол A2C_V2 Мультирасчеты» 19 Ответ Формат ответа: JSON Таблица 2.4.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком OrderId String Да Номер заказа в системе Площадки Success bool Да Успешность операции (true/false) Status String Да Статус транзакции PaymentId String Да Уникальный идентификатор транзакции в системе Банка ErrorCode String Да Код ошибки, «0» - если успешно Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "Success": "true", "ErrorCode": "0", "TerminalKey": "TerminalKeyE2C", "Status": "COMPLETED", "PaymentId": "10063", "OrderId": "21050" } Статус операции: • при успешном сценарии и одностадийном проведении платежа: COMPLETED • при неуспешном: REJECTED • операция обрабатывается: CREDIT_CHECKING* *операция будет находиться во временном статусе CREDIT_CHECKING в течении первых 10-20 минут. В течение этого времени можно вызвать метод GetState для уточнения конечного статуса выплаты, отличного от CREDIT_CHECKING, а именно: COMPLETED/REJECTED/CHECKED «Протокол A2C_V2 Мультирасчеты» 20 2.5.Метод GetState Метод для схем PCI DSS \ Без PCI DSS Описание: Возвращает статус платежа. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/e2c/v2/GetState/ Боевой URL: https://securepay.tinkoff.ru/e2c/v2/GetState/ *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 2.5.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком PaymentId String Да Уникальный идентификатор транзакции в системе Банка IP String Нет IP-адрес клиента DigestValue String Да* Значение хеша в Base64 SignatureValue String Да* Значение подписи в Base64 X509SerialNumber String Да* Серийный номер сертификата Token String Нет* Подпись запроса * передается или Token (если отключена валидация подписи), или набор параметров DigestValue, SignatureValue, X509SerialNumber (при включенной валидации подписи) Пример запроса: { "TerminalKey": "TerminalKeyE2C", "PaymentId": "700000085101", "DigestValue": "qfeohMmrsEvr4QPB8CeZETb+W6VDEGnMrf+oVjvSaMU=", "SignatureValue": "rNTloWBbTsid1n9B1ANZ9/VasWJyg6jfiMeI12ERBSlOnzy6YFqMaa5nRb9ZrK9wbKimIBD70v8j8eP/tKn7/g==", "X509SerialNumber": "2613832945" } «Протокол A2C_V2 Мультирасчеты» 21 Ответ Формат ответа: JSON Таблица 2.5.2. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком OrderId String Да Номер заказа в системе Площадки Success Boole Да Успешность операции (true/false) Status String Да Статус транзакции Amount Number Нет Сумма отмены в копейках PaymentId String Да Уникальный идентификатор транзакции в системе Банка ErrorCode String Да Код ошибки, «0» - если успешно Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "Success": "true", "ErrorCode": "0", "TerminalKey": "TerminalKeyE2C", "Status": "NEW", "PaymentId": "10063", "OrderId": "21057" } Возможные статусы транзакции: Статус Промежуточный? Значение NEW Нет Платеж зарегистрирован в шлюзе, но его обработка в процессинге не начата CHECKING Да Платеж на этапе проверки данных «Протокол A2C_V2 Мультирасчеты» 22 CHECKED Нет Данные проверены COMPLETING Да Начало зачисления денежных средств COMPLETED Нет Денежные средства зачислены на карту получателя REJECTED Нет Платеж отклонен Банком CREDIT_CHECKING* Да На стадии обработки. В течение 60 минут операции присвоится конечный статус согласно схеме * операция обрабатывается и будет находиться во временном статусе CREDIT_CHECKING в течении первых 10-20 минут. В течение этого времени можно вызвать метод GetState для уточнения конечного статуса выплаты: COMPLETED/REJECTED/CHECKED. «Протокол A2C_V2 Мультирасчеты» 23 2.6.Метод GetSbpMembers Метод для схем PCI DSS \ Без PCI DSS Описание: Получение списка идентификаторов банков, участвующих в СБП. Запрос Боевой URL: https://securepay.tinkoff.ru/a2c/sbp/GetSbpMembers Метод: POST Таблица 2.6.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком Token String Нет* Уникальный идентификатор транзакции в системе Банка DigestValue String Да* Значение хеша в Base64 SignatureValue String Да* Значение подписи в Base64 X509SerialNumber String Да* Серийный номер сертификата * передается или Token (если отключена валидация подписи), или набор параметров DigestValue, SignatureValue, X509SerialNumber (при включенной валидации подписи) Пример запроса: { "TerminalKey": "TerminalKeyE2C", "Token": "19b67a3be6500f17ccb607e5f874f614" } Ответ Формат ответа: JSON Таблица 2.6.2. Параметры ответа Наименование Тип Обязательность Описание Success Boolean Да Успешность прохождения запроса (true/false) ErrCode String Да Код ошибки, «0» - если успешно «Протокол A2C_V2 Мультирасчеты» 24 Message String Нет Краткое описание ошибки Members Object Да Таблица 2.6.3. Параметры объекта Members Наименование Тип Обязательность Описание MemberId String Да Код участника в СБП MemberName String Нет Наименование участника MemberNameRus String Да Наименование участника на русском Пример ответа: { "Success": true, "ErrorCode": "0", "Members": [ { "MemberId": "100000000004", "MemberName": "T-Bank", "MemberNameRus": "Т-Банк" }, { "MemberId": "100000000004", "MemberName": "T-Bank", "MemberNameRus": "Т-Банк" }, { "MemberId": "100000000004", "MemberName": "T-Bank", "MemberNameRus": "Т-Банк" } ] } «Протокол A2C_V2 Мультирасчеты» 25 2.7.Метод CancelPayment Метод для схем PCI DSS \ Без PCI DSS Описание: Отмена выплаты Партнеру. Примечание: Метод применяется только по успешной выплате Партнеру в рамках открытой сделки. По умолчанию метод отключен. Чтобы подключить отмены выплат Партнеру, пожалуйста, обратитесь к персональному менеджеру. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/e2c/v2/CancelPayment Боевой URL: https://securepay.tinkoff.ru/e2c/v2/CancelPayment *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 2.7.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком PaymentId Number Да Идентификатор сессии выплаты ЮЛ, по которой необходимо сделать возврат DealId String Да Идентификатор сделки Amount Number Нет* Сумма отмены в копейках Минимальное значение — 1 ExternalRequestId String Нет** Идентификатор операции на стороне мерчанта Token String Нет*** Уникальный идентификатор транзакции в системе Банка DigestValue String Да*** Значение хеша в Base64 SignatureValue String Да*** Значение подписи в Base64 X509SerialNumber String Да*** Серийный номер сертификата * Если параметр Amount не указан, производится полная отмена выплаты Партнеру. Отмена производится на сумму остатка по сессии. «Протокол A2C_V2 Мультирасчеты» 26 ** Если поле заполнено, то перед проведением отмены выплаты проверяется запрос на отмену выплаты с таким ExternalRequestId: • если такой запрос уже есть, то в ответе вернется текущее состояние платежной операции; • если такого запроса нет, то произойдет отмена выплаты. Если поле не передано или пустое (""), то запрос будет обработан без проверки ранее созданных возвратов. *** Передается или Token (если отключена валидация подписи), или набор параметров DigestValue, SignatureValue, X509SerialNumber (при включенной валидации подписи) Пример запроса: { "TerminalKey": "TerminalKeyE2C", "PaymentId": "4713907670", "DealId": "112233", "Amount": 3000, "ExternalRequestId": "1234567890" "DigestValue": "cb70d75fff815c433b17297593e66eb33d0dd90ec5933b24272820cc564e7dca", "SignatureValue": "cb70d75fff815c433b17297593e66eb33d0dd90ec5933b24272820cc564e7dca", "X509SerialNumber": "2613832945" } Ответ Формат ответа: JSON Таблица 2.7.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком OrderId String Да Номер заказа в системе Площадки Success Boolean Да Успешность прохождения запроса (true/false) Status String Да Статус транзакции PaymentId Number Да Уникальный идентификатор транзакции в системе Банка OriginalAmount Number Да Сумма в копейках до операции отмены NewAmount Number Да Сумма в копейках после операции отмены ExternalRequestId String Нет Идентификатор операции на стороне мерчанта ErrorCode String Да Код ошибки, «0» - если успешно «Протокол A2C_V2 Мультирасчеты» 27 Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "Success": true, "ErrorCode": "0", "TerminalKey": "TerminalKeyE2C", "Status": "PART_CREDIT_CANCELED", "ExternalRequestId": "1234567890", "PaymentId": "4713907670", "OriginalAmount": 10000, "NewAmount": 7000, "OrderId": "2124144154" } Статус операции: • при обработке запроса — CREDIT_CANCELING или CANCEL_CHECKING • при успешном выполнении сессия переходит в один из статусов: CREDIT_CANCELED — при отмене на полную сумму, PART_CREDIT_CANCELED — в случае частичной отмены • при неуспешном выполнении сессия получает статус COMPLETED , если по ней не было отмен, либо PART_CREDIT_CANCELED, если имелись частичные отмены «Протокол A2C_V2 Мультирасчеты» 28 2.8. Метод getConfirmOperation Метод генерирует справку по операции. Ее можно получить на вашу электронную почту или URL вашего сервиса, куда файл со справкой придет в формате Base64. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/getConfirmOperation Боевой URL: https://securepay.tinkoff.ru/v2/getConfirmOperation * Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос отправляется с боевого терминала. Метод: POST Таблица 2.8.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала. Выдается Площадке в Т-Бизнес при заведении терминала. Token String Да Подпись запроса. Для создания токена используйте только пароль и TerminalKey. PaymentIdList Array Да Номер заказа в системе Площадки. CallbackUrl String Да* URL cервиса получения справок. EmailList Array Да* Массив, который содержит перечень Email в формате String. * Передается либо CallbackUrl, либо EmailList. Пример запроса с получением справки на URL: { "TerminalKey": "TBankTest", "CallbackUrl": "http://www.tbank.ru", "PaymentIdList": [1201206437,1201206442], "Token": "f2fdd7fec8225872590e1558b7ea258c75df8f300d808006c41ab540dd7514d9 } Пример запроса с получением справки на Email: { "TerminalKey": "TBankTest", "PaymentIdList": [1201206437,1201206442], "EmailList": ["test1@tbank.ru","test2@tbank.ru"], «Протокол A2C_V2 Мультирасчеты» 29 "Token": "f2fdd7fec8225872590e1558b7ea258c75df8f300d808006c41ab540dd7514d9" } Ответ Формат ответа: JSON Таблица 2.8.2. Параметры ответа Наименование Тип Обязательность Описание Success Boolean Да Успешность запроса. ErrorCode String Да Код ошибки, «0» — если успешно. Message String Нет Краткое описание ошибки. PaymentIdList Array of objects Да JSON-массив с объектами, которые содержат информацию по запросу Таблица 2.8.3. Структура PaymentIdList Наименование Тип Обязательность Описание PaymentId String Да Уникальный идентификатор транзакции в системе Т-Бизнес. Success Boolean Да Успешность запроса. ErrorCode Number Да Код ошибки, «0» — если успешно. Message String Да Сервисное сообщение. Пример ответа: { "Success": true, "ErrorCode": 0, "Message": "OK", "PaymentIdList": [ { "Success": true, "ErrorCode": 0, "Message": "Запрос на отправку документа принят", "PaymentId": "1201206442" } ] } «Протокол A2C_V2 Мультирасчеты» 30 3. Алгоритм формирования подписи запроса 3.1. C помощью параметра Token Инструкция по формированию Token доступна по ссылке В запросе на выплаты не участвуют параметры X509SerialNumber, DigestValue, SignatureValue. Пример запроса в методе e2c/v2/Init: { "TerminalKey": "TerminalKeyE2C", "Amount": "1751", "OrderId": "autoOrd1615285401068DELb", "CardId": "70000000857", "Token": "76956ae79e4b33e9833ab09c344c638e14d772d0e423aec4db65039622b2f1b6" } 3.2. C помощью RSA сертификата: Для формирования подписи запроса необходимо: 1) Собрать массив всех передаваемых параметров в виде пар Ключ-Значение (кроме параметров DigestValue, SignatureValue, X509SerialNumber). Например: [{"TerminalKey","TerminalKeyE2C"},{"PaymentId","20150"}] 2) Сортировать по Ключам: [{"PaymentId","20150"},{"TerminalKey","TerminalKeyE2C"}] 3) Конкатенировать значения: 20150TerminalKeyE2C 4) Вычислить хэш-сумму по алгоритму SHA256 и получить результат в бинарном виде. 5) Закодировать получившееся бинарное значение в Base64 и записать значение в DigestValue 6) Подписать получившееся в п. 4 бинарное значение c помощью RSA ключа* алгоритмом RSASHA256, закодировать результат в BASE64 и записать в SignatureValue *Инструкция по получению RSA ключа доступна по ссылке. Ниже представлены примеры реализации работы с библиотекой: Язык Ссылка Java https://cdn.t-static.ru/static/documents/rsa-crypto-lib-java-mapi.zip «Протокол A2C_V2 Мультирасчеты» 31 3.3. C помощью сертификата КриптоПро: Для формирования подписи запроса необходимо: 1) Собрать массив всех передаваемых параметров в виде пар Ключ-Значение (кроме параметров DigestValue, SignatureValue, X509SerialNumber). Например: [{"TerminalKey","TerminalKeyE2C"},{"PaymentId","20150"}] 2) Сортировать по Ключам: [{"PaymentId","20150"},{"TerminalKey","TerminalKeyE2C"}] 3) Конкатенировать значения: 20150TerminalKeyE2C 4) Вычислить хэш-сумму по ГОСТ Р 34.11-2012 256 и записать значение в DigestValue (должно получиться значение в Base64). 5) Декодировать DigestValue из Base64, подписать получившееся значение по ГОСТ Р 34.10-2012 256 и записать в SignatureValue. (должно получится значение в Base64). *Инструкция по получению сертификата КриптоПро описана в п.7. Ниже представлены примеры реализации работы с библиотекой КриптоПро (CryptoPro): Язык Ссылка Версия КриптоПро С# Поддержка 2012 ГОСТ КриптоПРО CSP Java Поддержка 2012 ГОСТ КриптоПРО JCP PHP Поддержка 2012 ГОСТ КриптоПРО CSP «Протокол A2C_V2 Мультирасчеты» 32 4. Методы работы с привязанными картами и клиентами 4.1. Статусная схема привязки карт Необходимо обратить внимание, что для корректной работы методов банком должна быть разрешена привязка карт и клиентов к терминалу Продавца. В результате привязки карты к параметру CustomerKey будет привязана CardId. Описание статусов: − NEW — новая сессия; − FORM_SHOWED — показ формы привязки карты; − 3DS_CHECKING — отправка пользователя на проверку 3DS − 3DS_CHECKED — пользователь успешно прошел проверку 3DS; − AUTHORIZING — отправка платежа на 0 руб; − AUTHORIZED — платеж на 0 руб прошел успешно; − COMPLETED — привязка успешно завершена; − REJECTED — привязка отклонена. «Протокол A2C_V2 Мультирасчеты» 33 4.2. Метод AddCustomer Метод для схем PCI DSS \ Без PCI DSS Метод регистрирует покупателя в терминале Продавца. Возможна автоматическая привязка покупателя и карты, по которой был совершен платеж при передаче параметра CustomerKey в методе Init. Это можно использовать для сохранения и последующего отображения Покупателю замаскированного номера карты, по которой будет совершен рекуррентный платеж. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/e2c/v2/AddCustomer/ Боевой URL: https://securepay.tinkoff.ru/e2c/v2/AddCustomer/ *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 4.2.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком CustomerKey String Да Идентификатор покупателя в системе Площадки IP String Нет IP-адрес запроса Email String Нет Email клиента Phone String Нет Телефон клиента (+71234567890) DigestValue String Да* Значение хеша в Base64 SignatureValue String Да* Значение подписи в Base64 X509SerialNumber String Да* Серийный номер сертификата Token String Нет* Подпись запроса * передается или Token (если отключена валидация подписи), или набор параметров DigestValue, SignatureValue, X509SerialNumber (при включенной валидации подписи) Пример запроса: { "TerminalKey": "TerminalKeyE2C", «Протокол A2C_V2 Мультирасчеты» 34 "CustomerKey": "TestCustomer20", "IP": "192.168.40.74", "Email": "autotest@test.ru", "Phone": "+71234567890", "DigestValue": "qfeohMmrsEvr4QPB8CeZETb+W6VDEGnMrf+oVjvSaMU=", "SignatureValue": "rNTloWBbTsid1n9B1ANZ9/VasWJyg6jfiMeI12ERBSlOnzy6YFqMaa5nRb9ZrK9wbKimIBD70v8j8eP/tKn7/g==", "X509SerialNumber": "2613832945" } Формат ответа: JSON Ответ Таблица 4.2.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Платежный ключ, выдается Площадке при заведении терминала CustomerKey String Да Идентификатор покупателя в системе Площадки Success bool Да Успешность операции ErrorCode String Да Код ошибки, «0» в случае успеха Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "Success": "true", "ErrorCode": "0", "TerminalKey": "TerminalKeyE2C", "CustomerKey": "Customer1" } «Протокол A2C_V2 Мультирасчеты» 35 4.3. Метод GetCustomer Метод для схем PCI DSS \ Без PCI DSS Возвращает данные покупателя, сохраненные для терминала Продавца. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/e2c/v2/GetCustomer/ Боевой URL: https://securepay.tinkoff.ru/e2c/v2/GetCustomer/ *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 4.3.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком CustomerKey String Да Идентификатор покупателя в системе Площадки IP String Нет IP-адрес запроса DigestValue String Да* Значение хеша в Base64 SignatureValue String Да* Значение подписи в Base64 X509SerialNumber String Да* Серийный номер сертификата Token String Нет* Подпись запроса * передается или Token (если отключена валидация подписи), или набор параметров DigestValue, SignatureValue, X509SerialNumber (при включенной валидации подписи) Пример запроса: { "TerminalKey": "TerminalKeyE2C", "CustomerKey": "TestCustomer1", "IP": "192.168.40.74", "DigestValue": "qfeohMmrsEvr4QPB8CeZETb+W6VDEGnMrf+oVjvSaMU=", "SignatureValue": "rNTloWBbTsid1n9B1ANZ9/VasWJyg6jfiMeI12ERBSlOnzy6YFqMaa5nRb9ZrK9wbKimIBD70v8j8eP/tKn7/g==", "X509SerialNumber": "2613832945" } «Протокол A2C_V2 Мультирасчеты» 36 Формат ответа: JSON Ответ Таблица 4.3.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Платежный ключ, выдается Площадке при заведении терминала CustomerKey String Да Идентификатор покупателя в системе Площадки Success bool Да Успешность операции ErrorCode String Да Код ошибки, «0» в случае успеха Email String Нет Email клиента Phone String Нет Телефон клиента (+71234567890) Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "Success": true, "ErrorCode": "0", "TerminalKey": "TerminalKeyE2C", "CustomerKey": "Customer1" } «Протокол A2C_V2 Мультирасчеты» 37 4.4. Метод RemoveCustomer Метод для схем PCI DSS \ Без PCI DSS Описание: Удаляет сохраненные данные покупателя. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/e2c/v2/RemoveCustomer/ Боевой URL: https://securepay.tinkoff.ru/e2c/v2/RemoveCustomer/ *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 4.4.1. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком CustomerKey String Да Идентификатор покупателя в системе Площадки IP String Нет IP-адрес запроса DigestValue String Да* Значение хеша в Base64 SignatureValue String Да* Значение подписи в Base64 X509SerialNumber String Да* Серийный номер сертификата Token String Нет* Подпись запроса * передается или Token (если отключена валидация подписи), или набор параметров DigestValue, SignatureValue, X509SerialNumber (при включенной валидации подписи) Пример запроса: { "TerminalKey": "TerminalKeyE2C", "CustomerKey": "TestCustomer11", "IP": "192.168.40.74", "DigestValue": "qfeohMmrsEvr4QPB8CeZETb+W6VDEGnMrf+oVjvSaMU=", "SignatureValue": "rNTloWBbTsid1n9B1ANZ9/VasWJyg6jfiMeI12ERBSlOnzy6YFqMaa5nRb9ZrK9wbKimIBD70v8j8eP/tKn7/g==", "X509SerialNumber": "2613832945" } «Протокол A2C_V2 Мультирасчеты» 38 Формат ответа: JSON Ответ Таблица 4.4.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Платежный ключ, выдается Площадке при заведении терминала CustomerKey String Да Идентификатор покупателя в системе Площадки Success bool Да Успешность операции ErrorCode String Да Код ошибки, «0» в случае успеха Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "Success": true, "ErrorCode": "0", "TerminalKey": "TerminalKeyE2C", "CustomerKey": "Customer1" } «Протокол A2C_V2 Мультирасчеты» 39 4.5. Метод GetCardList Метод для схем PCI DSS \ Без PCI DSS Описание: Возвращает список привязанных карт у покупателя. В том числе показывает удаленные карты. Не возвращает список счетов, привязанных по номеру телефона через СБП Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/e2c/v2/GetCardList/ Боевой URL: https://securepay.tinkoff.ru/e2c/v2/GetCardList/ *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 4.5.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком CustomerKey String Да Идентификатор покупателя в системе Площадки IP String Нет IP-адрес запроса DigestValue String Да* Значение хеша в Base64 SignatureValue String Да* Значение подписи в Base64 X509SerialNumber String Да* Серийный номер сертификата Token String Нет* Подпись запроса * передается или Token (если отключена валидация подписи), или набор параметров DigestValue, SignatureValue, X509SerialNumber (при включенной валидации подписи) Пример запроса: { "TerminalKey": "TerminalKeyE2C", "CustomerKey": "TestCustomer1", "IP": "192.168.40.74", "DigestValue": "qfeohMmrsEvr4QPB8CeZETb+W6VDEGnMrf+oVjvSaMU=", "SignatureValue": "rNTloWBbTsid1n9B1ANZ9/VasWJyg6jfiMeI12ERBSlOnzy6YFqMaa5nRb9ZrK9wbKimIBD70v8j8eP/tKn7/g==", "X509SerialNumber": "2613832945" } «Протокол A2C_V2 Мультирасчеты» 40 Формат ответа: Массив JSON Ответ Таблица 4.5.2. Параметры ответа Наименование Тип Обязательность Описание Pan String Да Номер карты 411111******1111 CardId String Да Идентификатор карты в системе Банка Status String Да Статус карты: A – активная, D – не активная, E – срок действия карты истек RebillId Number Да Идентификатор рекуррентного платежа ExpDate String Нет Срок действия карты Пример ответа: [ { "CardId": "894952", "Pan": "532130******5598", "Status": "A", "RebillId": "130802844", "CardType": 0, "ExpDate": "0423" }, { "CardId": "894955", "Pan": "518223******0036", "Status": "A", "RebillId": "13816414", "CardType": 0, "ExpDate": "1122" } ] «Протокол A2C_V2 Мультирасчеты» 41 4.6. Метод AddCard Метод для схем PCI DSS \ Без PCI DSS Описание: Добавляет привязанную карту к покупателю. В случае успешной привязки переадресует клиента на Success Add Card URL в противном случае на Fail Add Card URL. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/e2c/v2/AddCard/ Боевой URL: https://securepay.tinkoff.ru/e2c/v2/AddCard/ *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 4.6.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком CustomerKey String Да Идентификатор покупателя в системе Площадки CheckType String Нет Если CheckType не передается, автоматически проставляется значение NO. Возможные значения: 1. NO *– сохранить карту без проверок. RebillID для рекуррентных платежей не возвращается; 2. HOLD – при сохранении сделать списание на 0 руб.** RebillID возвращается для терминалов без поддержки 3DS. 3. 3DS – при сохранении карты выполнить проверку 3DS и выполнить списание на 0 р. В этом случае RebillID будет только для 3DS карт. Карты, не поддерживающие 3DS, привязаны не будут 4. 3DSHOLD – при привязке карты выполняем проверку, поддерживает карта 3DS или нет. Выполняется списание на 0р. PayForm String Нет Название шаблона формы привязки «Протокол A2C_V2 Мультирасчеты» 42 ResidentState Boolean Нет Признак резидентности добавляемой карты: Возможные значения: • true - Карта РФ, • false - Карта не РФ, • null - Не специфицируется (универсальная карта) DigestValue String Да*** Значение хеша в Base64 SignatureValue String Да*** Значение подписи в Base64 X509SerialNumber String Да*** Серийный номер сертификата Token String Нет*** Подпись запроса * Если передан параметр CheckType=NO, на форме привязки будет только поле для заполнения номера карты. В этом случае в нотификации о привязке карты параметр ExpDate будет пустым. ** при CheckType = 3DS, для успешной работы метода AttachCard необходимо передать срок действия карты в CardData (параметр ExpDate). *** передается или Token (если отключена валидация подписи), или набор параметров DigestValue, SignatureValue, X509SerialNumber (при включенной валидации подписи)/ Пример запроса: { "TerminalKey": "TerminalKeyE2C", "CustomerKey": "TestCustomer10", "IP": "192.168.40.74", "CheckType": "NO", "DigestValue": "qfeohMmrsEvr4QPB8CeZETb+W6VDEGnMrf+oVjvSaMU=", "SignatureValue": "rNTloWBbTsid1n9B1ANZ9/VasWJyg6jfiMeI12ERBSlOnzy6YFqMaa5nRb9ZrK9wbKimIBD70v8j8eP/tKn7/g==", "X509SerialNumber": "2613832945" } Формат ответа: JSON Ответ Таблица 4.6.2. Параметры ответа Наименование Тип Обязательность Описание PaymentId Number Да Уникальный идентификатор транзакции в системе Банка PaymentURL String Да Идентификатор страницы выплаты. «Протокол A2C_V2 Мультирасчеты» 43 TerminalKey String Да Платежный ключ, выдается Площадке при заведении терминала CustomerKey String Да Идентификатор покупателя в системе Площадки RequestKey String Да Идентификатор запроса на привязку карты Success bool Да Успешность операции ErrorCode String Да Код ошибки, «0» в случае успеха Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "Success": "true", "ErrorCode": "0", "TerminalKey": "TerminalKeyE2C", "CustomerKey": "Customer1", "PaymentURL": "https://securepayments.tinkoff.ru/addcard/02a94edd-046c-441b-90b6-cda01f337401", "RequestKey": "8de92934-26c9-474c-a4ce424f2021d24d" } «Протокол A2C_V2 Мультирасчеты» 44 4.7. Метод AttachCard Метод для схемы PCI DSS Описание: Добавляет привязанную карту к покупателю. Метод необходимо вызывать после AddCard. В случае успешной привязки переадресует клиента на Success Add Card URL в противном случае на Fail Add Card URL. Для прохождения 3DS второй версии перед вызовом метода должен быть вызван /v2/check3dsVersion и выполнен 3DS Method, который является обязательным при прохождении 3DS по протоколу версии 2.0. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/e2c/v2/AttachCard/ Боевой URL: https://securepay.tinkoff.ru/e2c/v2/AttachCard/ *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 4.7.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Платежный ключ, выдается Площадке при заведении терминала RequestKey String Да Идентификатор запроса на привязку карты CardData String Да Данные карты привязки* DATA Object Нет*** Ключ = значение дополнительных параметров через “|”, например, Email = a@test.ru|Phone = +71234567890. Если ключи или значения содержат в себе спец символы, то получившееся значение должно быть закодировано функцией urlencode. Максимальная длина для каждого передаваемого параметра: Ключ – 20 знаков, Значение – 100 знаков. Максимальное количество пар «ключзначение» не может превышать 20 DigestValue String Да** Значение хеша в Base64 SignatureValue String Да** Значение подписи в Base64 X509SerialNumber String Да** Серийный номер сертификата «Протокол A2C_V2 Мультирасчеты» 45 Token String Нет** Подпись запроса * алгоритм шифрования описан на стр. 10 документации. ** передается или Token (если отключена валидация подписи), или набор параметров DigestValue, SignatureValue, X509SerialNumber (при включенной валидации подписи) *** для 3DS второй версии в параметрах DATA необходимо передавать следующие параметры Таблица
4.7.2. Параметры объекта DATA для 3DS v2 Наименование Тип Обязательность Описание threeDSCompInd String Да Идентификатор выполнения 3DS Method 'Y' - метод выполнялся 'N' - метод не выполнялся javaEnabled String Нет Поддерживает ли браузер пользователя Java: true/false. По умолчанию значение "false" language String Да Язык браузера по формату IETF BCP47 Рекомендация по получению значения в браузере (из глобального объекта navigator): navigator.language colorDepth String Нет Глубина цвета в битах Допустимые значения: 1/4/8/15/16/24/32/48 Рекомендация по получению значения в браузере (из глобального объекта screen): screen.colorDepth По умолчанию значение будет 48 timezone String Да Time-zone пользователя в минутах. Пример для UTC +5 hours: "timezone": "-300" Рекомендация по получению значения в браузере: вызов метода getTimezoneOffset() screen_height String Да Высота экрана в пикселях. Рекомендация по получению значения в браузере (из глобального объекта screen): screen.height screen_width String Да Ширина экрана в пикселях Рекомендация по получению значения в браузере (из глобального объекта screen): screen.width «Протокол A2C_V2 Мультирасчеты» 46 cresCallbackUrl String Да URL который будет использоваться для получения результата (CRES) после завершения Challenge Flow (аутентификаци с дополнительным переходом на страницу ACS) Для 3DS Version 2 в HttpHeaders запроса обязательно должны присутствовать заголовки: “User-Agent” и “Accept”. Пример запроса для 3DS v1: { "TerminalKey": "TerminalKeyE2C", "CardData": "b3tSlUYwsf3Erdv5ReB7WpWK3/NBWLIwDiSLjQG0cBxA0Mgs7ALd7edi0RbVlORsyGZEUJSlRynQ9zLMyHYzWP3z2sQYGAvzOqufoVPe2AozhW3pZV+dN5s7oGcpXd39NDC0Ma/Zw6oa3dJR0Zh8QYjv/sG0zUllMjXl5aHgTpxk37q6OxUakxuG7euhvSN71JqxHsNEuoJELAqLq7U+3tuh9AjTuiBpmEH99maK9e7gnVXgZd1Nk8vachs97xj9cL/023qYMk7CMjldBfG4VOsYVq cHsKfbbJJ8CZXIJgmXhCYns1hmRD/kf3OhEZr038LghC7Iio0yxHYMhZyJoQ==", "RequestKey": "3206b55f-83a2-486f-9da0-693dfd2af9b3", "DigestValue": "qfeohMmrsEvr4QPB8CeZETb+W6VDEGnMrf+oVjvSaMU=", "SignatureValue": "rNTloWBbTsid1n9B1ANZ9/VasWJyg6jfiMeI12ERBSlOnzy6YFqMaa5nRb9ZrK9wbKimIBD70v8j8eP/tKn7/g==", "X509SerialNumber": "2613832945" } Пример запроса для 3DS v2: { "RequestKey": "416a5d8e-54da-49bc-b5ae-22e4755c0609", "TerminalKey": "TerminalKeyE2C", "CardData": "ku8wgdsKR+34u9dlW7JMdES17zL+U4EzB05XW/ar8ZJhtfxlj3tbzYBFXlT77OojF93Ye7vYB0aIUkBTAGiPQcpyQWQ5w p4l3vdcCMXobBbO4Vprb8TpvPXG3BTeBv/CoxZxMh5JO8oBXGxeGySS4ARc4QDbEJxX5QzdybxyaZ3lxLFuz/jEqpQ24Rx uFs0iwcQYP7TfwoBFnHGj8DP/+hWyLdPVPLyUrHvPUz+ot1QrcEFvnu/xG/l/M8rrn/Rqcrr7dVI2GPASlSzn+FJootn/25Lkr JF8guAM33nZe8SIsapZKi31rA8KdykmF2KSON1zt4VqWkqdizXh1FpyOw==", "Token": "{{token}}", "DATA": { "language": "ru-RU", "screen_height": "1024", "screen_width": "1024", "timezone": "180", "cresCallbackUrl": "http://test.url" } } «Протокол A2C_V2 Мультирасчеты» 47 Формат ответа: JSON Ответ Таблица 4.7.3. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Платежный ключ, выдается Площадке при заведении терминала CustomerKey String Да Идентификатор покупателя в системе Площадки RequestKey String Да Идентификатор запроса на привязку карты RebillId String Нет Идентификатор рекуррентного платежа CardId String Да Идентификатор карты в системе Банка Status String Да Статус привязки карты Success Bool Да Успешность операции ErrorCode String Да Код ошибки, «0» - если успешно Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "Success": true, "ErrorCode": "0", "TerminalKey": "TerminalKeyE2C", "Status": "3DS_CHECKING", "CustomerKey": "testRegress5", "RequestKey": "8de92934-26c9-474c-a4ce-424f2021d24d", "CardId": "5555" } Для 3DS v1 ! Если в ответе метода AttachCard возвращается статус 3DS_CHECKING, мерчанту необходимо сформировать запрос на URL ACS банка, выпустившего карту (в ответе параметр ACSUrl). URL: ACSUrl (возвращается в ответе метода AttachCard) «Протокол A2C_V2 Мультирасчеты» 48 Метод: POST Формат запроса: x-www-form-urlencoded Таблица 4.7.4 Параметры запроса на ACSUrl Наименование Тип Обязательность Описание MD String Да Уникальный идентификатор транзакции в системе Банка (возвращается в ответе на AttachCard) PaReq String Да Результат аутентификации 3-D Secure (возвращается в ответе на AttachCard) TermUrl String Да Адрес перенаправления после аутентификации 3-D Secure (URL обработчик на стороне мерчанта, принимающий результаты прохождения 3-D Secure) «Протокол A2C_V2 Мультирасчеты» 49 Пример запроса на ACS: Формат ответа: JSON Таблица 4.7.5 Параметры ответа на запрос на ACSUrl Наименование Тип Обязательность Описание MD String Да Уникальный идентификатор транзакции в системе Банка (возвращается в ответе на AttachCard) PaRes String Да Шифрованная строка, содержащая результаты 3D Secure аутентификации (возвращается в ответе от ACS) FallbackOnTdsV1 Boolean Нет В случае невозможности прохождения аутентификации по 3DS v2, делается принудительный Fallback на 3DS v1 и данный атрибут выставляется в true, в противном случае не передается в ответе Пример ответа для статуса 3DS_CHECKING (3DS v2): { "Success": true, "ErrorCode": "0", "TerminalKey": "TerminalKeyE2C", "RequestKey": "57d7cce7-0d55-4081-9c51-68654f273284", "Status": "3DS_CHECKING", "ACSUrl": "https://acs.vendorcert.mirconnect.ru/mdpayacs/creq", "TdsServerTransId": "d7171a06-7159-4bdd-891a-a560fe9938d2", "AcsTransId": "e176d5d3-2f19-40f5-8234-46d3464e0b08" } Для 3DS v2 ! Если в ответе метода AttachCard возвращается статус 3DS_CHECKING, мерчанту необходимо сформировать запрос на URL ACS банка, выпустившего карту (в ответе параметр ACSUrl). URL: ACSUrl (возвращается в ответе метода AttachCard) Метод: POST Формат запроса: x-www-form-urlencoded «Протокол A2C_V2 Мультирасчеты» 50 Таблица 4.7.6. Параметры запроса creq Наименование Тип Обязательность Описание creq String Да JSON с параметрами threeDSServerTransID, acsTransID, challengeWindowSize, messageType, messageVersion закодированный в формат base-64 JSON creq Наименование Тип Обязательность Описание threeDSServerTransID String Да Идентификатор транзакции из ответа метода AttachCard acsTransID String Да Идентификатор транзакции, присвоенный ACS, полученный в ответе на AttachCard challengeWindowSize String Да Размер экрана, на котором открыта страница ACS. Допустимые значения: = 250 x 400 = 390 x 400 = 500 x 600 = 600 x 400 = Full screen messageType String Да Передается фиксированное значение «CReq» messageVersion String Да Версия 3DS, полученная из ответа метода Check3dsVersion Пример запроса на ACS: Creq, декодированный из base64: { "acsTransID": "e176d5d3-2f19-40f5-8234-46d3464e0b08", "challengeWindowSize": "03", "messageType": "CReq", "messageVersion": "2.1.0", «Протокол A2C_V2 Мультирасчеты» 51 "threeDSServerTransID": "d7171a06-7159-4bdd-891a-a560fe9938d2" } Формат ответа: Cres, полученный по NotificationUrl из запроса AttachCard Таблица 4.7.7. Параметры ответа cres Наименование Тип Обязательность Описание cres String Да JSON с параметрами threeDSServerTransID, acsTransID, messageType, messageVersion, transStatus закодированный в формат base-64 JSON cres Наименование Тип Обязательность Описание threeDSServerTransID String Да Идентификатор транзакции из ответа метода Check3dsVersion acsTransID String Да Идентификатор транзакции, присвоенный ACS messageType String Да Передается фиксированное значение «CRes» messageVersion String Да Версия 3DS transStatus String Да Результат выполнения Challenge flow, возможны 2 значения: ‘Y’/’N’. ‘Y’ – аутентификация выполнена успешна ‘N’ – аутентификация не пройдена, пользователь отказался или ввел неверные данные При успешном результате прохождения 3-D Secure подтверждается инициированный платеж с помощью методов Submit3DSAuthorization или Submit3DSAuthorizationV2, в зависимости от версии 3DS. «Протокол A2C_V2 Мультирасчеты» 52 4.8. Метод Check3dsVersion Метод для схемы PCI DSS Описание: Проверяет поддерживаемую версию 3DS протокола по карточным данным из входящих параметров. Данный метод должен вызываться для платежей с Route=ACQ, но не для ApplePay. При определении второй версии, возможно в ответе получение данных для прохождения дополнительного метода “3DS Method”, который позволяет эмитенту собрать данные браузера пользователя – это может быть полезно при принятии решения в пользу Frictionless Flow (аутентификация клиента без редиректа на страницу ACS). Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/Check3dsVersion/ Боевой URL: https://securepay.tinkoff.ru/v2/Check3dsVersion/ *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 4.8.1 Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком PaymentId String Да Уникальный идентификатор транзакции в системе Банка CardData String Да Данные карты* Token String Да Подпись запроса * Объект CardData описан в разделе 2.4 Метод Init Пример запроса: { "TerminalKey": "TerminalKeyE2C", "PaymentId": "777", "CardData": "b3tSlUYwsf3Erdv5ReB7WpWK3/NBWLIwDiSLjQG0cBxA0Mgs7ALd7edi0RbVlORsyGZEUJSlRynQ9zLMyHYzWP3z2sQYG AvzOqufoVPe2AozhW3pZV+dN5s7oGcpXd39NDC0Ma/Zw6oa3dJR0Zh8QYjv/sG0zUllMjXl5aHgTpxk37q6OxUakxuG7euh vSN71JqxHsNEuoJELAqLq7U+3tuh9AjTuiBpmEH99maK9e7gnVXgZd1Nk8vachs97xj9cL/023qYMk7CMjldBfG4VOsYVq cHsKfbbJJ8CZXIJgmXhCY ns1hmRD/kf3OhEZr038LghC7Iio0yxHYMhZyJoQ==", "Token": "daab60d01863965284f1db558ff37534715afd0f1e726ca9611b1f90720ad03b", } «Протокол A2C_V2 Мультирасчеты» 53 Ответ Таблица 4.8.2 Параметры ответа Наименование Тип Обязательность Описание Version String Да Версия протокола 3DS. Пример: “1.0.0” – первая версия “2.1.0” – вторая версия TdsServerTransID String Нет Уникальный идентификатор транзакции, генерируемый 3DS-Server, обязательный параметр для 3DS второй версии. Пример: 17d3791b-5cfa-4318-bc233d949e8c4b7e ThreeDSMethodURL String Нет Дополнительный параметр для 3DS второй версии, который позволяет пройти этап по сбору данных браузера ACS-ом PaymentSystem String Да Платежная система карты Success bool Да Успешность операции ErrorCode String Да Код ошибки, «0» - если успешно Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "Success": true, "ErrorCode": "0", "Message": "OK", "Version": "2.1.0", "TdsServerTransID": "17d3791b-5cfa-4318-bc23-3d949e8c4b7e", "ThreeDSMethodURL": “https://acs.vendorcert.mirconnect.ru/ds/6300” "PaymentSystem": "mir" } «Протокол A2C_V2 Мультирасчеты» 54 Процесс прохождения этапа “3DS Method”: Если в ответе метода был получен параметр ThreeDSMethodURL, то необходимо отправить запрос на стороне браузера по полученному ThreeDSMethodURL. для сбора информации ACS-ом о девайсе пользователя. Отправка запроса 3DS Method в браузере должна происходить в скрытом frame. Тайм-аут ожидания ответа выполнения запроса 3DS Method перед выполнением запроса FinishAuthorize должен быть 10 секунд. Формат запроса: x-www-form-urlencoded Таблица 4.8.3 Описание параметров запроса 3DS Method Название параметра Тип Обязательность Описание *threeDSMethodData String Y JSON с параметрами threeDSMethodNotificationURL, threeDSServerTransID, закодированный в формат base-64 * Запрещено использовать padding threeDSMethodNotificationURL, threeDSServerTransID Название параметра Тип Обязательность Описание threeDSMethodNotificationURL String Y Обратный адрес, на который будет отправлен запрос после прохождения threeDSMethod threeDSServerTransID String Y Идентификатор транзакции из ответа метода Пример запроса на 3DS Method Url: Пример декодированного значения threeDSMethodData { "threeDSServerTransID": "56e712a5-190a-4588-91bc-e08626e77c44", "threeDSMethodNotificationURL":https://rest-api-test.tinkoff.ru/v2/Complete3DSMethodv2 } «Протокол A2C_V2 Мультирасчеты» 55 4.9. Метод Submit3DSAuthorization Метод для схем PCI DSS Описание: Осуществляет проверку результатов прохождения 3-D Secure и при успешном результате прохождения 3-D Secure подтверждает инициированный платеж. При использовании одностадийной оплаты осуществляет списание денежных средств с карты покупателя. При двухстадийной оплате осуществляет блокировку указанной суммы на карте покупателя. Запрос Метод: POST Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/Submit3DSAuthorization Боевой URL: https://securepay.tinkoff.ru/v2/Submit3DSAuthorization *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Формат запроса: x-www-form-urlencoded После получения на TermUrl мерчанта ответа ACS с результатами прохождения 3-D Secure необходимо сформировать запрос к методу Submit3DSAuthorization со следующими параметрами: Таблица 4.10.1. Параметры запроса Наименование Тип Обязательность Описание MD String Да Уникальный идентификатор транзакции в системе Банка (возвращается в ответе от ACS) PaRes String Да Шифрованная строка, содержащая результаты 3-D Secure аутентификации (возвращается в ответе от ACS) PaymentId String Да Уникальный идентификатор транзакции в системе Банка Token String Да Подпись запроса TerminalKey String Да Идентификатор терминала, выдается Площадке Банком Пример запроса: «Протокол A2C_V2 Мультирасчеты» 56 Ответ Формат ответа: JSON Таблица 4.10.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком OrderId String Да Номер заказа в системе Площадки Success bool Да Успешность операции (true/false) Status String Да Статус транзакции PaymentId String Да Уникальный идентификатор транзакции в системе Банка ErrorCode String Да Код ошибки, «0» - если успешно Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Статус платежа: • при успешном сценарии и одностадийном проведении платежа: CONFIRMED • при успешном сценарии и двухстадийном проведении платежа: AUTHORIZED • при неуспешном: REJECTED Пример ответа: { "Success": true, "ErrorCode": "0", "TerminalKey": "TerminalKeyE2C", "Status": "CONFIRMED", "PaymentId": "10063", "OrderId": "21050", "Amount": 100000 } «Протокол A2C_V2 Мультирасчеты» 57 4.10. Метод Submit3DSAuthorizationV2 Метод для схем PCI DSS Описание: Осуществляет проверку результатов прохождения 3-D Secure v2 и при успешном результате прохождения 3-D Secure v2 подтверждает инициированный платеж. При использовании одностадийной оплаты осуществляет списание денежных средств с карты покупателя. При двухстадийной оплате осуществляет блокировку указанной суммы на карте покупателя. Запрос Метод: POST Тестовый URL*: https://rest-api-test.tinkoff.ru/v2/Submit3DSAuthorizationV2 Боевой URL: https://securepay.tinkoff.ru/v2/Submit3DSAuthorizationV2 *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Формат запроса: x-www-form-urlencoded После получения на NotificationUrl мерчанта ответа ACS(Cres) с результатами прохождения 3-D Secure v2 необходимо сформировать запрос к методу Submit3DSAuthorizationV2 со следующими параметрами: Таблица 4.11.1. Параметры запроса Наименование Тип Обязательность Описание PaymentId String Да Уникальный идентификатор транзакции в системе Банка Token String Да Подпись запроса TerminalKey String Да Идентификатор терминала, выдается Площадке Банком Ответ Формат ответа: JSON Таблица 4.11.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком OrderId String Да Номер заказа в системе Площадки Success bool Да Успешность операции (true/false) Status String Да Статус транзакции PaymentId String Да Уникальный идентификатор транзакции в системе Банка «Протокол A2C_V2 Мультирасчеты» 58 ErrorCode String Да Код ошибки, «0» - если успешно Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Статус платежа: • при успешном сценарии и одностадийном проведении платежа: CONFIRMED • при успешном сценарии и двухстадийном проведении платежа: AUTHORIZED • при неуспешном: REJECTED Пример ответа: { "Success": true, "ErrorCode": "0", "TerminalKey": "TerminalKeyE2C", "Status": "CONFIRMED", "PaymentId":”10063”, "OrderId": "21050", "Amount":100000 } «Протокол A2C_V2 Мультирасчеты» 59 4.11. Метод RemoveCard Метод для схем PCI DSS \ Без PCI DSS Описание: Удаляет привязанную карту у покупателя. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/e2c/v2/RemoveCard/ Боевой URL: https://securepay.tinkoff.ru/e2c/v2/RemoveCard/ *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 4.12.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком CardId Number Да Идентификатор карты в системе Банка CustomerKey String Да Идентификатор покупателя в системе Площадки IP String Нет IP-адрес запроса DigestValue String Да* Значение хеша в Base64 SignatureValue String Да* Значение подписи в Base64 X509SerialNumber String Да* Серийный номер сертификата Token String Нет* Подпись запроса * передается или Token (если отключена валидация подписи), или набор параметров DigestValue, SignatureValue, X509SerialNumber (при включенной валидации подписи) Пример запроса: { "TerminalKey": "TerminalKeyE2C", "CustomerKey": "TestCustomer10", "CardId": 1234, "IP": "192.168.40.74", "DigestValue": "qfeohMmrsEvr4QPB8CeZETb+W6VDEGnMrf+oVjvSaMU=", «Протокол A2C_V2 Мультирасчеты» 60 "SignatureValue": "rNTloWBbTsid1n9B1ANZ9/VasWJyg6jfiMeI12ERBSlOnzy6YFqMaa5nRb9ZrK9wbKimIBD70v8j8eP/tKn7/g==", "X509SerialNumber": "2613832945" } Ответ Формат ответа: JSON Таблица 4.12.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Платежный ключ, выдается Площадке при заведении терминала CardId Number Да Идентификатор карты в системе Банка CustomerKey String Да Идентификатор покупателя в системе Площадки Status String Да Статус карты: D – удалена. Success bool Да Успешность операции ErrorCode String Да Код ошибки, «0» в случае успеха Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа: { "CardId": "4750", "Status": "D", "Success": true, "ErrorCode": "0", "TerminalKey": "TerminalKeyE2C", "CustomerKey": "TestCustomer10" } «Протокол A2C_V2 Мультирасчеты» 61 5. Нотификации о привязке карты Нотификации о привязке – это уведомления магазину о статусе выполнения метода привязки карты AddCard. Описание: Т-Банк может уведомлять магазин об успешных/ошибочных привязках карты. Для этого необходимо написать своему менеджеру, либо на eacq_accounts@tbank.ru с указанием E2C- терминала и URL, на который будут отправляться POST-запросы со статусами привязки. После успешного выполнения метода AddCard на адрес Notification URL высылается уведомление POSTзапросом с информацией о привязке карты. При использовании формы привязки карты на стороне банка при обращении к методу AttachCard нотификация отправляется на сайт Продавца на адрес Notification URL синхронно и ожидает ответа в течение 10 секунд. После получения ответа или неполучения его за заданное время сервис переадресует Покупателя на Success AddCard URL или Fail AddCard URL в зависимости от результата привязки карты. В случае успешной обработки нотификации Продавец должен вернуть ответ с телом сообщения: OK (без тегов и заглавными английскими буквами). Если тело сообщения отлично от OK, любая нотификация считается неуспешной, и сервис будет повторно отправлять нотификацию раз в час в течение 24 часов. Если нотификация за это время так и не доставлена, она складывается в дамп. Если в 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.49.24.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 Метод: POST Таблица 5.1 Параметры нотификации Наименование Тип Описание TerminalKey String Идентификатор терминала, выдается Площадке Банком CustomerKey String Идентификатор покупателя в системе Площадки «Протокол A2C_V2 Мультирасчеты» 62 RequestKey String Идентификатор запроса на привязку карты Success bool Успешность запроса Status String Статус привязки PaymentId String Уникальный идентификатор транзакции в системе Банка ErrorCode String Код ошибки, «0» - если успешно CardId Number Идентификатор привязанной карты Pan String Маскированный номер карты ExpDate String Срок действия карты. Возвращается пустым для привязок с CheckType=NO NotificationType String Тип нотификации, всегда «LINKCARD» RebillId String Идентификатор рекуррентного платежа Token String Подпись запроса. Формируется по такому же принципу, как и в случае запросов в банк Таблица 5.2 Статусы привязок, по которым приходят http(s)-нотификации Status Описание COMPLETED Карта успешно привязана REJECTED Привязка карты неуспешна Пример http(s)-нотификации: {"TerminalKey": "TerminalKeyE2C", "CustomerKey": "5b718a19-2abe-1147-a7d9-b43b198ceee3", "RequestKey": "acdad9d1-1847-4bdc-b743-db86d75253f8", "Success": true, "Status": "COMPLETED", "PaymentId": "700000198023", "ErrorCode": "0", "CardId": 70000000707, "Pan": "532130******1359", "ExpDate": "1122", "NotificationType": "LINKCARD", "RebillId": "700000004090", "Token": "f2fdd7fec8225872590e1558b7ea258c75df8f300d808006c41ab540dd7514d9" } «Протокол A2C_V2 Мультирасчеты» 63 Ответ на HTTP(s)-нотификацию: В случае успешной обработки нотификации Продавцу необходимо вернуть ответ HTTP CODE = 200 и с телом сообщения: OK (без тегов и заглавными английскими буквами). PHP. Пример ответа на http(s)-нотификацию Java. Пример ответа на http(s)-нотификацию @POST @Path("/ok") public Response NotifyResponse() { return Response.status(200).entity("OK").build(); } Если ответ «OK» не получен, нотификация считается неуспешной, и сервис будет повторно отправлять данную нотификацию раз в час в течение 24 часов. Если нотификация за это время не доставлена, она будет сложена в архив. «Протокол A2C_V2 Мультирасчеты» 64 6. Коды ошибок, передаваемые на FailURL Таблица 6.1. Ошибки при выплате на карту CODE MESSAGE DETAILS (опционально) Методы выплат, в которых возможно получение ошибки 0 None Init; Payment 1 Параметры не сопоставлены Init; Payment 2 Отсутствуют обязательные параметры Init; Payment 3 Внутренняя ошибка системы интернет эквайринга Init; Payment 4 Не получится изменить статус платежа Init; Payment 5 Обратитесь в поддержку, чтобы уточнить детали Init; Payment 9 Переадресовываемый url пуст Init; Payment 11 Невозможно выполнить платеж Init; Payment 17 Неверные введенные данные Init; Payment 21 Внутренняя ошибка вызова сервиса ACQAPI Init; Payment 53 Обратитесь к продавцу Init; Payment 76 Операция по иностранной карте недоступна Операция по иностранной карте недоступна. Воспользуйтесь картой российского банка Init 78 Выплата на иностранную карту недоступна Выплата на иностранную карту недоступна. Воспользуйтесь картой российского банка Init 100 Попробуйте еще раз. Если ошибка повторится — обратитесь в поддержку; Init 102 Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой. Заказ не может быть оплачен, обратитесь службу поддержки Init; Payment 102 Превышен лимит на сумму выплат в месяц Для решения вопроса обратитесь к персональному менеджеру Payment «Протокол A2C_V2 Мультирасчеты» 65 107 Неверно введен CardId. Проверьте, что такая карта была ранее привязана Init 201 Поле PaymentId не должно быть пустым Payment 202 Терминал заблокирован Init; Payment 203 Параметры запроса не должны быть пустыми Init; Payment 204 Неверный токен. Проверьте пару TerminalKey/SecretKey Init; Payment 205 Неверный токен. Проверьте пару TerminalKey/SecretKey Указанный терминал не найден Init; Payment 207 Параметр DATA превышает максимально допустимый размер Init 208 Наименование ключа из параметра DATA превышает максимально допустимый размер Init 209 Значение ключа из параметра DATA превышает максимально допустимый размер Init 210 Размер поля TerminalKey должен быть от {min} до {max} Init; Payment 212 Размер поля OrderId должен быть от {min} до {max} Init 216 Размер поля CustomerKey должен быть от {min} до {max} Init 217 Поле PaymentId числовое значение должно укладываться в формат (<{integer} цифр>.<{fraction} цифр>) Payment 218 Значение PAN не является числовым Init 219 Неверный срок действия карты Init 221 Значение CVV не является числовым Init 222 Поле CardId числовое значение должно укладываться в формат (<{integer} цифр>.<{fraction} цифр>) Init «Протокол A2C_V2 Мультирасчеты» 66 233 Размер поля CardId должен быть от {min} до {max} Init 234 Размер поля PAN должен быть от {min} до {max} Init 236 Размер поля Token должен быть от {min} до {max} Init; Payment 237 Размер поля PaymentId должен быть от {min} до {max} Init 238 Размер поля ExpDate должен быть от {min} до {max} Init 239 Размер поля CVV должен быть от {min} до {max} Init 240 Поле Amount числовое значение должно укладываться в формат (<{integer} цифр>.<{fraction} цифр>) Init 243 Ошибка шифрования карточных данных Init; Payment 244 Ошибка сопоставления карточных данных Init 248 Параметр CVV не сопоставлен Init 250 Параметр DATA не сопоставлен Init 251 Неверная сумма. Сумма должна быть больше или равна {value} копеек Init 252 Срок действия карты истек Init 255 Платеж не найден Payment 257 Некорректное значение признака последней выплаты. Используйте значения true или false Некорректное значение признака последней выплаты. Используйте значения true или false Init 260 Максимальная длина номера телефона 30 символов Init 316 Максимальная длина номера телефона 19 символов Init 322 Передана некорректная подпись Init; Payment 325 Транзакция не найдена Payment 326 Неверный amount Init «Протокол A2C_V2 Мультирасчеты» 67 328 Должны присутствовать данные для списания и данные для пополнения Init 403 Превышен лимит на количество пополнений в месяц Payment 404 Превышен лимит на сумму пополнения через бесконтактные сервисы Payment 405 Превышен лимит на сумму пополнения по виртуальной карте Payment 406 Превышен лимит на сумму пополнения в месяц через мобильное приложение Payment 501 Терминал не найден Init; Payment 503 CustomerKey не найден Init 508 Неверный номер карты Init 515 Внутренняя ошибка Init; Payment 600 Интернет-магазин отклонил операцию по данной карте. Обратитесь в интернет-магазин для выяснения причин отказа в платеже Payment 619 Отсутствуют обязательные данные отправителя Не переданы персональные данные отправителя для операции emoney2card более 15000 руб Init 620 Проверьте сумму — она не может быть равна 0 Сумма операции не может быть равна 0 Init 623 Выплата по этому заказу уже прошла Запрещено проводить платеж с OrderId для которого уже есть успешный платеж Init; Payment 632 Превышен лимит на сумму операции Лимит на сумму пополнения emoney2card. См. лимиты Payment 633 Превышен лимит на количество переводов в день по иностранным картам Лимит на кол-во пополнений emoney2card для карт эмитированных нерезидентами РФ за 1 отчетный день Payment 634 Превышен лимит на сумму переводов по номеру карты в месяц Лимит на сумму пополнения emoney2card по номеру Payment «Протокол A2C_V2 Мультирасчеты» 68 карты одного получателя в отчетный месяц 637 Не хватает данных получателя или отправителя для выплаты на иностранную карту. Проверьте заполнение Отсутствуют персональные данные получателя/отправителя при переводе на иностранную карту Payment 642 Проверьте номер карты Карта не прошла проверку по алгоритму Луна Payment 648 Магазин заблокирован или еще не активирован. Обратитесь в поддержку, чтобы уточнить детали Init; Payment 650 Сообщите покупателю, чтобы попробовал оплатить еще раз. Если ошибка повторится — обратитесь в поддержку Payment 651 Не получилось совершить платеж. Свяжитесь с поддержкой Передаваемый Request_Id не найден Payment 903 Повторите попытку позже Payment 914 Платеж не найден Payment 999 Попробуйте повторить попытку позже Init; Payment 1001 Свяжитесь с банком Свяжитесь с банком, выпустившим карту, чтобы провести платеж Init; Payment 1003 Неверный магазин Неверный номер магазина. Идентификатор магазина недействителен Init; Payment 1004 Банк, который выпустил карту, считает платеж подозрительным Payment 1005 Платеж отклонен банком, выпустившим карту Платеж отклонен банком, выпустившим карту Payment 1006 Платеж не прошел Свяжитесь с банком, выпустившим карту, чтобы провести платеж Payment 1007 Банк, который выпустил карту, считает платеж подозрительным Payment 1008 Банк, который выпустил карту, отклонил платеж Payment «Протокол A2C_V2 Мультирасчеты» 69 1012 Банк, который выпустил карту, отклонил платеж Payment 1013 Банк, который выпустил карту, отклонил платеж — сумма превышает лимит по карте Сумма превышает лимит платежа вашего банка. Воспользуйтесь другой картой или обратитесь в банк Payment 1014 Карта недействительна Неправильные реквизиты — проверьте их или воспользуйтесь другой картой Payment 1015 Неверный номер карты Неверный номер карты Payment 1017 Попробуйте снова или свяжитесь с банком, выпустившим карту Попробуйте снова или свяжитесь с банком, выпустившим карту Payment 1018 Неизвестный статус платежа Payment 1019 Банк, который выпустил карту, отклонил платеж — сумма превышает лимит по карте Payment 1030 Повторите попытку позже Не получилось оплатить. Попробуйте еще раз Payment 1033 Истек срок действия карты Payment 1034 Попробуйте повторить попытку позже Не получилось оплатить. Воспользуйтесь другой картой или обратитесь в банк, выпустивший карту Payment 1038 Превышено количество попыток ввода ПИН-кода — попробуйте снова или обратитесь в банк, выпустивший карту Payment 1039 Платеж отклонен — счет не найден Payment 1041 Карта утеряна Карта утеряна. Свяжитесь с банком, выпустившим карту Payment 1043 Банк, который выпустил карту, считает платеж подозрительным Payment 1051 Недостаточно средств на карте Не получилось оплатить. На карте недостаточно средств Payment 1053 Платеж отклонен — счет не найден Payment 1054 Истек срок действия карты Неправильные реквизиты — проверьте их или Payment «Протокол A2C_V2 Мультирасчеты» 70 воспользуйтесь другой картой 1057 Покупатель запретил такие операции для своей карты Payment 1058 Покупатель запретил такие операции для своей карты Payment 1059 Банк, который выпустил карту, считает платеж подозрительным Payment 1061 Покупатель превысил лимит платежей по своей карте Payment 1062 Банк, который выпустил карту, отклонил платеж Payment 1063 Банк, который выпустил карту, считает платеж подозрительным Payment 1064 Проверьте сумму Payment 1078 Данный тип операции не поддерживается картой Payment 1080 Плательщик ввел неверный срок действия карты Payment 1082 Неверный CVV Неправильные реквизиты — проверьте их или воспользуйтесь другой картой Payment 1085 Операция успешна Успех Payment 1086 Платеж отклонен — не получилось подтвердить ПИН-код Payment 1088 Банк, который выпустил карту, отклонил платеж Payment 1089 Попробуйте повторить попытку позже Не получилось оплатить. Попробуйте еще раз или обратитесь в банк, выпустивший карту Payment 1091 Технические работы в банке, который выпустил карту Payment 1092 Банк, который выпустил карту, отклонил платеж Payment 1093 Банк, который выпустил карту, считает платеж подозрительным Payment 1094 Банк, который выпустил карту, считает платеж подозрительным Payment «Протокол A2C_V2 Мультирасчеты» 71 1096 Системная ошибка Системная ошибка Payment 1116 Некорректная сумма выдачи Сумма баланса меньше суммы переданной в операции выдачи Payment 1201 Обратитесь в поддержку, чтобы уточнить детали Payment 1202 Сумма платежа превышает лимит по разовой операции в этом магазине. Обратитесь в поддержку, чтобы уточнить детали Для решения вопроса обратитесь к персональному менеджеру Payment 1203 Сумма платежа превышает лимит по разовой операции или количеству операций в этом магазине. Обратитесь в поддержку, чтобы уточнить детали Для решения вопроса обратитесь к персональному менеджеру Payment 1204 Достигнут лимит по суточному обороту. Чтобы изменить лимит, обратитесь в поддержку Для решения вопроса обратитесь к персональному менеджеру Payment 1205 Магазин не принимает карты этой страны. Обратитесь в поддержку, чтобы уточнить детали Для решения вопроса обратитесь к персональному менеджеру Payment 1207 Сообщите покупателю, чтобы попробовал оплатить еще раз. Если ошибка повторится — обратитесь в поддержку Для решения вопроса обратитесь к персональному менеджеру Payment 1217 Воспользуйтесь другой картой или обратитесь к продавцу Воспользуйтесь другой картой или обратитесь к продавцу Payment 1218 Воспользуйтесь другой картой или обратитесь к продавцу Воспользуйтесь другой картой или обратитесь к продавцу Payment 1237 Получатель находится в базе ЦБ РФ, операция отклонена по 161- ФЗ: t.tb.ru/161FZ Payment 2200 Превышено допустимое количество запросов авторизации операции Payment 9999 Внутренняя ошибка системы Init; Payment 9999 cert expired for terminal with id:... У сертификата на терминале истек срок действия. Для выпуска нового сертификата воспользуйтесь инструкцией Init; Payment «Протокол A2C_V2 Мультирасчеты» 72 по ссылке или обратитесь к персональному менеджеру 926 Сделка уже закрыта Init; Payment 927 Сделка не найдена Init; Payment 251 Неверная сумма. Сумма должна быть больше или равна 100 копеек. Init 935 Идентификатор получателя должен быть передан в параметре PaymentRecipientId для сделки NN Init 936 Идентификатор сделки должен быть передан в параметре DealId для сделки NN Init 937 Тип сделки должен быть передан в параметре CreateDealWithType для сделки NN Init 938 Превышен размер параметра PaymentRecipientId Init 939 Параметр получателя LevelOfConfidence должен быть передан в теле запроса, а не в объекте DATA для сделки NN Init 940 Параметры сделки, отправителя и получателя не могут быть переданы одновременно в DATA и в теле запроса Init 941 Параметры получателя для выплаты на иностранную карту должны быть переданы в объекте recipientAccountInfo, а не в объекте DATA Init 942 Параметры отправителя для выплаты на иностранную карту должны быть переданы в объекте senderAccountInfo, а не в объекте DATA Init 943 Признак финальной выплаты должен быть передан в параметре FinalPayout Init 944 Некорректный формат параметра LevelOfConfidence Init «Протокол A2C_V2 Мультирасчеты» 73 -910 Некорректный идентификатор сделки Init -913 Нельзя провести повторное списание в безопасных сделках типа 1 к N и 1 к 1 Init -914 Указанная сделка открыта на другом терминале Init -915 Некорректное значение параметра StartSpAccumulation Init -916 Параметры StartSpAccumulation и SpAccumulationId не могут быть переданы в одном запросе Init -919 Некорректное значение параметра SpFinalPayout Init -920 Невозможно осуществить выплату. Сделка закрыта Init -921 Невозможно осуществить выплату. Сумма выплаты превышает баланс сделки Init Таблица 6.2. Ошибки при выплате по СБП CODE MESSAGE DETAILS (опционально) Методы выплат, в которых возможно получение ошибки 99 Попробуйте повторить попытку позже Init 102 Попробуйте повторить попытку позже Init 1203 Воспользуйтесь другой картой или обратитесь к продавцу Init 1202 Попробуйте повторить попытку позже Init 1204 Попробуйте повторить попытку позже Init 3004 Способ СБП недоступен для магазина Init 9400 По техническим причинам пополнение невозможно Init «Протокол A2C_V2 Мультирасчеты» 74 9161 Пополнение данного договора невозможно Init 9160 Отсутствуют идентификационные данные Плательщика Init 9191 Сумма пополнения превышает разрешенный лимит Init 9181 Отсутствует успешный авторизационный запрос с переданным идентификатором Init 9151 Минимальная сумма 10 рублей Init 9301 По техническим причинам пополнение невозможно Init 9153 Запрещены пополнения на 0.00 Init 9164 Недостаточный уровень идентификации Init 9144 Невозможно однозначно определить получателя платежа, найдено более одного контакта с данным номером телефона Init 9143 Неверный номер телефона получателя Init 9152 Сумма пополнения больше максимальной Init 9501 %s are not implemented Init 9500 Too many rows Init 9401 Invalid authorities Init 9403 Access is denied to the specified properties Init 9159 Невозможно идентифицировать клиента по переданным реквизитам пополнения Init 926 Сделка уже закрыта Init 927 Сделка не найдена Init «Протокол A2C_V2 Мультирасчеты» 75 251 Неверная сумма. Сумма должна быть больше или равна 100 копеек. Init 935 Идентификатор получателя должен быть передан в параметре PaymentRecipientId для сделки NN Init 936 Идентификатор сделки должен быть передан в параметре DealId для сделки NN Init 937 Тип сделки должен быть передан в параметре CreateDealWithType для сделки NN Init 938 Превышен размер параметра PaymentRecipientId Init 939 Параметр получателя LevelOfConfidence должен быть передан в теле запроса, а не в объекте DATA для сделки NN Init 940 Параметры сделки, отправителя и получателя не могут быть переданы одновременно в DATA и в теле запроса Init 941 Параметры получателя для выплаты на иностранную карту должны быть переданы в объекте recipientAccountInfo, а не в объекте DATA Init 942 Параметры отправителя для выплаты на иностранную карту должны быть переданы в объекте senderAccountInfo, а не в объекте DATA Init 943 Признак финальной выплаты должен быть передан в параметре FinalPayout Init 944 Некорректный формат параметра LevelOfConfidence Init 3004 Способ СБП недоступен для магазина. Init «Протокол A2C_V2 Мультирасчеты» 76 -906 Сумма возврата больше суммы покупки Init -907 Некорректный терминал для выплаты Init -910 Некорректный идентификатор сделки Init -913 Нельзя провести повторное списание в безопасных сделках типа 1 к N и 1 к 1 Init -914 Указанная сделка открыта на другом терминале Init -915 Некорректное значение параметра StartSpAccumulation Init -916 Параметры StartSpAccumulation и SpAccumulationId не могут быть переданы в одном запросе Init -919 Некорректное значение параметра SpFinalPayout Init 9302 При pay пополнении найден дубликат Init -907 Wrong terminal for Payout Init -920 Невозможно осуществить выплату. Сделка закрыта Init -921 Невозможно осуществить выплату. Сумма выплаты превышает баланс сделки Init «Протокол A2C_V2 Мультирасчеты» 77 7.Инструкция по получению сертификата 7.1. Сертификат КриптоПро ГОСТ: Для подписи запросов/ответов возможно пользоваться усиленной неквалифицированной электронной подписи (УНЭП) на алгоритмах ГОСТ и предоставить сертификат ключа проверки данной подписи в Т-Банк. Для получения УНЭП необходимо обратиться к вашем менеджеру по взаимодействию, написав письмо c темой «Получение УНЭП_Наименование организации». В тексте письма указать: • Наименование системы: EACQ (тест/прод). • Цель использования сертификата в системе: подпись методов протокола Интернет-Эквайринга. 7.2. Сертификат RSA: Воспользуйтесь инструкцией, которая доступна по ссылке. «Протокол A2C_V2 Мультирасчеты» 78 8. Методы работы с электронными сертификатами 8.1. Метод AddCertificate Описание: Добавляет новый сертификат для терминала для подписи запросов. Подробнее о том, как получить сертификат см. Инструкция по получению сертификата. Для терминала может быть загружено несколько сертификатов. Проверка подписи происходит с помощью сертификата, серийный номер которого указан в запросе в поле X509SerialNumber. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/e2c/v2/AddCertificate Боевой URL: https://securepay.tinkoff.ru/e2c/v2/AddCertificate *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Content-Type: multipart/form-data
Таблица 9.1.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком. Certificate File Да Сертификат в формате .cer * DigestValue String Да Значение хеша в Base64 SignatureValue String Да Значение подписи в Base64 X509SerialNumber String Да Серийный номер сертификата * Сертификат должен соответствовать требованиям: 1) Файл не поврежден 2) Формат файла ".cer". 3) Загружается именно открытая часть ключа 4) Алгоритм подписи подходит под используемые: • |"1.2.643.7.1.1.3.2" | "Алгоритм цифровой подписи ГОСТ Р 34.10-2012 для ключей длины 256 бит" • |"1.2.643.7.1.1.3.3" | "Алгоритм цифровой подписи ГОСТ Р 34.10-2012 для ключей длины 512 бит" Алгоритм подписи для RSA-сертификата: • sha 256RSA «Протокол A2C_V2 Мультирасчеты» 79 5) Содержимое файла начинается со строки "-----BEGIN CERTIFICATE-----", заканчивается "-----END CERTIFICATE-----" 6) Сертификат должен быть закодирован с помощью Base-64 (см. 8.4. Сохранение сертификата в кодировке Base-64) Пример запроса: TerminalKey: TerminalKeyE2C Certificate: <Действующий сертификат CryptoPro> DigestValue: "s9GDxXSwaBpZr/kOs5zPHdlEV4XQVde00QIJwlAQ5LQ=" SignatureValue: "ZrjXi4z3LkxS30vDh+Df1l5YuMaTk6rTxoxBGF3hjpIDs6NCtBpVu+ChcJaa3vwXRILA9RXtqnGPbVp27XOYVYEy0/d yimBrM/MqeWU6kdjYBARu/NssHVp8U/1D5ympsycz7Agfl13tSu0jCPZ2LSJWG4eaKPouOCWG2BsDYTs1YJ+TljXp 9dxSfx5EuVxhOC+F6HazwJhEUNkWZwb5fCVROx6d850V93wv3Yz+H7Nt3U4anhSHDmPANbZJTnjFUw7fQE16tUl OGrPXOAVeZD3jOpdJJiFpc/D6crGzpmvjy7frPSHIPusNtnl5Bf0qvbEN9ZidwqBJPRFvnkjrOg==" X509SerialNumber: a44c3fed7bd693226466e0b0c9a836d1855a7 Формат ответа: JSON Ответ Таблица 9.1.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком. Success bool Да Успешность операции ErrorCode String Да Код ошибки. «0» - если успешно X509SerialNumber String Да Серийный номер сертификата в десятичном формате (dec) StartDate String Да Дата и время начала срока действия сертификата в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС ExpirationDate String Да Дата и время окончания срока действия сертификата в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки «Протокол A2C_V2 Мультирасчеты» 80 Пример ответа: { "Success": true, "ErrorCode": "0", "TerminalKey": "TerminalKeyE2C", "X509SerialNumber": "2765294288480142093136546607735032338542070082", "StartDate": "06.06.2022 15:21:31", "ExpirationDate": "06.09.2022 15:31:31" } «Протокол A2C_V2 Мультирасчеты» 81 8.2. Метод UpdateCertificateStatus Описание: Меняет статус сертификата для подписи запросов. Запрос Тестовый URL*: https://rest-api-test.tinkoff.ru/e2c/v2/UpdateCertificateStatus Боевой URL: https://securepay.tinkoff.ru/e2c/v2/UpdateCertificateStatus *Для возможности отправки запросов на тестовую среду напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. Запрос необходимо отправлять с боевого терминала Метод: POST Таблица 9.2.1. Параметры запроса Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком X509SerialNumber String Да Серийный номер сертификата в формате dec из ответа по методу AddCertificate SetStatus String Да Новый статус сертификата. Возможные значения: • Active – активен • Blocked - заблокирован DigestValue String Да Значение хеша в Base64 SignatureValue String Да Значение подписи в Base64 X509SerialNumber String Да Серийный номер сертификата Пример запроса: { "TerminalKey": "TerminalKeyE2C", "X509SerialNumber ": "2765294288480142093136546607735032338542070082", "SetStatus": "Blocked", DigestValue: "s9GDxXSwaBpZr/kOs5zPHdlEV4XQVde00QIJwlAQ5LQ=", SignatureValue: "ZrjXi4z3LkxS30vDh+Df1l5YuMaTk6rTxoxBGF3hjpIDs6NCtBpVu+ChcJaa3vwXRILA9RXtqnGPbVp27XOYVYEy0/dyimBr M/MqeWU6kdjYBARu/NssHVp8U/1D5ympsycz7Agfl13tSu0jCPZ2LSJWG4eaKPouOCWG2BsDYTs1YJ+TljXp9dxSfx5EuV xhOC+F6HazwJhEUNkWZwb5fCVROx6d850V93wv3Yz+H7Nt3U4anhSHDmPANbZJTnjFUw7fQE16tUlOGrPXOAVeZD3jO pdJJiFpc/D6crGzpmvjy7frPSHIPusNtnl5Bf0qvbEN9ZidwqBJPRFvnkjrOg==", X509SerialNumber: a44c3fed7bd693226466e0b0c9a836d1855a7 } «Протокол A2C_V2 Мультирасчеты» 82 Формат ответа: JSON Ответ Таблица 11.2.2. Параметры ответа Наименование Тип Обязательность Описание TerminalKey String Да Идентификатор терминала, выдается Площадке Банком Success bool Да Успешность операции ErrorCode String Да Код ошибки. «0» - если успешно Message String Нет Краткое описание ошибки Details String Нет Подробное описание ошибки Пример ответа { "TerminalKey": "TerminalKeyE2C", "Success": true, "ErrorCode": "0" } «Протокол A2C_V2 Мультирасчеты» 83 8.3. Подпись запроса с помощью токена Для генерации подписи используется пароль (см. Параметры выплат параметр Password) из личного кабинета мерчанта. 1. Собрать массив всех передаваемых параметров в виде пар Ключ-Значение: [{"TerminalKey","TestB"}, {"PaymentId","20150"}] 2. Добавить в массив пару (Password, значение): [{"TerminalKey","TestB"}, {"PaymentId","20150"}, {"Password","Dfsfh56dgKl"}] 3. Отсортировать массив по Ключам по алфавиту: [{"Password", "Dfsfh56dgKl"}, {"PaymentId","20150"}, {"TerminalKey","TestB"}] 4. Конкатенировать значения всех пар: Dfsfh56dgKl20150TestB 5. Вычислить SHA-256 от полученного в предыдущем пункте значения и записать значение в Token. Формирование подписи запроса Token завершено. «Протокол A2C_V2 Мультирасчеты» 84 8.4. Сохранение сертификата в кодировке Base-64 Запускаем сертификат на вкладке «Состав» нажимаем «Копировать в файл» В окне выбираем формат “Файлы X.509 (.CER) в кодировке Base-64” «Протокол A2C_V2 Мультирасчеты» 85 Выбираем путь сохранения файла и затем нажимаем на кнопку «Далее». Затем на кнопку «Готово». Результат на скрине «Протокол A2C_V2 Мультирасчеты» 86 9. Карты для проведения тестирования Успешная привязка/выдача 5000000000000447 expDate: любая действующая дата в формате 11/24 cvv: любой набор из 3 цифр Успешная привязка authRC=1057, message='Покупатель запретил такие операции для своей карты' в ответ на метод Payment 5000000000000553 expDate: любая действующая дата в формате 11/24 cvv: любой набор из 3 цифр Тестирования Выплат СБП Успешный флоу 1. Phone: 79066589133 SbpMemberId: 100000000012 2. Phone: 79066589133 SbpMemberId: 100000000004 Тестирования Выплат СБП. Неуспешный флоу Получение ошибки: -955 Phone 79066589133 SbpMemberId 100000000013 Тестирования Выплат СБП. Неуспешный флоу Получение ошибки: 9143 Phone 79066589134 SbpMemberId 100000000004
РЕГИСТРАЦИЯ И ОБНОВЛЕНИЕ ПАРТНЕРОВ
1. Регистрация точек 1.1 Общая информация Сценарий действий для создания точки для партнера: • Авторизация для использования API • Регистрация точки Для регистрации точек магазина Мультирасчетов необходимо использовать API создания точек. Создание точки для партнера осуществляется вызовом методов с передачей параметров методом POST в формате JSON. Все методы и передаваемые параметры являются чувствительными к регистру. Для POST запроса в заголовке должен присутствовать Content-Type: application/json Примечание: Требование про Content-Type: application/json выполняется не для всех POST-запросов. Например, для запроса на /oauth/token мы используем формат form-data, а не JSON-код, поэтому и заголовок в нем не нужен. Тестовый URL: https://acqapi-test.tinkoff.ru Боевой URL: https://acqapi.tinkoff.ru Для внешнего взаимодействия с сервисом необходимо обращаться по URL-адресам с использованием сертификата mtls для acqapi.tinkoff.ru. Если у вас нет сертификата, то выпустите его по инструкции. По вопросам выпуска сертификата обращайтесь в чат поддержки ЛК Бизнеса. Для возможности отправки запросов напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. После чего сможете отправлять запросы. Для настройки и подключения TLS-cертификата от НУЦ Минцифры используйте инструкцию. Регистрация и обновление партнеров 5 1.2 Авторизация для использования API Тестовый URL: https://acqapi-test.tinkoff.ru/oauth/token Боевой URL: https://acqapi.tinkoff.ru/oauth/token Для возможности отправки запросов напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. После чего сможете отправлять запросы. Метод: POST Basic-авторизация клиента Username: partner Password: partner Примечание: Username=partner, Password=partner имеют постоянное значение на тестовом и боевом контуре. Актуальные login и password нужно отправлять в теле запроса. Авторизация клиента (проверка данных, выданных банком) Примечание: grant_type=password имеет постоянное значение. Переменная часть запроса «username=login&password=password». Username и password выдает банк Пример вызова curl -X POST https://sm-register-test.tcsbank.ru/oauth/token -H 'Authorization: Basic cGFydG5lcjpwYXJ0bmVy' –d "grant_type=password&username=login&password=password" Регистрация и обновление партнеров 6 Пример ответа { "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsicGFydG5lciJdLCJ1c2VyX25hbWUiOiJ0ZXN0bXAiLCJzY29wZSI6WyJwYXJ0bmV yIl0sImV4cCI6MTUzMjEzODgxOSwiYXV0aG9yaXRpZXMiOlsiUk9MRV9BRE1JTiJdLCJqdGkiOiI4NzBlNjRkMy1kZjg4LTRhYmMtYTEwMC02M WFiMjUwNGUzZDQiLCJjbGllbnRfaWQiOiJwYXJ0bmVyIn0.SThjQ3cTDAlCMHEtmOVkaNjGSr75wLGBSAr9QYkkPQnPbivLL55eBFvDSh1_7DlXbFS9CV8yx33KQFlmFqYbgQ8zh2v1b51tdzKnFStXCRHCpNGBYErUg3_4SV75F 4Krp4vijXckkptDXDjsb5gC_b_cDKlUA3ISlkqHgHeSurmyP0jBw_WiHM7QdNxa9J5LTT_DNXl6iIdH6tIeCcWFN7f8PxFZhZtzFxNvrbh7WkQESm bywvS_T0tGBiiOqLR0yo85hmwUpUqwiJHoJ2U7gmdsihdF2zI20DXJ1SByAZr4TFL8DT7HelTZanhWXV3ticeFhaW77Cr2rte3-ubQA", "token_type": "bearer", "refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsicGFydG5lciJdLCJ1c2VyX25hbWUiOiJ0ZXN0bXAiLCJzY29wZSI6WyJwYXJ0bmV yIl0sImF0aSI6Ijg3MGU2NGQzLWRmODgtNGFiYy1hMTAwLTYxYWIyNTA0ZTNkNCIsImV4cCI6MTUzNDY4NzYxOSwiYXV0aG9yaXRpZXMiOlsi Uk9MRV9BRE1JTiJdLCJqdGkiOiIwNjM0ZGY1MS04YTRjLTQ5YWMtYTFlOC00NjAzYWUxYTljYmUiLCJjbGllbnRfaWQiOiJwYXJ0bmVyIn0.XufZC85qCIYW3sLI4dJIdxfz0LEPF4MKmh__8RHSbQ4xkH8J9P7XJyIYtX0-ejGVmSE7cyIg-OSa6juXYdrHc88ANihnC8dlWIZZOenBDdD6xNuY9MVk4dswy1k5pGUT423FQB1pDZcuBCLD059cWKU4Q3x9mi05HBnPP8KwFjzPzZi3Cs2GhSyMNeDfHMpQvFNKxZL5A 1COc8k4n2VsCIpxDEXVkNGIxkpyRX0s1NiZsE6uSk9kOfUK1ffDkvZxS8xNyBA_nrzgIEGwmR2w92hCS7rNtQhLgBnvsmtqOAxAmHxUoFtUquRyM7lIgRl1j4UONb2VeyYC1KgoIYQ", "expires_in": 43199, "scope": "partner", "jti": "870e64d3-df88-4abc-a100-61ab2504e3d4" } Примечание: В дальнейшем методе регистрации точки необходимо использовать в заголовке: Authorization:Bearer + access_token (полученный в ответ на вызов метода авторизации - https:///oauth/token) Регистрация и обновление партнеров 7 1.3 Регистрация точки для партнера Запрос Тестовый URL: https://acqapi-test.tinkoff.ru/sm-register/register Боевой URL: https://acqapi.tinkoff.ru/sm-register/register Для возможности отправки запросов напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. После чего сможете отправлять запросы. Метод: POST Таблица 1.3.1. Параметры запроса Наименование Тип Обязательность Описание serviceProviderEmail String Нет Email магазина mcc1 Integer Нет MCC-код торговой группы shopArticleId String (32) Нет Код точки на стороне магазина Мультирасчетов. Если данные не переданы, то банк присваивает значение на своей стороне. billingDescriptor String Да Название магазина в СМС и на странице проверки 3DS на иностранном языке fullName String Да Полное наименование организации name2 String (512) Да Сокращенное наименование организации inn String Да ИНН kpp3 String Да КПП okved String Нет ОКВЭД ogrn Integer Да Основной регистрационный номер regDepartment String Нет Орган государственной регистрации regDate String Нет Дата присвоения ОГРН addresses4 Array Да Адреса организации addresses[].type String Да Тип адреса организации: legal - юридический actual - фактический Регистрация и обновление партнеров 8 Наименование Тип Обязательность Описание post - почтовый other - прочий addresses[].zip String Да Почтовый индекс addresses[].country String Да Трехбуквенный код страны по ISO addresses[].city String Да Город или населенный пункт addresses[].street String Да Улица, дом addresses[].description String Нет Дополнительное описание phones Array Нет Телефоны организации phones[].type String Нет Тип телефона организации: common – основной fax – факс other - прочий phones[].phone String Нет Телефон phones[].description String Нет Дополнительное описание email String Да Email партнера assets String Нет Сведения о величине зарегистрированного и оплаченного уставного (складочного) капитала или величине уставного фонда, имущества founders Object Нет Сведения об учредителях founders.individuals Array Да Физические лица founders.individuals[].firstName String Да Имя founders.individuals[].lastName String Да Фамилия founders.individuals[].middleName String Нет Отчество founders.individuals[].birthDate String Нет Дата рождения founders.individuals[].birthPlace String Нет Место рождения founders.individuals[].citizenship String Да Гражданство founders.individuals[].docType String Нет Вид документа, удостоверяющего личность founders.individuals[].docNumber String Нет Серия и номер документа Регистрация и обновление партнеров 9 Наименование Тип Обязательность Описание founders.individuals[].issueDate String Нет Дата выдачи founders.individuals[].issuedBy String Нет Кем выдан founders.individuals[].address String Да Адрес регистрации/адрес проживания ceo Object Да Сведения о руководителе ceo.firstName String Да Имя ceo.lastName String Да Фамилия ceo.middleName String Нет Отчество ceo.birthDate String Нет Дата рождения ceo.birthPlace String Нет Место рождения ceo.docType String Нет Вид документа, удостоверяющего личность ceo.docNumber String Нет Серия и номер документа ceo.issueDate String Нет Дата выдачи ceo.issuedBy String Нет Кем выдан ceo.address String Нет Адрес регистрации/адрес проживания ceo.phone String Да Контактный телефон ceo.country String Да Страна гражданства 3 символа по справочнику ISO 3166-1 (Alpha-3) licenses Array Нет Лицензии licenses[].type String Нет Вид licenses[].number String Нет Номер licenses[].issueDate String Нет Дата выдачи licenses[].issuedBy String Нет Кем выдана licenses[].expiryDate String Нет Срок действия licenses[].description String Нет Перечень лицензируемой деятельности siteUrl String Да Адрес интернет сайта Регистрация и обновление партнеров 10 Наименование Тип Обязательность Описание primaryActivities String Нет Основные виды деятельности bankAccount Object Да Реквизиты партнера магазина Мультирасчетов для перечисления возмещения bankAccount.account String Да Расчетный или казначейский счет bankAccount.korAccount String Нет Корреспондентский счет bankAccount.bankName String Да Наименование банка bankAccount.bik String Да БИК bankAccount.kbk5 String Нет КБК. Если указан КБК, то «Статус плательщика» присваивается банком автоматически bankAccount.oktmo5 String Нет ОКТМО bankAccount.details String Да Назначение платежа comment String Нет Комментарий nonResident Boolean Нет Признак нерезидента. Всегда false Примечание: 1. Если значение параметра mcc не равно mcc-коду, соответствующему переданной торговой группы (merchantIds), то значение merchantIds игнорируется, и точка зарегистрируется на ту торговую группу, которой соответствует значение параметра mcc. 2. Параметр name необходимо заполнить кириллицей и обязательно указать организационно-правовую форму (например ОАО, ЗАО, ИП). 3. В случае, если у регистрируемой точки нет КПП, то необходимо передать нули: 000000000. 4. В параметре addresses допустимы только символы («.» и «,»). При наличии других спецсимволов запрос отобьется ошибкой. 5. Параметры kbk и oktmo оба обязательны для заполнения, если указан 1 (один) из этих параметров. Пример запроса { "serviceProviderEmail": "333@mail.ru", "shopArticleId": "test_tochka", "billingDescriptor": "test_tochka", "fullName": "Общество с ограниченной ответственностью «Компания»", "name": "ООО «Компания»", "inn": "3333333333", "kpp": "333333333", "okved": "64.92.7", "ogrn": 333333333333, "regDepartment": "ФНС №1 по г. Москве", Регистрация и обновление партнеров 11 "regDate": "2003-03-03", "addresses": [ { "type": "legal", "zip": "108809", "country": "RUS", "city": "Москва", "street": "Маяковского, 3", "description": "Юридический адрес" }, { "type": "actual", "zip": "108809", "country": "RUS", "city": "Москва", "street": "Маяковского, 5" } ], "phones": [ { "type": "common", "phone": "+7(495)333-3333", "description": "основной" } ], "email": "333@mail.ru", "assets": "3000000", "founders" : { "individuals" : [ { "firstName" : "Семен", "lastName" : "Семенов", "middleName" : "Семенович", "birthDate" : "1970-02-02", "birthPlace" : "Рязань", "citizenship" : "Россия", "docType" : "Паспорт", "docNumber" : "2222 222222", "issueDate" : "2009-07-21", "issuedBy" : "Отделом УФМС России по Рязанской области", "address" : "214031, г. Рязань, ул. Ленина, д. 1, кв. 1" }, { "firstName" : "Имя", "lastName" : "Фамилия", "middleName" : "Отчество", "birthDate" : "1993-01-01", "birthPlace" : "г. Москва", "citizenship" : "Россия", "docType" : "Паспорт", "docNumber" : "2222 333333", "issueDate" : "2012-09-13", "issuedBy" : "Отделом УФМС России по гор. Москве", "address" : "125413, г. Москва, ул.Ленина, д. 1, кв. 1" } ] }, "ceo": { "address": "108809, г. Москва, Маяковского, 3", "phone": "+79853333333", "firstName": "Иван", "lastName": "Иванов", "middleName": "Иванович", "birthDate": "1980-03-03", "birthPlace": "Москва", "docType": "Паспорт", "docNumber": "333 333333", "issueDate": "2020-09-16", "issuedBy": "УМВД России по Московской области", "country": "RUS" Регистрация и обновление партнеров 12 }, "licenses": [ { "type" : "type", "number" : "3333-654", "issueDate" : "2010-01-01", "issuedBy" : "issuedBy", "expiryDate" : "2020-01-01", "description" : "лицензия продлена" } ], "siteUrl": "http://yandex.ru/", "primaryActivities": "Торговля", "bankAccount": { "account": "40702810838170023076", "korAccount": "30101810400000000225", "bankName": "ПАО «Сбербанк России»", "bik": "044525225", "kbk": "18210501011011000110", "oktmo": "45286575000", "details": "Перевод средств по договору № 3333-3333 от 16.09.2021 по Реестру Операций от ${date}. Сумма комиссии ${rub} руб. ${kop} коп." }, "comment": "Комментарий", "nonResident": false } Ответ Формат ответа: JSON Таблица 1.3.2. Параметры ответа Параметр Тип Описание code String Код точки на стороне партнера. Значение, переданное в shopArticleId shopCode String Присвоенный идентификатор точки на стороне банка. Идентификатор передается в параметре PartnerId при совершении ему выплаты (подробнее в документации). terminals Array Массив объектов с информацией о зарегистрированных терминалах – для точек магазина Мультирасчетов данный массив пустой. Пример ответа: { "code": "test_tochka", "shopCode": 111111111, "terminals": [] } При неуспешном ответе в объекте errors передается перечень ошибок валидации, которые были найдены в переданном запросе. Таблица 1.3.3. Параметры неуспешного ответа Регистрация и обновление партнеров 13 Наименование Тип Описание field String Указывается имя параметра запроса, в котором допущена ошибка defaultMessage String Сообщение об ошибке rejectedValue String Указывается значение, переданное в запросе code String Указывается тип формата, которому он не соответствует. Существуют следующие причины ошибок: • Ошибки валидации и формата сообщения • Ошибки бизнес-логики Примеры неуспешного ответа: 1) По причине бизнес-логики или по технических проблемам { "timestamp": "2018-07-16T13:10:11.158+0000", "status": 400, "error": "Bad Request", "message": "Ошибка регистрации точки billingDescriptor[shopArticleId]\nуказаны неверные банковские реквизиты. БИК : 044583999; р/с : 000000000000000000000", "path": "/register" } Status заполняется http-кодом, которым завершился запрос. Если в ответе сообщения присутствует данный параметр, то это означает, что регистрация точки завершилась ошибкой. 2) При ошибках формата сообщения { "timestamp": "2018-07-25T13:23:18.160+0000", "status": 400, "error": "Bad Request", "errors": [ { "field": "billingDescriptor", "defaultMessage": "не может быть пусто", "rejectedValue": "", "code": "NotEmpty" }, { "field": "serviceProviderEmail", "defaultMessage": "email определен в неверном формате", "rejectedValue": "bademeil", "code": "Email" }, { "field": "billingDescriptor", "defaultMessage": "должно соответствовать шаблону \"[A-z0-9.\\-_ ]+\"", "rejectedValue": "", "code": "Pattern" }, { "field": "billingDescriptor", "defaultMessage": "размер должен быть между 1 и 14", "rejectedValue": "", "code": "Size" } ], "message": "Validation failed for object='merchant'. Error count: 1", "path": "/register" } Регистрация и обновление партнеров 14 Перечень возможных ошибок • Адрес не задан. • The billingDescriptor is not specified • Точка уже активирована. • ShopArticleId не передан • Параметр [name] не задaн. • Параметр [inn] не задaн. • Параметр [ogrn] не задaн. • Параметр [address.zip] не задaн. • Параметр [address.city] не задaн. • Параметр [address.country] не задaн. • Параметр [address.country] не задaн. • Параметр [ceo.firstName] не задaн. • Параметр [ceo.lastName] не задaн. • Параметр [bankAccount] не задaн. • Параметр назначение платежа не задано • Параметр назначение платежа не задано • Шаблон назначение платежа не задан • Указаны неверные банковские реквизиты. БИК: ${bankAccount.bik}; р/с: ${bankAccount.account} • Поле КБК не соответствует заданному шаблону: 20 цифр • Поле КБК должно быть задано вместе с ОКТМО • Поле ОКТМО не соответствует заданному шаблону: 8 или 11 цифр • Поле ОКТМО должно быть задано вместе с КБК • Ошибка регистрации точки. Параметр ogrn не задан Регистрация и обновление партнеров 15 1.4 Получение информации по точке Запрос Тестовый URL: https://acqapi-test.tinkoff.ru/sm-register/register/shop/{shopCode} Боевой URL: https://acqapi.tinkoff.ru/sm-register/register/shop/{shopCode} *Для возможности отправки запросов напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. После чего сможете отправлять запросы. Метод: GET Таблица 1.4.1. Параметры запроса Наименование Тип Обязательность Описание shopCode Integer Да Идентификатор точки, полученный в ответе на запрос регистрации точки Ответ Формат ответа: JSON Таблица 1.4.2. Параметры ответа Наименование Тип Обязательност ь Описание merchantIds Array Нет Идентификаторы агрегированных мерчантов (торговые группы), разрешенные для использования торговой точкой terminalIds Array Нет Идентификаторы терминалов, разрешенные для использования торговой точкой terminalTypes Array Нет Тип терминала. • 0 (non3DS), • 1 (3DS) mcc Integer Нет MCC-код торговой группы (возвращается, если точка подключена к 1 ТГ, иначе значение возвращается в массиве paymentSystemAttributes) name String Да Сокращенное наименование организации Регистрация и обновление партнеров 16 Наименование Тип Обязательност ь Описание inn String Нет ИНН kpp String Нет КПП email String Да Email организации bankAccount Object Да Реквизиты партнера агрегатора для перечисления возмещения bankAccount.account String Нет* Расчетный счет bankAccount.korAccount String Нет* Корреспондентский счет bankAccount.bankName String Нет* Наименование банка bankAccount.bik String Нет* БИК bankAccount.details String Нет* Назначение платежа userDefinedFees Object Да** Пользовательские правила задания комиссий в пользу Предприятия userDefinedFees.tax Object Да Комиссия. Объект возвращается пустым для партнера магазина Мультирасчетов. userDefinedFees.tax.percent Number Нет % от суммы операции userDefinedFees.tax.min Number Нет Фиксированная минимальная комиссия в расчетной валюте userDefinedFees.tax.fix Integer Number Нет Фиксированная сумма в расчетной валюте, безусловно прибавляемая к комиссии userDefinedFees.rule Object Да Правило применения комиссии userDefinedFees. paymentSystem Number Нет Платежная система • 0 (Visa) • 1 (Mastercard) • 2 (Mir) userDefinedFees.terminalType Number Нет Тип терминала • 0 (non-3DS) • 1 (3DS) userDefinedFees.tinkoffCard Boolean Нет Карта выпущена в Т-Банке nonResident Boolean Нет Признак нерезидента Регистрация и обновление партнеров 17 Наименование Тип Обязательност ь Описание userDefinedFees.rule.operationType Number Да Тип запроса: • 0 (Pay) • 1 (Fail pay) • 2 (Account verification) userDefinedFees.isAft Boolean Нет Комиссия за AFT операции userDefinedFees.startDate String Нет Дата вступления комиссии в силу, проверяется на нестрогое неравенство (формат yyyy-MM-dd hh:mm:ss) bankAccount.userDefinedFees.endDate String Нет Дата окончания действия комиссии, проверяется на строгое неравенство (формат yyyy-MM-dd hh:mm:ss) Если null, то применение комиссии не ограничено сверху bankAccount.disableReimbursement Boolean Да Возмещения заблокированы у торговой точки bankAccount.feeType String Да Тип комиссии: • UP • DOWN (default) paymentSystemAttributes Array Нет Атрибуты точки для ПС paymentSystemAttributes.mcc String Нет MCC-код торговой группы paymentSystemAttributes.mid String Нет Уникальный МИД, зарегистрированный в ПС paymentSystemAttributes.tid String Нет Уникальный ТИД * Не приходит, если в запросе на регистрацию не был передан bankAccount. ** Обязателен только для BPA и BRS. В других случаях необязателен (в ответе будет возвращаться пустой массив). Пример ответа, если точка подключена к 1 торговой группе (merchantIds): { "merchantIds": [0000000000000], "terminalIds": [0000000, 11111111], "terminalTypes": [0,1], "mcc": 6012, "name": "OOO «Moya kompaniya»", "inn": "1111111111", "kpp": "111000001", "email": "11@mail.ru", "bankAccount": { "account": "111111111111111111", "korAccount": "111111111111111111", "bankName": "ПАО «Сбербанк России»", Регистрация и обновление партнеров 18 "bik": "11111111111", "details": "Перевод средств по договору № 202210-11111 от 01.09.2021 по Реестру Операций от ${date}. Сумма комиссии ${rub} руб. ${kop} коп.", "userDefinedFees": [ { "tax": { "percent": 1, "min": 0 }, "rule": { "operationType": 0 }, "isAFT": false, "startDate": "2022-03-03 21:07:57" ], "disableReimbursement": false, "feeType": "DOWN" }, "paymentSystemAttributes": [ { "mid": "200000001111111", "tid": "11111111" } ] } Пример ответа, если точка подключена к нескольким торговым группам (merchantIds): { "merchantIds": [0000000000000, 0000000000001], "terminalIds": [0000000, 11111111, 0000001, 11111112], "terminalTypes": [0,1, 0, 1], "name": "OOO «Moya kompaniya»", "inn": "1111111111", "kpp": "111000001", "email": "11@mail.ru", "bankAccount": { "account": "111111111111111111", "korAccount": "111111111111111111", "bankName": "ПАО «Сбербанк России»", "bik": "11111111111", "details": "Перевод средств по договору № 202210-11111 от 01.09.2021 по Реестру Операций от ${date}. Сумма комиссии ${rub} руб. ${kop} коп.", "userDefinedFees": [ { "tax": { "percent": 1, "min": 0 }, "rule": { "operationType": 0 }, "isAFT": false, "startDate": "2022-03-03 21:07:57" }, { "tax": { "percent": 1, "min": 0 }, "rule": { "operationType": 0 }, "isAFT": true, "startDate": "2022-03-03 21:07:57" } ], "disableReimbursement": false, "feeType": "DOWN" }, "paymentSystemAttributes": [ Регистрация и обновление партнеров 19 { "mcc": "0000", "mid": "200000001111111", "tid": "11111111" }, { "mcc": "0001", "mid": "200000001111111", "tid": "11111111" } ] } Регистрация и обновление партнеров 20 2. Обновление данных по партнеру 2.1 Общая информация Сценарий действий для обновления информации о точке для партнера: - Авторизация для использования API обновления информации о точках. - Обновление информации о точке. Для обновления информации о точках магазина Мультирасчетов необходимо использовать API обновления информации о точках. Обновление информации о точке для партнера осуществляется вызовом методов с передачей параметров методом PATCH в формате JSON. Все методы и передаваемые параметры являются чувствительными к регистру. Для PATCH запроса в заголовке должен присутствовать Content-Type: application/json Примечание: Требование про Content-Type: application/json выполняется не для всех POST-запросов. Например, для запроса на /oauth/token мы используем формат form-data, а не JSON-код, поэтому и заголовок в нем не нужен Тестовый URL: https://acqapi-test.tinkoff.ru Боевой URL: https://acqapi.tinkoff.ru Для внешнего взаимодействия с сервисом необходимо обращаться по URL-адресам с использованием сертификата mtls для acqapi.tinkoff.ru. Если у вас нет сертификата, то выпустите его по инструкции. По вопросам выпуска сертификата обращайтесь в чат поддержки ЛК Бизнеса. Для возможности отправки запросов напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL. После чего сможете отправлять запросы. Регистрация и обновление партнеров 21 2.2 Обновление информации о точке Запрос Тестовый URL: https://acqapi-test.tinkoff.ru/sm-register/register/{shopCode} Боевой URL: https://acqapi.tinkoff.ru/sm-register/register/{shopCode} *Для возможности отправки запросов с IP-адресов, которые находятся вне РФ, напишите на почту acq_help@tbank.ru c просьбой добавить ваши IP в WL Метод: PATCH Таблица 2.2.1. Параметры запроса Наименование Тип Обязательность Описание bankAccount Object Нет Реквизиты партнера магазина Мультирасчетов для перечисления возмещения bankAccount.account String Да Расчетный или казначейский счет Не должен быть пустым, если задаются реквизиты партнера магазина Мультирасчетов для перечисления возмещения bankAccount.korAccount String Нет Корреспондентский счет bankAccount.bankName String Да Наименование банка Не должен быть пустым, если задаются реквизиты партнера магазина Мультирасчетов для перечисления возмещения bankAccount.bik String Да БИК Не должен быть пустым, если задаются реквизиты партнера магазина Мультирасчетов для перечисления возмещения bankAccount.kbk String Нет КБК Если у точки есть КБК, то «Статус плательщика» присваивается Банком автоматически bankAccount.oktmo String Нет ОКТМО bankAccount.details String Да Назначение платежа Регистрация и обновление партнеров 22 Наименование Тип Обязательность Описание Не должен быть пустым, если задаются реквизиты партнера магазина Мультирасчетов для перечисления возмещения bankAccount.disableReimbursement Boolean Нет Если значение False, то ТСП разблокируется, и предыдущие холды помечаются на выплаты при условии, если ТСП ранее была заблокирована для выплат Если значение True, то ТСП блокируется для выплат, если ранее не была заблокирована Примечание: 1. Для очищения КБК и ОКТМО необходимо в значении обоих параметров передать null Пример запроса { "bankAccount": { "account": "40702810838170023076", "korAccount": "30101810400000000225", "bankName": "ПАО «Сбербанк России»", "bik": "044525225", "kbk": "18210501011011000110", "oktmo": "45286575000", "details": "Перевод средств по договору № 3333-3333 от 16.09.2021 по Реестру Операций от ${date}. Сумма комиссии ${rub} руб. ${kop} коп.", "disableReimbursement": true } } Ответ Формат ответа: JSON Таблица 2.2.2. Параметры ответа Параметр Тип Описание code String Код точки на стороне партнера. Значение, переданное в shopArticleId shopCode String Присвоенный идентификатор точки на стороне банка terminals Array Массив объектов с информацией о зарегистрированных терминалах – для точек магазина Мультирасчетов данный массив пустой. Пример ответа: { "code": "test_tochka", Регистрация и обновление партнеров 23 "shopCode": 111111111, "terminals": [] } При неуспешном ответе в объекте errors передается перечень ошибок валидации, которые были найдены в переданном запросе. Таблица 2.2.3. Параметры неуспешного ответа Наименование Тип Описание field String Указывается имя параметра запроса, в котором допущена ошибка defaultMessage String Сообщение об ошибке rejectedValue String Указывается значение, переданное в запросе code String Указывается тип формата, которому он не соответствует. Перечень возможных ошибок • Ошибка обновления точки. Точка не найдена • Указаны неверные банковские реквизиты • Поле КБК не соответствует заданному шаблону: 20 цифр • Ошибка обновления точки. Поле КБК должно быть задано вместе с ОКТМО • Поле ОКТМО не соответствует заданному шаблону: 8 или 11 цифр • Ошибка обновления точки. Поле ОКТМО должно быть задано вместе с КБК