Download OpenAPI specification:Download
Интернет-эквайринг помогает принимать онлайн-платежи так, как удобно вам и покупателю: на сайте, в мобильном приложении, соцсетях, мессенджерах, по e-mail или СМС. Вы можете принимать оплату разными способами, возвращать и замораживать выплаты и настраивать рекуррентные платежи.
Чтобы подключить интернет-эквайринг, оставьте заявку на сайте Т‑Банка и заполните анкету компании или ИП. Подробнее о подключении можно прочитать в Т-Помощи или узнать у персонального менеджера.
Интернет-эквайринг нужно интегрировать — настроить оплату на сайте или в приложении. Есть четыре способа интеграции:
Интегрироваться можно самостоятельно или с помощью разработчика.
Способ интеграции интернет-эквайринга с сайтом, который создан на основе CMS.
Модуль подходит, если ваш сайт собран на CMS — например, 1С-Битрикс, WordPress или Taplink. Т‑Касса поддерживает многие популярные CMS, в некоторые уже встроены модули — их устанавливать не нужно.
Принцип работы:
На этой странице представлен список систем управления контентом (CMS), для которых разработаны платежные модули. Если вашего решения нет в этом списке, мы рекомендуем настроить передачу объекта DATA
с параметром connection_type
. В этом параметре укажите название модуля, через который вы интегрируетесь. Более подробную информацию вы можете в описании метода Init. Если у вас возникнут вопросы или потребуется дополнительная настройка, пожалуйста, обратитесь в техническую поддержку вашего модуля.
Инструкции по интеграции с помощью платежного модуля
Способ интеграции интернет-эквайринга с самописным сайтом.
Виджет подходит, если:
Принцип работы:
Для интеграции виджета потребуется помощь программиста.
Инструкция по интеграции с помощью виджета
Способ интеграции интернет-эквайринга с мобильным приложением. Покупатель оплачивает товар без перехода в мобильный браузер, оставаясь внутри вашего приложения.
С помощью SDK вы можете:
Инструкции по подключению SDK в личном кабинете:
Самый гибкий и сложный способ интеграции интернет-эквайринга. Например, API подходит, если у вас самописный сайт и вы хотите настроить оплату под запросы бизнеса — совмещать в платежной форме разные способы оплаты, принимать рекуррентные платежи или подключать другие сервисы Т‑Кассы.
Для интеграции понадобится помощь программиста.
Платежная форма — это готовый интерфейс с встроенными способами оплаты, который позволяет принимать платежи онлайн.
Для использования платежной формы нужно подключить интернет-эквайринг, настроить терминал и интегрировать платежную форму на ваш сайт одним из способов выше — кроме SDK.
Некоторые WebView не умеют обрабатывать DeepLink-ссылки. Из-за этого способы оплаты, которые выполняют переход в мобильное приложение во время платежа, могут работать некорректно — например, СБП, Mir Pay, T‑Pay.
При использовании платежной формы в WebView нужно учесть особенности вашей интеграции и сделать доработки для поддержки DeepLink.
По результатам доработок нужно дополнительно протестировать корректную работу всех способов оплат. Если вы обнаружите проблемы, свяжитесь с разработчиками WebView модуля для их устранения или отключите неработающие способы оплаты.
Примеры решений:
Платформа IOS
Чтобы DeepLink работал в Web, есть два варианта решения:
Пример реализации обработки открытия диплинка Т‑Банка:
navigationDelegate = self
func webView(
_ webView: WKWebView,
decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void
) {
if let url = navigationAction.request.url, let scheme = url.scheme {
if scheme != "https" && scheme != "http" {
UIApplication.shared.open(url)
}
}
decisionHandler(.allow)
}
Мы не рекомендуем использовать платежную форму в iframe для мобильных версий сайтов — у кнопочных способов оплаты могут возникать проблемы с открытием DeepLink и переходов в мобильное приложение для оплаты: СБП, Mir Pay, T‑Pay. Это связано с тем, что iframe — изолированный контейнер. Из-за этого переходы на сторонние ссылки не могут обрабатываться внутри iframe.
Если вам нужно использовать iframe в мобильной версии сайта, сделайте доработки по инструкции ниже, чтобы использовать кнопочные способы оплаты. Это позволит произвести переход в стороннее приложение. Доработки представляют собой скрипт «снаружи» iframe, который получит сообщение о переходе от iframe и вызовет его на основной странице.
После реализации доработок нужно протестировать корректную работу всех способов оплат. Если у вас возникнут проблемы или вопросы, обратитесь в нашу поддержку — acq_help@tbank.ru.
В десктопной версии iframe кнопочные способы оплаты будут работать без специальных доработок.
Если у вас подключены способы оплаты, которые используют DeepLink — T‑Pay, СБП или Mir Pay — в процессе оплаты может возникать ошибка.
Про скрипт
Скрипт общается с фреймом через window.postMessage().
Добавление скрипта помогает решить проблему передачи ссылки на ресурс платежного сервиса для способов оплаты, которые используют DeepLink.
Эта проблема может возникнуть при попытке передачи ссылки в браузер клиента из контейнера платежной формы, который расположен в теге <iframe>
.
Установка
Мы не рекомендуем полностью копировать скрипт в свою сборку. Интерфейс общения с платежной формой может измениться — поэтому всегда загружайте скрипт из файла.
Простая интеграция — если используется уже созданный iframe на странице
Добавьте ссылку на код скрипта iframe.js
в HTML-код страницы сайта, на которой располагается iframe c платежной формой.
Рекомендуем разместить его в конце body
после объявления тега iframe
.
<iframe id="payment-form"></iframe>
<script src="https://kassa.cdn-tinkoff.ru/integration/integration.js"></script>
<script>
const paymentForm = new PaymentForm.Integration({iframe: {element: document.getElementById('payment-form')}});
</script>
Динамическая интеграция — если iframe генерируется динамически
<div id="payment-form-container"></div>
<script>
// // Получите и присвойте переменной uuid значение уникального идентификатора платежа — передаётся в path параметра PaymentURL
const uuid = "";
// Получите элемент контейнера, в который будет встроен iframe
const contentContainer = document.getElementById('payment-form-container')
// Загрузите скрипт
const script = document.createElement("script");
script.type = "text/javascript";
script.async = false;
script.src = "https://kassa.cdn-tinkoff.ru/integration/integration.js";
script.onload = (): void => {
// Инициализируйте скрипт
const paymentForm = new PaymentForm.Integration({iframe: {element: document.getElementById('payment-form')}});
// Создайте iframe
const element = document.createElement("iframe");
element.src = "https://securepayments.tinkoff.ru/" + uuid;
if (contentContainer) {
contentContainer.appendChild(element);
}
};
document.getElementsByTagName("body")[0].appendChild(script);
</script>
Настройка
Класс Integration
принимает два аргумента:
HTMLIFrameElement
— iframe DOM-элемент.config
— необязательный аргумент с конфигурацией PaymentFormIntegrationConfig
.PaymentFormIntegrationConfig
:
interface PaymentFormIntegrationConfig {
iframe: {
element: HTMLIFrameElement;
/**
* Используется, если скрипт встраивается в промежуточный iframe
*/
proxy?: true;
/**
* Вызывается в момент получения deepLink из ПФ
* Стандартное значение: (url) => {window.location.href = url}
* @param url
*/
deepLinkRedirectCallback?: (url: string) => void;
/**
* Вызывается в момент получения exit из ПФ
* Например, при нажатии кнопки Вернуться в магазин
* Стандартное значение: (url) => {window.location.href = url}
* @param url
*/
exitRedirectCallback?: (url: string) => void;
};
}
Если вам нужно просто закрыть модальное окно с платежной формой, а не перенаправлять родительскую страницу на возврат в магазин — замените этот параметр конфигурации.
Пример инициализации скрипта с конфигурацией:
const paymentForm = new PaymentForm.Integration({
iframe: {
element: document.getElementById('payment-form'),
exitRedirectCallback: (url) => {
// Вызов закрытия модального окна
}
}
});
iframe внутри iframe
Иногда приложение работает внутри iframe, который находится внутри другого iframe. В этом случае нужно
встроить скрипт с ключом proxy: true
во все промежуточные iframe.
Пример инициализации скрипта для основной страницы:
<iframe id="payment-form"></iframe>
<script src="https://kassa.cdn-tinkoff.ru/integration/integration.js"></script>
<script>
const paymentForm = new PaymentForm.Integration({iframe: {element: document.getElementById('payment-form')}});
</script>
Пример инициализации скрипта для вложенного iframe:
<iframe id="payment-form"></iframe>
<script src="https://kassa.cdn-tinkoff.ru/integration/integration.js"></script>
<script>
const paymentForm = new PaymentForm.Integration({iframe: {element: document.getElementById('payment-form'), proxy: true}});
</script>
Промежуточный скрипт будет передавать сообщения в каждый следующий iframe.
Коллбеки событий будут срабатывать в промежуточных iframe только если они переопределены в конфигурации.
Как работает скрипт
Общение между формой и родителем происходит через window.postMessage().
loaded
.loaded
из платежной формы скрипт отправляет сообщение ready
на платежную форму. Таким образом происходит
рукопожатие, и платежная форма определяет, что может отобразить кнопочные методы оплаты.Платежную форму можно кастомизировать — настроить под себя и своих клиентов. Для установки кастомизации обратитесь к вашему персональному менеджеру и передайте пожелания по настройкам.
Возможности кастомизации | Дополнительное описание |
---|---|
Брендирование UI платежной формы | |
Управление блоком детализации (информация о заказе и магазине) | |
Управление светлой и темной темой |
Убедитесь, что вы используете последнюю версию интеграции и генерируете и передаете корректный токен при любом способе интеграции.
Если ваш сайт собран на CMS, нужно использовать новейшую версию платежного модуля, доступную на сайте Т‑Кассы — это источник актуальных версий. Современные модули для популярных CMS генерируют корректный токен автоматически.
Дополнительные обязательные меры, которые нужно соблюдать при интеграции с MAPI:
Для сверки параметров доступно несколько способов:
Получение уведомлений:
По электронной почте: когда платёж переходит в статус CONFIRMED
, на указанную почту будет отправлено письмо
По HTTP: MAPI отправляет POST-запрос на указанный URL при каждом изменении статуса платежа
Вызов метода GetState:
PaymentId
и Amount
. Особенно важно сравнивать сумму Amount, полученную в уведомлении или через метод GetState, с ожидаемой стоимостью заказа. Это поможет избежать ошибок при обработке платежей.Если вы не применяете эти меры безопасности на вашем сайте или используете программное обеспечение для интеграции не с сайта Т‑Кассы, вы сами отвечаете за возможные риски и неблагоприятные последствия, связанные с использованием такого программного обеспечения.
Платежные системы разработали требования к безопасности карточных данных клиентов — Payment Card Industry Data Security Standard (PCI DSS). Стандарт PCI DSS — это международный стандарт безопасности, созданный специально для защиты данных платежных карт. Он позволяет защитить организацию от инцидентов безопасности и обеспечить необходимый уровень защищенности во всей платежной системе. Соответствовать правилам стандарта PCI DSS должны все организации.
Если:
У вас нет сертификации PCI DSS, вы можете использовать платежную форму Т‑Кассы. В этом случае все операции, которые связаны с обработкой критичных данных, проводятся на стороне Т‑Кассы. Мерчанту достаточно настроить интеграцию с MerchantAPI и инициализировать платеж. Клиент будет перенаправлен на платежную форму, в которую он сможет ввести данные карты. Когда платеж завершится, клиент снова увидит сайт мерчанта.
Вы имеете сертификацию PCI DSS, то можете собирать и хранить карточные данные клиентов. В этом случае MerchantAPI получает зашифрованные карточные данные от мерчанта.
Платежные системы хотят понимать, кем была инициирована карточная операция. Это особенно важно при проведении операций без 3DS и по сохраненным данным.
Для выполнения требования регулятора мы добавили новый атрибут OperationInitiatorType
в метод Init. В значении этого
атрибута мы ожидаем получать признак того, кем была инициирована операция и какой способ предоставления реквизитов был использован.
Подробное описание сценариев проведения операций, значений OperationInitiatorType
, взаимосвязь с другими атрибутами и типами терминалов:
Тип операции и инициатор | Описание | Сценарий карточной операции | OperationInitiatorType | RebillId в /Charge | Recurrent в Init | AFT терминал | ECOM терминал |
---|---|---|---|---|---|---|---|
Сustomer Initiated Credential-Not-Captured (CIT CNC) | Инициированная покупателем оплата без сохранения реквизитов карты для последующего использования. | Стандартный платеж | 0 | null | N | Разрешено | Разрешено |
Сustomer Initiated Credential-Captured (CIT CC) | Инициированная покупателем оплата c сохранением реквизитов карты для последующего использования. | Стандартный платеж с созданием родительского рекуррентного платежа | 1 | null | Y | Разрешено | Разрешено |
Сustomer Initiated Credential-on-File (CIT COF) | Инициированная покупателем оплата по сохраненным реквизитам карты — ранее была проведена операция с сохранением реквизитов CIT CC. | Рекуррентный платеж, инициированный покупателем | 2 | not null | N | Запрещено | Разрешено |
Merchant Initiated Credential-on-File, Recurring (CIT COF R) | Инициированные торговым предприятием повторяющиеся платежи без графика — ранее была проведена операция с сохранением реквизитов CIT CC. Применяется для оплаты коммунальных услуг, платежей за услуги связи, кабельное/спутниковое телевидение и прочее. Сумма может быть определена заранее или становится известна непосредственно перед оплатой. | Рекуррентный платеж, инициированный торговым предприятием | R | not null | N | Запрещено | Разрешено |
Merchant Credential-on-File, Installment (CIT COF I) | Инициированные торговым предприятием повторяющиеся платежи по графику — ранее была проведена операция с сохранением реквизитов CIT CC. Применяется для платежей в рассрочку по товарному кредиту, для оплаты страховки в рассрочку, для погашения кредита в соответствии с графиком платежей. График платежей может быть изменен по соглашению сторон — суммы и даты платежей должны быть известны плательщику (держателю карты) до момента проведения операции. | Рекуррентный платеж, инициированный торговым предприятием | I | not null | N | Разрешено | Запрещено |
Термин | Определение |
---|---|
Клиент | Физлицо, производящее перевод с использованием банковской карты на сайте мерчанта. |
Мерчант | Бизнес, принимающий и осуществляющий переводы по банковским картам на своем сайте. |
Т‑Касса | Сервис, помогающий проводить выплату клиенту-физлицу. |
Эмитент | Банк, выпустивший карту клиента-физлица. |
PCI DSS | Международный стандарт безопасности, созданный для защиты данных банковских карт. |
3-D Secure | Протокол, который используется как дополнительный уровень безопасности для онлайн-кредитных и дебетовых карт. 3-D Secure добавляет ещё один шаг аутентификации для онлайн-платежей. |
Терминал | Точка приема платежей мерчанта. В общем случае привязывается к сайту, на котором осуществляется прием платежей. Далее в этой документации описан протокол для терминала мерчанта. Для проведения тестов используются данные тестового терминала TinkoffBankTest — пароль аналогичен. |
ККМ | Контрольно-кассовая машина. |
Личный кабинет мерчанта | Веб-приложение, в котором мерчант управляет интернет-эквайрингом — настраивает параметры терминалов, подтверждает или отменяет платежи, анализирует статистику. |
Каждый терминал обладает свойствами, которые влияют на те или иные аспекты приёма платежей. Эти свойства настраиваются при подключении интернет-эквайринга и могут быть изменены в личном кабинете мерчанта.
Основные параметры приёма платежей для терминала:
Название параметра | Формат | Описание |
---|---|---|
TerminalKey | 20 символов, чувствительно к регистру | Уникальный символьный ключ терминала. Устанавливается Т‑Кассой. |
Success URL | 250 символов, чувствительно к регистру | URL на веб-сайте мерчанта, куда будет переведен клиент в случае успешной оплаты • true — платеж завершился успешно; • false — платеж не завершился. * |
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 символов, чувствительно к регистру | Используется для подписи запросов/ответов. Является секретной информацией, известной только мерчанту и Т‑Кассе. Пароль находится в личном кабинете мерчанта. |
Отправлять нотификацию на FinishAuthorize | Да/Нет | Определяет, будет ли отправлена нотификация на выполнение метода FinishAuthorize. По умолчанию — да. |
Отправлять нотификацию на Completed | Да/Нет | Определяет, будет ли отправлена нотификация на выполнение метода AttachCard. По умолчанию — да. |
Отправлять нотификацию на Reversed | Да/Нет | Определяет, будет ли отправлена нотификация на выполнение метода Cancel. По умолчанию — да. |
* В URL можно указать нужные параметры в виде ${<параметр>}, которые будут переданы на URL через метод GET.
Перед выполнением запроса MAPI проверяет, можно ли доверять его инициатору. Для этого сервер проверяет подпись запроса. В MAPI используется механизм подписи с помощью токена. Мерчант должен добавлять токен к каждому запросу, где это требуется.
В описании входных параметров для каждого метода мы указали, нужно подписывать запрос или нет. Токен формируется на основании тех полей, которые есть в запросе, поэтому токены для каждого запроса уникальные и никогда не совпадают.
Токен в MAPI — это строка, в которой мерчант зашифровал данные своего запроса с помощью пароля. Для создания токена мерчант использует пароль из личного кабинета мерчанта.
Пример процесса шифрования тела запроса для метода Init:
{
"TerminalKey": "MerchantTerminalKey",
"Amount": 19200,
"OrderId": "21090",
"Description": "Подарочная карта на 1000 рублей",
"Token": "68711168852240a2f34b6a8b19d2cfbd296c7d2a6dff8b23eda6278985959346",
"DATA": {
"Phone": "+71234567890",
"Email": "a@test.com"
},
"Receipt": {
"Email": "a@test.ru",
"Phone": "+79031234567",
"Taxation": "osn",
"Items": [
{
"Name": "Наименование товара 1",
"Price": 10000,
"Quantity": 1,
"Amount": 10000,
"Tax": "vat10",
"Ean13": "303130323930303030630333435"
},
{
"Name": "Наименование товара 2",
"Price": 3500,
"Quantity": 2,
"Amount": 7000,
"Tax": "vat20"
},
{
"Name": "Наименование товара 3",
"Price": 550,
"Quantity": 4,
"Amount": 4200,
"Tax": "vat10"
}
]
}
}
Чтобы зашифровать данные запроса, мерчанту нужно:
TerminalKey
, Amount
, OrderId
, Description
и исключен объект Receipt
и DATA
.[{"TerminalKey": "MerchantTerminalKey"},{"Amount": "19200"},{"OrderId": "21090"},{"Description": "Подарочная карта на 1000 рублей"}]
Password
, Значение пароля}. Пароль можно найти в личном кабинете мерчанта.[{"TerminalKey": "MerchantTerminalKey"},{"Amount": "19200"},{"OrderId": "21090"},{"Description": "Подарочная карта на 1000 рублей"},{"Password": "usaf8fw8fsw21g"}]
[{"Amount": "19200"},{"Description": "Подарочная карта на 1000 рублей"},{"OrderId": "21090"},{"Password": "usaf8fw8fsw21g"},{"TerminalKey": "MerchantTerminalKey"}]
"19200Подарочная карта на 1000 рублей21090usaf8fw8fsw21gMerchantTerminalKey"
"0024a00af7c350a3a67ca168ce06502aa72772456662e38696d48b56ee9c97d9"
Token
в тело запроса и отправить запрос.{
"TerminalKey": "MerchantTerminalKey",
"Amount": 19200,
"OrderId": "21090",
"Description": "Подарочная карта на 1000 рублей",
"DATA": {
"Phone": "+71234567890",
"Email": "a@test.com"
},
"Receipt": {
"Email": "a@test.ru",
"Phone": "+79031234567",
"Taxation": "osn",
"Items": [
{
"Name": "Наименование товара 1",
"Price": 10000,
"Quantity": 1,
"Amount": 10000,
"Tax": "vat10",
"Ean13": "303130323930303030630333435"
},
{
"Name": "Наименование товара 2",
"Price": 20000,
"Quantity": 2,
"Amount": 40000,
"Tax": "vat20"
},
{
"Name": "Наименование товара 3",
"Price": 30000,
"Quantity": 3,
"Amount": 90000,
"Tax": "vat10"
}
]
},
"Token": "0024a00af7c350a3a67ca168ce06502aa72772456662e38696d48b56ee9c97d9"
}
Проверить корректность формирования токена можно через сервис https://tokentcs.web.app.
Информацию о корректности токена также можно проверить в личном кабинете интернет-эквайринга в разделе Операции. Выберите нужный заказ → Дополнительная информация о заказе → поле inittokenisvalid. Если значение в этом поле
true
— токен валидный,false
— некорректный.
Прием платежей происходит с помощью вызова методов — параметры передаются через метод POST в формате JSON. Все методы и передаваемые параметры чувствительны к регистру.
Для нашего интернет-эквайринга оплата проходит только в рублях.
Если мерчанту нужна оплата в валюте, он самостоятельно реализовывает логику конвертации суммы в запросе на своей стороне.
Для POST-запроса в заголовке должен быть Content Type: application/json
.
Основная сущность в интернет-эквайринге Т‑Кассы — платеж. В зависимости от настроек терминала, платеж может идти по двум сценариям:
Настроить способ приема на терминале можно в личном кабинете мерчанта или передать нужный тип в параметре
PayType
при вызове метода Init.
Чтобы создать платеж, мерчант должен инициировать его через метод Init — передать сумму платежа и номер заказа.
При вызове метода Init в объекте DATA
в атрибуте OperationInitiatorType
нужно передавать признак
инициатора операции. В ответ MAPI создаст новый платеж в статусе NEW
и вернёт его идентификатор в параметре PaymentId
.
После этого мерчант вызывает метод Check3DSVersion, в котором передает
зашифрованные карточные данные клиента и PaymentId
. Это нужно для проверки версии протокола 3D-Secure по карте. Она
может быть версии 1.0 или 2.0.
Если в ответе метода Check3DSVersion есть параметр ThreeDSMethodURL
,
браузер клиента должен вызывать ресурс, адрес которого пришел в параметре ThreeDSMethodURL
. В запросе нужно передать
строковый параметр threeDSMethodData
. Эта строка — закодированный в формате base64
JSON-объект с параметрами:
Название параметра | Тип данных | Описание |
---|---|---|
threeDSMethodNotificationURL |
string | Обратный адрес, на который будет отправлен запрос после прохождения 3DS Method . |
threeDSServerTransID |
string | Идентификатор транзакции из ответа метода Check3DSVersion. |
Браузер должен вызвать 3DS Method
в скрытом iframe и передать данные в формате x-www-form-urlencoded
.
Пример запроса на ThreeDSMethodURL
:
<body onload="document.form.submit()">
<form name="form" action="{ThreeDSMethodURL}" method="post" >
<input type="hidden" name="threeDSMethodData" value="eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjU2ZTcxMmE1LTE5MGEtNDU4OC05MWJjLWUwODYyNmU3N2M0NCIsInRocmVlRFNNZXRob2ROb3RpZmljYXRpb25VUkwiOiJodHRwczovL3Jlc3QtYXBpLXRlc3QudGlua29mZi5ydS92Mi9Db21wbGV0ZTNEU01ldGhvZHYyIn0">
</form>
</body>
Пример декодированного значения threeDSMethodData
:
{
"threeDSServerTransID":"56e712a5-190a-4588-91bc-e08626e77c44",
"threeDSMethodNotificationURL":"https://rest-api-test.tinkoff.ru/v2/>Complete3DSMethodv2"
}
За проведение платежа отвечает метод FinishAuthorize. Через него мерчант передает в MAPI карточные данные клиента, продолжая обработку платежа.
Если платеж:
В ответ MAPI вернет один из статусов:
Статус | Описание | Доступные действия |
---|---|---|
AUTH_FAIL |
Неуспешная авторизация | Провести платеж заново |
REJECTED |
Платеж отклонен | Провести платеж заново |
CONFIRMED |
Успешный одностадийный платеж | - |
AUTHORIZED |
Успешный двухстадийный платеж | Подтвердить платеж |
3DS_CHECKING |
Требуется подтверждение платежа по 3D-Secure |
|
Если по платежу не нужно проходить подтверждение 3DS, в ответе FinishAuthorize MAPI вернет один из трех конечных статусов платежа:
CONFIRMED
— при одностадийном платеже;AUTHORIZED
— при двухстадийном платеже;REJECTED
— при отказе в проведении платежа.Если в ответе метода FinishAuthorize вернулся статус
3DS_CHECKING
— значит, нужно пройти проверку 3D-Secure. Для этого мерчант должен сформировать
запрос в сервис аутентификации банка, выпустившего карту. Адрес сервиса возвращается в ответе FinishAuthorize в
параметре ACSUrl
. Вместе с этим нужно перенаправить клиента для прохождения 3DS на эту же страницу — ACSUrl
.
В заголовке запроса нужно передать параметр Content-Type
со значением application/x-www-form-urlencoded
.
Набор параметров в теле запросе зависит от версии протокола 3DS по карте.
Проводить тестовые платежи можно только на тестовом окружении.
Если версия 3DS — 1.0, в запросе передаются параметры:
Название параметра | Описание |
---|---|
MD |
Информация для идентификации платежной сессии на стороне торговой точки. Возвращается в ответе метода FinishAuthorize. |
PaReq |
Запрос на аутентификацию плательщика, который содержит разные детали транзакции. Возвращается в ответе метода FinishAuthorize. |
TermURL |
Адрес перенаправления после аутентификации 3DS. Должен содержать ссылку на обработчик на стороне мерчанта, принимающий результаты прохождения 3-D Secure. |
Если версия 3DS — 2.0, в запросе передаются параметры в зависимости от типа устройства клиента. Тип устройства передается
в запросе FinishAuthorize в параметре deviceChannel
. Возможны два
варианта — браузер (BRW, код 02
) и приложение (APP, код 01
).
Параметры для браузера:
Название параметра | Тип данных | Описание |
---|---|---|
creq |
string | JSON с параметрами threeDSServerTransID , acsTransID ,challengeWindowSize , messageType , messageVersion , закодированный в base64 . |
Строка creq
для браузера формируется из следующих параметров:
Название параметра | Тип данных | Описание |
---|---|---|
threeDSServerTransID |
string | Идентификатор транзакции из ответа метода FinishAuthorize. |
acsTransID |
string | Идентификатор транзакции, присвоенный ACS, полученный из ответа метода FinishAuthorize. |
challengeWindowSize |
string | Размер экрана, на котором открыта страница ACS. Допустимые значения: |
messageType |
string | Передается фиксированное значение CReq . |
messageVersion |
string | Версия 3DS, полученная из ответа метода Check3DSVersion. |
Параметры для приложения:
Название параметра | Тип данных | Описание |
---|---|---|
creq |
string | JWE object с параметрами threeDSServerTransID , acsTransID , messageType , messageVersion , sdkTransID , sdkCounterStoA , закодированный в PS256 . |
Строка creq
для приложения формируется из следующих параметров:
Название параметра | Тип данных | Описание |
---|---|---|
threeDSServerTransID |
string | Идентификатор транзакции из ответа метода FinishAuthorize. |
acsTransID |
string | Идентификатор транзакции, присвоенный ACS, полученный из ответа метода FinishAuthorize. |
messageType |
string | Передается фиксированное значение CReq . |
messageVersion |
string | Версия 3DS, полученная из ответа метода Check3DSVersion. |
sdkTransID |
string | Уникальный идентификатор транзакции, назначенный 3DS SDK для идентификации одной транзакции, полученный из ответа метода FinishAuthorize. |
sdkCounterStoA |
string | Внутренний счетчик 3DS SDK внутри ACS. Поддерживаемые значения: 000–255. |
Когда сервис аутентификации банка, который выпустил карту, прислал результат прохождения 3D-Secure, мерчант должен передать эту информацию в MAPI. В зависимости от версии протокола 3DS нужно вызвать один из методов:
Чтобы создать платеж, мерчант должен инициировать его через метод Init — передать сумму платежа и номер заказа.
При успешном прохождении запроса в ответе метода Init вернется параметр PaymentURL
, на который нужно переадресовать клиента.
При переходе на PaymentURL
клиенту откроется платежная форма Т‑Кассы, где нужно ввести реквизиты карты, а после этого — этап прохождения 3DS.
Методы Authorize и FinishAuthorize вызываются системами Т‑Кассы при переадресации клиента на PaymentURL — параметр возвращается в ответе метода Init. Актуально для мерчантов, которые используют платежную форму Т-Банка.
При вызове метода Init в объекте DATA
в атрибуте OperationInitiatorType
нужно передавать признак
Вызывается автоматически при переадресации клиента на страницу PaymentURL
, которая возвращается в ответе метода Init.
Статус платежа выставляется в FORM_SHOWED
.
Подтверждает инициированный платеж передачей карточных данных и списывает деньги с карты клиента.
Вызывается формой оплаты по адресу PaymentURL
, когда клиент вводит данные карты и нажимает кнопку Оплатить.
Статус перевода:
CONFIRMED
— при успешном сценарии;REJECTED
— при неуспешном.Клиент переадресовывается на:
Success URL
— при успешном переводе;Fail URL
— при неуспешном переводе.Если платёж завершился успешно, клиент будет перенаправлен на страницу Success URL
из настроек терминала.
Двухстадийный платеж включает два этапа:
Когда клиент оплачивает заказ, деньги за покупку замораживаются (холдируются) на его счете до семи дней. Если за это время клиент:
Если мерчант не подтвердит платеж вовремя, он может столкнуться с негативом от клиента — например, когда клиент может не вспомнить, за что списались деньги, и обратиться в свой банк для возврата средств.
Холдирование денег на карте покупателя зависит от его банка-эмитента и не всегда равно семи дням. Например, покупатель оплатил товар, и его банк заморозил средства на карте на 3 дня. 3 дня прошли, деньги разморозились и стали доступны на счете. Спустя день вы подтверждаете платеж, списывая сумму покупки. Фактически оплата прошла один раз.
Техническая реализация двухстадийных платежей
Если терминал настроен на прием двухстадийных платежей, после вызова метода FinishAuthorize деньги блокируются на карте
клиента, и платеж переходит в статус AUTHORIZED
.
Когда мерчант захочет списать деньги, он должен вызвать метод Confirm и передать PaymentId
в
запросе. После успешного списания платеж перейдет в статус CONFIRMED
. Если мерчант хочет отменить заказ — например, если товар закончился —
нужно вызвать метод Cancel.
Мерчант может сохранять платежные данные клиента и использовать их для повторных списаний. Такие платежи называются рекуррентными.
В этом случае клиент должен совершить хотя бы один платеж, который был настроен как рекуррентный. Для этого мерчанту нужно передать
параметр Recurrent
в методе Init.
После успешной оплаты MAPI отправит мерчанту уведомление об изменении статуса платежа на AUTHORIZED
или CONFIRMED
и
вернет параметр RebillId
. Следующие платежи этого клиента будут рекуррентными, если мерчант вызовет метод Init,
а затем без переадресации на PaymentURL
вызовет метод Charge и передаст параметр RebillId
.
Метод Charge работает как по одностадийной, так и по двухстадийной схеме оплаты. Чтобы перейти на двухстадийную схему, нужно переключить терминал в личном кабинете и написать на acq_help@tbank.ru с просьбой переключить схему рекуррентов, либо в последующих платежах передавать в методе Init параметр
Paytype
со значениемT
.
ВАЖНО: Параметры, которые передаются в методе Init приоритетнее установленных настроек на треминале.
Мерчант может отменить успешный платеж. В этом случае деньги вернутся на карту, которую клиент указывал при совершении платежа.
Успешный платеж — это платеж, который находится в статусе AUTHORIZED
или CONFIRMED
. Если мерчант отменяет платеж в статусе:
AUTHORIZED
— заблокированная сумма размораживается на карте клиента.CONFIRMED
— деньги списываются со счета мерчанта и возвращаются на карту клиента.Возврат может быть частичный или полный. Частичный возврат — отмена не на всю сумму платежа, полный — отмена на всю сумму платежа.
Чтобы отменить платеж, мерчант должен вызвать метод Cancel и в запросе передать идентификатор платежа — PaymentId
.
По умолчанию MAPI сделает полный возврат. Если нужна частичная отмена, в запросе в параметре Amount
мерчант передает сумму,
которая вернется клиенту.
Если при работе используется онлайн-касса, возврат можно делать только по позициям в чеке. Если нужно вернуть другую сумму,
сначала отключите онлайн-кассу, а затем выполните возврат через метод Cancel, передав в нем нужную сумму в параметре Amount
Если у клиента подключена онлайн-касса, в методе Cancel передаются:
Amount
— сумма к частичному возврату или анхолду. Формула расчета: Price * Quantity
= Amount
.Receipt
— параметры чека.Например, товар стоит 500.00 рублей, и нужно вернуть 50.00 рублей. В Cancel нужно передать Amount
= 5000
:
{
"Name": "Item12",
"Price": 50000,
"Quantity": 0.1,
"Amount": 5000,
"Tax": "none",
"PaymentObject": "service"
}
Если в чеке несколько товаров, нужно сделать то же самое для каждого из них.
Без активной онлайн-кассы достаточно передать нужную сумму в Amount
через метод Cancel. При частичном анхолде
остаток также остается в резерве, и его нужно подтвердить.
Мерчант может получить информацию об основных параметрах платежа в любой момент.
Если нужно получить данные по конкретному платежу, мерчанту нужно вызвать метод GetState
и передать PaymentId
в запросе.
Если по одному заказу было несколько платежей, получить историю платежей и их текущий статус можно через метод CheckOrder
— в запросе нужно передать OrderId
.
OrderId
не является уникальным параметром. Рекомендуем сверять дополнительные данные заказа —PaymentId
иAmount
.
В процессе обработки платеж меняет свое состояние. Основные статусы и условия перехода в них:
Статус | Правило перехода |
---|---|
NEW |
MAPI получил запрос Init. После этого он создает новый платеж со статусом NEW и возвращает его идентификатор в параметре PaymentId , а также ссылку на платежную форму в параметре PaymentURL . |
FORM_SHOWED |
Мерчант перенаправил клиента на страницу платежной формы PaymentURL и страница загрузилась у клиента в браузере. |
AUTHORIZING |
Платеж обрабатывается MAPI и платежной системой. |
3DS_CHECKING |
Платеж проходит проверку 3D-Secure. |
3DS_CHECKED |
Платеж успешно прошел проверку 3D-Secure. |
AUTHORIZED |
Платеж авторизован, деньги заблокированы на карте клиента. |
CONFIRMING |
Подтверждение платежа обрабатывается MAPI и платежной системой. |
CONFIRMED |
Платеж подтвержден, деньги списаны с карты клиента. |
REVERSING |
Мерчант запросил отмену авторизованного, но еще неподтвержденного платежа. Возврат обрабатывается MAPI и платежной системой. |
PARTIAL_REVERSED |
Частичный возврат по авторизованному платежу завершился успешно. |
REVERSED |
Полный возврат по авторизованному платежу завершился успешно. |
REFUNDING |
Мерчант запросил отмену подтвержденного платежа. Возврат обрабатывается MAPI и платежной системой. |
PARTIAL_REFUNDED |
Частичный возврат по подтвержденному платежу завершился успешно. |
REFUNDED |
Полный возврат по подтвержденному платежу завершился успешно. |
CANCELED |
Мерчант отменил платеж. |
DEADLINE_EXPIRED |
1. Клиент не завершил платеж в срок жизни ссылки на платежную форму PaymentURL . Этот срок мерчант передает в методе Init в параметре RedirectDueDate . 2. Платеж не прошел проверку 3D-Secure в срок. |
REJECTED |
Банк отклонил платеж. |
AUTH_FAIL |
Платеж завершился ошибкой или не прошел проверку 3D-Secure. |
Метод инициирует платежную сессию.
TerminalKey required | string <= 20 characters Идентификатор терминала. |
Amount required | number <= 10 characters
|
OrderId required | string <= 36 characters Идентификатор заказа в системе мерчанта. Должен быть уникальным для каждой операции. |
Token required | string Подпись запроса. |
Description | string <= 140 characters Описание заказа. Значение параметра будет отображено на платежной форме. Для привязки и одновременной оплаты по СБП поле обязательное. При оплате через СБП эта информация отобразится в мобильном банке клиента. |
CustomerKey | string <= 36 characters Идентификатор клиента в системе мерчанта.
|
Recurrent | string <= 1 characters Признак родительского рекуррентного платежа. Обязателен для регистрации автоплатежа. Если передается и установлен в Значение зависит от атрибутов:
Подробнее — в описании методов Рекуррентный платёж и Инициализация платежа. |
PayType | string Enum: "O" "T" Определяет тип проведения платежа — двухстадийная или одностадийная оплата:
Если параметр передан — используется его значение, если нет — значение из настроек терминала. |
Language | string <= 2 characters Язык платежной формы:
Если не передан, форма откроется на русском языке. |
NotificationURL | string <uri> URL на веб-сайте мерчанта, куда будет отправлен POST-запрос о статусе выполнения вызываемых методов — настраивается в личном кабинете. Если параметр:
|
SuccessURL | string <uri> URL на веб-сайте мерчанта, куда будет переведен клиент в случае успешной оплаты — настраивается в личном кабинете. Если параметр:
|
FailURL | string <uri> URL на веб-сайте мерчанта, куда будет переведен клиент в случае неуспешной оплаты — настраивается в личном кабинете. Если параметр:
|
RedirectDueDate | any <date-time> Cрок жизни ссылки или динамического QR-кода
СБП, если выбран этот способ оплаты.
Пример даты: 2016-08-31T12:28:00+03:00. Если не передан, принимает значение 24 часа для платежа и 30 дней для счета. Выставление счета через личный кабинет
|
Common (object) or T-Pay (object) or LongPay (object) JSON-объект, который позволяет передавать дополнительные параметры по операции и задавать определенные настройки в
формате Максимальная длина для каждого передаваемого параметра:
Максимальное количество пар
Например, если указать Для МСС 4814 обязательно передать значение в параметре
Для МСС 6051 и 6050 обязательно передавать параметр Пример:
Рекомендации для заполнения поля
Рекомендации для заполнения поля
Рекомендации для заполнения поля
Подробная таблица — передача признака инициатора операции Если передавать значения атрибутов, которые не соответствуют таблице, MAPI вернет ошибку 1126 —
несопоставимые значения | |
Receipt_FFD_105 (object) or Receipt_FFD_12 (object) JSON-объект с данными чека. Обязателен, если подключена онлайн-касса. | |
Array of objects (Shops) JSON-объект с данными маркетплейса. Обязателен для маркетплейсов. | |
Descriptor | string Динамический дескриптор точки. |
{- "TerminalKey": "TinkoffBankTest",
- "Amount": 140000,
- "OrderId": "21090",
- "Description": "Подарочная карта на 1000 рублей",
- "Token": "68711168852240a2f34b6a8b19d2cfbd296c7d2a6dff8b23eda6278985959346",
- "DATA": {
- "Phone": "+71234567890",
- "Email": "a@test.com"
}, - "Receipt": {
- "Email": "a@test.ru",
- "Phone": "+79031234567",
- "Taxation": "osn",
- "Items": [
- {
- "Name": "Наименование товара 1",
- "Price": 10000,
- "Quantity": 1,
- "Amount": 10000,
- "Tax": "vat10",
- "Ean13": "303130323930303030630333435"
}, - {
- "Name": "Наименование товара 2",
- "Price": 20000,
- "Quantity": 2,
- "Amount": 40000,
- "Tax": "vat20"
}, - {
- "Name": "Наименование товара 3",
- "Price": 30000,
- "Quantity": 3,
- "Amount": 90000,
- "Tax": "vat10"
}
]
}
}
{- "Success": true,
- "ErrorCode": "0",
- "TerminalKey": "TinkoffBankTest",
- "Status": "NEW",
- "PaymentId": "3093639567",
- "OrderId": "21090",
- "Amount": 140000,
}
Для мерчантов, использующих собственную платежную форму
Проверяет поддерживаемую версию 3DS-протокола по карточным данным из входящих
параметров.
При использовании второй версии можно получить данные для дополнительного метода 3DS Method
, который позволяет
эмитенту собрать данные браузера
клиента. Это может быть полезно при принятии решения в пользу Frictionless Flow —
аутентификации клиента без редиректа на страницу ACS.
PaymentId required | string <= 20 characters Идентификатор платежа в системе Т‑Кассы. |
TerminalKey required | string <= 20 characters Идентификатор терминала, выдается мерчанту Т‑Кассой. |
CardData required | string Зашифрованные данные карты в формате:
|
Token required | string Подпись запроса. |
{- "PaymentId": 13660,
- "TerminalKey": "testRegressBank",
- "CardData": "U5jDbwqOVx+2vDApxe/rfACMt+rfWXzPdJ8ZXxNFVIiZaLZrOW72bGe9cKZdIDnekW0nqm88YxRD↵jyfa5Ru0kY5cQV alU+juS1u1zpamSDtaGFeb8sRZfhj72yGw+io+qHGSBeorcfgoKStyKGuBPWfG↵d0PLHuyBE6QgZyIAM1XfdmNlV0UAxOnkTGDsskL pIt3AWhw2e8KOar0vwbgCTDjznDB1/DLgOW01↵Aj/bXyLJoG1BkOrPBm9JURs+f+uyFae0hkRicNKNgXoN5pJTSQxOEauOi6ylsVJ B3WK5MNYXtj6x↵GlxcmTk/LD9kvHcjTeojcAlDzRZ87GdWeY8wgg==",
- "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e"
}
{- "Version": "2.1.0",
- "TdsServerTransID": "17d3791b-5cfa-4318-bc23-3d949e8c4b7e",
- "PaymentSystem": "mir",
- "Success": true,
- "ErrorCode": "0",
- "Message": "None",
- "Details": "None"
}
Для мерчантов, использующих собственную платежную форму
Метод подтверждает платеж передачей реквизитов. При одностадийной оплате — списывает средства
с карты клиента, при двухстадийной — блокирует указанную сумму. Используется, если у площадки есть сертификация PCI DSS и
собственная платежная форма.
TerminalKey required | string Идентификатор терминала. | ||||||||||||||||||||||||||||
PaymentId required | string <= 20 characters Уникальный идентификатор транзакции в системе Т‑Кассы. | ||||||||||||||||||||||||||||
Token required | string Подпись запроса. | ||||||||||||||||||||||||||||
IP | string IP-адрес клиента. Обязательный параметр для 3DS второй версии. DS платежной системы требует передавать данный адрес в полном формате, без каких-либо сокращений — 8 групп по 4 символа. Этот формат регламентируется на уровне
спецификации EMVCo. Пример правильного адреса — Пример неправильного адреса — | ||||||||||||||||||||||||||||
SendEmail | boolean
| ||||||||||||||||||||||||||||
Source | string Enum: "cards" "beeline" "mts" "tele2" "megafon" "einvoicing" "webmoney" Источник платежа.
Значение параметра зависит от параметра
| ||||||||||||||||||||||||||||
3DSv2 (object) or object JSON-объект, который содержит дополнительные
параметры в виде Максимальная длина для каждого передаваемого параметра:
Максимальное количество пар | |||||||||||||||||||||||||||||
InfoEmail | string <email> Электронная почта для отправки информации об оплате.
Обязателен при передаче | ||||||||||||||||||||||||||||
EncryptedPaymentData | string Данные карты. Используется и является обязательным только для ApplePay или GooglePay. | ||||||||||||||||||||||||||||
CardData required | string Объект
Пример значения элемента формы
Для MirPay, если интеграция с НСПК для получения платежного токена:
Если мерчант интегрируется только с банком для проведения платежа по MirPay,
метод не вызывается. Эквайер самостоятельно получает платежный токен и инициирует авторизацию
вместо мерчанта. При получении CAVV в CardData оплата будет проводиться как оплата токеном — иначе прохождение 3DS будет регулироваться стандартными настройками треминала или платежа. Не используется и не является обязательным, если передается | ||||||||||||||||||||||||||||
Amount | number <= 10 characters Сумма в копейках. | ||||||||||||||||||||||||||||
deviceChannel | string Канал устройства. Поддерживаются следующие каналы:
| ||||||||||||||||||||||||||||
Route | string Enum: "ACQ" "MC" "EINV" "WM" Способ платежа. Обязательный для ApplePay или GooglePay. |
{- "TerminalKey": "TinkoffBankTest",
- "PaymentId": "700001702044",
- "Token": "f5a3be479324a6d3a4d9efa0d02880b77d04a91758deddcbd9e752a6df97cab5",
- "IP": "2011:0db8:85a3:0101:0101:8a2e:0370:7334",
- "SendEmail": true,
- "Source": "cards",
- "DATA": {
- "threeDSCompInd": "Y",
- "language": "RU",
- "timezone": "-300",
- "screen_height": "1024",
- "screen_width": "967",
- "cresCallbackUrl": "www.callbackurl.ru",
- "colorDepth": "48",
- "javaEnabled": "false"
}, - "InfoEmail": "qwerty@test.com",
- "EncryptedPaymentData": "string",
- "CardData": "eyJzaWduYXR1cmUiOiJNRVVDSVFEdjNJS1A5WG9nWml4RytUUm9zZWFDK0RGd3RKd2FtMHVEcm91RUVGZVB6Z0lnYXBFbHhxQ3AwQWtZcVVmTFVMaVNhUjBKWkVQNmg 4THFqYks5YkJKQnM5d1x1MDAzZCIsInByb3RvY29sVmVyc2lvbiI6IkVDdjEiLCJzaWduZWRNZXNzYWdlIjoie1wiZW5jcnlwdGVkTWVzc2FnZVwiOlwiQW11dm5OYUIralBsa3VKTitrMUZLSDZFcm1VK2lTY052 L05rR3FFaXIxOHZmSWxkVFJ5L2U4cW5zMXkyanFtcm1acU1JSWNYMUhyTHBxRURpaXkvS3B6SUhNZFllcXRkSVVNOU1tRjNpejU2d2NTZUVVaXU2ODI3QThGcitaYm8xRWtWRjY1TUxRYVY3NlBOUFRndH UvQ1BodW5HUk0rN25KdVhDczVtbkVvOHFma0RNVk8xWktGWDQ4TnVEL2FKcDJQdVVIY2puSnBTZ0pTSDB4U21YSnAzU1MreXFDNm54N254WUEwN2h4YjYvSnp2R2s3ZExDU2hWWGU1Z2haUjNDaFQyV W8rRnpXTWJRRGZtSjBLQW9kc2VlR0xaaitqMzVqOUlKMkhJRFhIUUZZMWNuTW9YVUVoTjgvdEkvRkpqRnJiYVdFRkIzRDZwOFUzT2tkUmVaNHAyYi8yYURNZXVxR1ozSUtjc3R0R2lKMFhQQVhhZXYyQU8 o1M3RRQXVqQXRYdFlaekNTVjVBVXdXZS85T1VcXHUwMDNkXCJ9In0=",
- "Amount": 10000,
- "deviceChannel": "02",
- "Route": "ACQ"
}
{- "TerminalKey": "TinkoffBankTest",
- "Amount": 100000,
- "OrderId": "21050",
- "Success": true,
- "Status": "NEW",
- "PaymentId": "13660",
- "ErrorCode": "0",
- "Message": "Неверные параметры",
- "Details": "0",
- "RebillId": "21813157",
- "CardId": "string"
}
Метод возвращает статус платежа.
TerminalKey required | string <= 20 characters Идентификатор терминала. |
PaymentId required | string <= 20 characters Идентификатор платежа в системе Т‑Кассы. |
Token required | string Подпись запроса. |
IP | string IP-адрес клиента. |
{- "TerminalKey": "TinkoffBankTest",
- "PaymentId": "13660",
- "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc7b96",
- "IP": "192.168.0.52"
}
{- "TerminalKey": "TinkoffBankTest",
- "Amount": 100000,
- "OrderId": "21050",
- "Success": true,
- "Status": "NEW",
- "PaymentId": "13660",
- "ErrorCode": "0",
- "Message": "OK",
- "Details": "0",
- "Params": [
- {
- "Route": "ТСВ",
- "Source": "Installment",
- "CreditAmount": 100000
}
]
}
Метод возвращает статус заказа.
TerminalKey required | string Идентификатор терминала, выдается мерчанту Т‑Кассой. |
OrderId required | string Номер заказа в системе мерчанта. Не является уникальным идентификатором. |
Token required | string Подпись запроса |
{- "TerminalKey": "TinkoffBankTest",
- "OrderId": "21057",
- "Token": "4c4c36adf9936b011879fa26f60759e7b47e57f7968283129b0ae9ac457486ab"
}
{- "TerminalKey": "TinkoffBankTest",
- "OrderId": "21057",
- "Success": true,
- "ErrorCode": "0",
- "Message": "OK",
- "Details": "None",
- "Payments": [
- {
- "PaymentId": 124671934,
- "Amount": 13660,
- "Status": "NEW",
- "RRN": "12345678",
- "Success": "true",
- "ErrorCode": 0,
- "Message": "None"
}
]
}
Справку по конкретной операции можно получить на:
PASSWORD
и TERMINAL_KEY
.
TerminalKey required | string Идентификатор терминала, выдается мерчанту Т‑Кассой. |
CallbackUrl required | string URL сервиса получения справок. |
PaymentIdList required | Array of numbers JSON-массив, содержащий в себе перечень |
Token required | string Подпись запроса. |
{- "TerminalKey": "TinkoffBankTest",
- "PaymentIdList": [
- 1201206437,
- 1201206442
], - "Token": "f2fdd7fec8225872590e1558b7ea258c75df8f300d808006c41ab540dd7514d9"
}
{- "Success": true,
- "ErrorCode": 0,
- "Message": "OK",
- "PaymentIdList": [
- {
- "Success": true,
- "ErrorCode": 0,
- "Message": "Запрос на отправку документа принят",
- "PaymentId": "1201206442"
}
]
}
Метод для списания заблокированных денежных средств. Используется при двухстадийном проведении платежа. Применим
только к платежам в статусе AUTHORIZED
. Статус транзакции перед разблокировкой
— CONFIRMING
. Сумма списания может быть меньше или равна сумме авторизации.
TerminalKey required | string Идентификатор терминала, выдается мерчанту Т‑Кассой. |
PaymentId required | string <= 20 characters Идентификатор платежа в системе Т‑Кассы. |
Token required | string Подпись запроса — хэш |
IP | string IP-адрес клиента. |
Amount | number Сумма в копейках. Если не передан, используется |
Receipt_FFD_12 (object) or Receipt_FFD_105 (object) JSON-объект с данными чека. Обязателен, если подключена онлайн-касса. | |
Array of objects (Shops) Обязательный для маркетплейсов. JSON-объект с данными маркетплейса. | |
Route | string Enum: "TCB" "BNPL" Способ платежа. |
Source | string Enum: "installment" "BNPL" Источник платежа. |
{- "TerminalKey": "TinkoffBankTest",
- "PaymentId": "2304882",
- "Token": "c0ad1dfc4e94ed44715c5ed0e84f8ec439695b9ac219a7a19555a075a3c3ed24",
- "IP": "192.168.255.255",
- "Amount": 19200,
- "Receipt": {
- "FfdVersion": "string",
- "ClientInfo": {
- "Birthdate": "string",
- "Citizenship": "string",
- "DocumentСode": "21",
- "DocumentData": "string",
- "Address": "string"
}, - "Taxation": "osn",
- "Email": "a@test.ru",
- "Phone": "+79031234567",
- "Customer": "78894325",
- "CustomerInn": "788621292",
- "Items": [
- {
- "AgentData": {
- "AgentSign": "paying_agent",
- "OperationName": "Позиция чека",
- "Phones": [
- "+790912312398"
], - "ReceiverPhones": [
- "+79221210697",
- "+79098561231"
], - "TransferPhones": [
- "+79221210697"
], - "OperatorName": "Tinkoff",
- "OperatorAddress": "г. Тольятти",
- "OperatorInn": "7710140679"
}, - "SupplierInfo": {
- "Phones": [
- "+79221210697",
- "+79098561231"
], - "Name": "ООО Вендор товара",
- "Inn": "7710140679"
}, - "Name": "Наименование товара 1",
- "Price": 10000,
- "Quantity": 1,
- "Amount": 10000,
- "Tax": "vat10",
- "PaymentMethod": "full_payment",
- "PaymentObject": "goods_with_marking_code",
- "UserData": "Данные пользователя ext.test.qa@tinkoff.ru",
- "Excise": "12.2",
- "CountryCode": "056",
- "DeclarationNumber": "12345678901",
- "MeasurementUnit": "шт",
- "MarkProcessingMode": "string",
- "MarkCode": {
- "MarkCodeType": "EAN8",
- "Value": "12345678"
}, - "MarkQuantity": {
- "Numerator": 1,
- "Denominator": 2
}, - "SectoralItemProps": {
- "FederalId": "001",
- "Date": "21.11.2020",
- "Number": "123/43",
- "Value": "test value SectoralItemProps"
}
}
], - "Payments": {
- "Cash": 90000,
- "Electronic": 50000,
- "AdvancePayment": 0,
- "Credit": 0,
- "Provision": 0
}
}, - "Shops": [
- {
- "ShopCode": "700456",
- "Amount": 10000,
- "Name": "Товар",
- "Fee": "500"
}
], - "Route": "BNPL",
- "Source": "BNPL"
}
{- "TerminalKey": "TinkoffBankTest",
- "OrderId": "21057",
- "Success": true,
- "Status": "CONFIRMED",
- "PaymentId": "2304882",
- "ErrorCode": "0",
- "Message": "OK",
- "Details": "None",
- "Params": [
- {
- "Route": "ТСВ",
- "Source": "Installment",
- "CreditAmount": 100000
}
]
}
ВАЖНО! Тестовый терминал (DEMO) не поддерживает проверку 3DS. Для тестирования 3DS нужно использовать боевой терминал в связке с тестовой средой (https://rest-api-test.tinkoff.ru/v2)
Для мерчантов, использующих собственную платежную форму
Проверяет результаты прохождения 3-D Secure и при успешном прохождении подтверждает инициированный платеж. При использовании:
Формат запроса — x-www-form-urlencoded
.
После того, как мерчант получит ответ ACS с результатами прохождения 3-D Secure на TermUrl
, нужно
отправить запрос через метод Submit3DSAuthorization.
MD required | string Уникальный идентификатор транзакции в системе. Возвращается в ответе от ACS. |
PaRes required | string Шифрованная строка, содержащая результаты 3-D Secure аутентификации. Возвращается в ответе от ACS. |
PaymentId | string Уникальный идентификатор транзакции в системе Т‑Кассы. |
TerminalKey | string <= 20 characters Идентификатор терминала, выдается мерчанту Т‑Кассой. |
Token | string Подпись запроса. |
<body onload="document.form.submit()"> <form name="form" action="https://rest-api-test.tinkoff.ru/v2/Submit3DSAuthorization" method="post"> <input type="hidden" name="MD" value="2561504"> <input type="hidden" name="PaRes" value="eJxVUttygjAU/BWG1w4mXKXOMY5WOrVTrOOtl7cAqeJI1AAO+vVNFKrlaffkZM9mD9Crsq12ZCJPd7yrmy2sa4zHuyTlq66+mD8bvt4jMF8LxoYzFpeCEQhZntMV09JE3vC8Hx9j27A8LzEcN7aNCPu24VIrihKXetiPdAKT/pQdCNSDiJzTsgA1VCqKeE15QYDGh8FoTBy73fZtQDWFjInRkFi4+Uz82JbH1zJwmjEyHcwAXRDEu5IX4kQ8R/Y0BEqxJeui2HcQOlGesKolSkCqCuhmYFIqlEuVKk3IDL8uPwI3jDaBGZ4XeLxZVeFw5I7nX11AqgMSWjDpzPSxb/ma6XRct4Pl4y51oJkar5zLx1wx7NWI/t3BfQFkxkKuoHHfMGDVfseZugLoDwO6+X16UfHFhUyk/32OMH3vZ5+nYBu/2d4xcMTDsn04j19VqJcmpZjKYKT3q6QigJQMqveF6lVL9O8X+AWMIbbt"> <input type="hidden" name="PaymentId" value="10063"> <input type="hidden" name="TerminalKey" value="TinkoffBankTest"> <input type="hidden" name="Token" value="871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" > </form>
{- "TerminalKey": "TinkoffBankTest",
- "OrderId": "21050",
- "Success": true,
- "Status": "CONFIRMED",
- "PaymentId": "10063",
- "ErrorCode": "0",
- "Message": "string",
- "Details": "string"
}
Для мерчантов, использующих собственную платежную форму
Проверяет результаты прохождения 3-D Secure и при успешном прохождении подтверждает инициированный платеж. При использовании:
Формат запроса — x-www-form-urlencoded
.
После того, как мерчант получит ответ ACS с результатами прохождения 3-D Secure на cresCallbackUrl
, нужно
отправить запрос через метод Submit3DSAuthorizationV2.
PaymentId required | string Уникальный идентификатор транзакции в системе Т‑Кассы. |
TerminalKey required | string <= 20 characters Идентификатор терминала, выдается мерчанту Т‑Кассой. |
Token required | string Подпись запроса. |
<body onload="document.form.submit()"> <form name="form" action="https://rest-api-test.tinkoff.ru/v2/Submit3DSAuthorizationV2" method="post"> <input type="hidden" name="PaymentId" value="10063"> <input type="hidden" name="TerminalKey" value="TinkoffBankTest"> <input type="hidden" name="Token" value="871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6" > </form>
{- "OrderId": "21050",
- "TerminalKey": "TinkoffBankTest",
- "Status": "CONFIRMED",
- "PaymentId": "10063",
- "Success": true,
- "ErrorCode": "0",
- "Message": "string",
- "Details": "string"
}
Метод проводит рекуррентный (повторный) платеж — безакцептное списание денежных средств со счета банковской карты клиента.
Чтобы его использовать, клиент должен совершить хотя бы один платеж в пользу мерчанта, который должен быть указан как рекуррентный
(параметр Recurrent
методе Init), но фактически являющийся первичным.
После завершения оплаты в уведомлении на AUTHORIZED
или CONFIRMED
будет передан параметр RebillId
.
В дальнейшем для проведения рекуррентного платежа мерчант должен вызвать метод Init, указать нужную сумму для списания
в параметре Amount
, а затем без переадресации на PaymentURL
вызвать метод Charge для оплаты по тем же реквизитам
и передать параметр RebillId
, полученный при совершении первичного платежа.
Метод Charge работает по одностадийной и двухстадийной схеме оплаты. Чтобы перейти на двухстадийную схему, нужно переключить терминал в личном кабинете и написать на acq_help@tbank.ru с просьбой переключить схему рекуррентов.
По умолчанию метод Charge отключен. Чтобы его включить:
- на DEMO-терминале — напишите на acq_help@tbank.ru;
- на боевом терминале — обратитесь к своему персональному менеджеру.
При проведении рекуррентного платежа учитывайте взаимосвязь атрибута RebillId
метода Charge:
OperationInitiatorType
и Reccurent
метода Init;Допустимые сценарии взаимосвязи:
CIT/MIT | Тип операции | OperationInitiator в Init |
RebillId в Charge |
Recurrent в Init |
AFT-терминал | ECOM-терминал |
---|---|---|---|---|---|---|
CIT | Credential-Not-Captured | 0 | null | N | Разрешено | Разрешено |
CIT | Credential-Captured | 1 | null | Y | Разрешено | Разрешено |
CIT | Credential-on-File | 2 | not null | N | Запрещено | Разрешено |
MIT | Credential-on-File, Recurring | R | not null | N | Запрещено | Разрешено |
MIT | Credential-on-File, Installment | I | not null | N | Разрешено | Запрещено |
Если передавать значения атрибутов, которые не соответствуют значениям в таблице, MAPI вернет ошибку 1126
—
несопоставимые значения RebillId
или Recurrent
с переданным значением OperationInitiatorType
.
Recurrent=Y
и CustomerKey
. мерчантов без PCI DSS
— переадресуйте клиента на PaymentUrl
.AUTHORIZED
или CONFIRMED
будет передан параметр RebillId
.
Сохраните его.Recurrent
и CustomerKey
в этом случае не нужны. Вернется параметр PaymentId
— сохраните его.RebillId
из пункта 3 и PaymentId
из пункта 4.
При успешном сценарии операция перейдет в статус CONFIRMED
.Recurrent=Y
и CustomerKey
.мерчантов без PCI DSS
— переадресуйте клиента на PaymentUrl
.AUTHORIZED
или CONFIRMED
будет передан параметр RebillId
.
Сохраните его.Recurrent
и CustomerKey
в этом случае не нужны. Вернется параметр PaymentId
— сохраните его.RebillId
из пункта 3 и PaymentId
из пункта 4. TerminalKey required | string <= 20 characters Идентификатор терминала. |
PaymentId required | string <= 20 characters Уникальный идентификатор транзакции в системе Т‑Кассы. |
RebillId required | string Идентификатор рекуррентного платежа. Значение зависит от атрибутов:
Подробнее — в описаниях Рекуррентный платёж и Инициализация платежа |
Token required | string Подпись запроса. |
IP | string IP-адрес клиента. |
SendEmail | boolean
|
InfoEmail | string <email> Адрес почты клиента.
Обязателен при передаче |
{- "TerminalKey": "TinkoffBankTest",
- "PaymentId": "700001702044",
- "RebillId": "145919",
- "Token": "f5a3be479324a6d3a4d9efa0d02880b77d04a91758deddcbd9e752a6df97cab5",
- "IP": "2011:0db8:85a3:0101:0101:8a2e:0370:7334",
- "SendEmail": true,
- "InfoEmail": "customer@test.com"
}
{- "TerminalKey": "TinkoffBankTest",
- "Amount": 100000,
- "OrderId": "21050",
- "Success": true,
- "Status": "NEW",
- "PaymentId": "13660",
- "ErrorCode": "0",
- "Message": "string",
- "Details": "string"
}
Отменяет платежную сессию. В зависимости от статуса платежа, переводит его в следующие состояния:
NEW
— CANCELED
;AUTHORIZED
— PARTIAL_REVERSED
, если отмена не на полную сумму;AUTHORIZED
— REVERSED
, если отмена на полную сумму;CONFIRMED
— PARTIAL_REFUNDED
, если отмена не на полную сумму;CONFIRMED
— REFUNDED
, если отмена на полную сумму.При оплате в рассрочку платеж можно отменить только в статусе AUTHORIZED
.
При оплате «Долями» делается частичный или полный возврат, если операция в статусе CONFIRMED
или PARTIAL_REFUNDED
.
Если платеж находился в статусе AUTHORIZED
, холдирование средств на карте
клиента отменяется. При переходе из статуса CONFIRMED
денежные средства возвращаются на карту клиента.
TerminalKey required | string Идентификатор терминала, выдается мерчанту Т‑Кассой. |
PaymentId required | string Идентификатор платежа в системе Т‑Кассы. |
Token required | string Подпись запроса — хэш |
IP | string IP-адрес клиента. |
Amount | number Сумма в копейках. Если не передан, используется При отмене статуса |
Receipt_FFD_12 (object) or Receipt_FFD_105 (object) JSON-объект с данными чека. Обязателен, если подключена онлайн-касса. Если отмена делается только по части товаров, данные, переданные в этом запросе, могут отличаться данных, переданных в Init. При полной отмене структура чека не передается, при частичной — передаются товары, которые нужно отменить. | |
Array of objects (ShopsCancel) Обязательный для маркетплейсов. JSON-объект с данными маркетплейса. | |
QrMemberId | string Код банка в классификации СБП, в который нужно выполнить возврат. Смотрите параметр |
Route | string Enum: "TCB" "BNPL" Способ платежа. |
Source | string Enum: "installment" "BNPL" Источник платежа. |
ExternalRequestId | string <= 256 characters Идентификатор операции на стороне мерчанта. Параметр не работает для операций по СБП. Обязателен для операций «Долями» и в рассрочку.
|
{- "TerminalKey": "TinkoffBankTest",
- "PaymentId": "2304882",
- "Token": "c0ad1dfc4e94ed44715c5ed0e84f8ec439695b9ac219a7a19555a075a3c3ed24",
- "IP": "192.168.255.255",
- "Amount": 19200,
- "Receipt": {
- "FfdVersion": "string",
- "ClientInfo": {
- "Birthdate": "string",
- "Citizenship": "string",
- "DocumentСode": "21",
- "DocumentData": "string",
- "Address": "string"
}, - "Taxation": "osn",
- "Email": "a@test.ru",
- "Phone": "+79031234567",
- "Customer": "78894325",
- "CustomerInn": "788621292",
- "Items": [
- {
- "AgentData": {
- "AgentSign": "paying_agent",
- "OperationName": "Позиция чека",
- "Phones": [
- "+790912312398"
], - "ReceiverPhones": [
- "+79221210697",
- "+79098561231"
], - "TransferPhones": [
- "+79221210697"
], - "OperatorName": "Tinkoff",
- "OperatorAddress": "г. Тольятти",
- "OperatorInn": "7710140679"
}, - "SupplierInfo": {
- "Phones": [
- "+79221210697",
- "+79098561231"
], - "Name": "ООО Вендор товара",
- "Inn": "7710140679"
}, - "Name": "Наименование товара 1",
- "Price": 10000,
- "Quantity": 1,
- "Amount": 10000,
- "Tax": "vat10",
- "PaymentMethod": "full_payment",
- "PaymentObject": "goods_with_marking_code",
- "UserData": "Данные пользователя ext.test.qa@tinkoff.ru",
- "Excise": "12.2",
- "CountryCode": "056",
- "DeclarationNumber": "12345678901",
- "MeasurementUnit": "шт",
- "MarkProcessingMode": "string",
- "MarkCode": {
- "MarkCodeType": "EAN8",
- "Value": "12345678"
}, - "MarkQuantity": {
- "Numerator": 1,
- "Denominator": 2
}, - "SectoralItemProps": {
- "FederalId": "001",
- "Date": "21.11.2020",
- "Number": "123/43",
- "Value": "test value SectoralItemProps"
}
}
], - "Payments": {
- "Cash": 90000,
- "Electronic": 50000,
- "AdvancePayment": 0,
- "Credit": 0,
- "Provision": 0
}
}, - "Shops": [
- {
- "ShopCode": "700456",
- "Amount": 10000,
- "Name": "Товар"
}
], - "QrMemberId": "77892",
- "Route": "BNPL",
- "Source": "BNPL",
- "ExternalRequestId": "string"
}
{- "TerminalKey": "TinkoffBankTest",
- "OrderId": "21057",
- "Success": true,
- "Status": "REVERSED",
- "OriginalAmount": 13000,
- "NewAmount": 5000,
- "PaymentId": "2304882",
- "ErrorCode": "0",
- "Message": "OK",
- "Details": "None",
- "ExternalRequestId": "756478567845678436"
}
СБП
отображается QR-код с текстом «Отсканируйте в приложении Т-Банка».
Мы указываем только информацию о Т-Банке, потому что не можем гарантировать, что другие банки позволяют сканировать QR-коды в своих приложениях.В процессе обработки платеж меняет свое состояние. Основные статусы и условия перехода в них:
Статус | Правило перехода |
---|---|
NEW |
MAPI получил запрос Init. После этого он создает новый платеж со статусом NEW и возвращает его идентификатор в параметре PaymentId , а также ссылку на платежную форму в параметре PaymentURL . |
FORM_SHOWED |
Мерчант перенаправил клиента на страницу платежной формы PaymentURL и страница загрузилась у клиента в браузере. |
AUTHORIZING |
Платеж обрабатывается MAPI и платежной системой. |
AUTHORIZED |
Платеж авторизован, деньги заблокированы на карте клиента. |
CONFIRMING |
Подтверждение платежа обрабатывается MAPI и платежной системой. |
CONFIRMED |
Платеж подтвержден, деньги списаны с карты клиента. |
REFUNDING |
Мерчант запросил отмену подтвержденного платежа. Возврат обрабатывается MAPI и платежной системой. |
ASYNC_REFUNDING |
Обработка возврата денежных средств по QR. |
PARTIAL_REFUNDED |
Частичный возврат по подтвержденному платежу завершился успешно. |
REFUNDED |
Полный возврат по подтвержденному платежу завершился успешно. |
CANCELED |
Мерчант отменил платеж. |
DEADLINE_EXPIRED |
1. Клиент не завершил платеж в срок жизни ссылки на платежную форму PaymentURL . Этот срок мерчант передает в методе Init в параметре RedirectDueDate . 2. Платеж не прошел проверку 3D-Secure в срок. |
ATTEMPTS_EXPIRED |
Клиент превысил количество попыток открытия формы. |
REJECTED |
Банк отклонил платеж. |
AUTH_FAIL |
Платеж завершился ошибкой или не прошел проверку 3D-Secure. |
Статус | Правило перехода |
---|---|
NEW |
MAPI получил запрос AddAccountQr или GetQr для сессии с рекуррентным платежом. |
PROCESSING |
QR сформирован и отправлен мерчанту. |
ACTIVE |
Привяза счета прошла успешно. |
INACTIVE |
Банк отклонил привязку счета. |
Изменения статуса платежа в этой операции показаны на схеме полного цикла платежа.
Статус | Правило перехода |
---|---|
NEW |
MAPI получил запрос Init. После этого он создает новый платеж в статусе NEW и возвращает его идентификатор в параметре PaymentId . |
FORM_SHOWED |
MAPI принял запрос на обработку платежа. Ожидается подтверждение от НСПК о проведении оплаты по привязке. |
AUTHORIZING |
MAPI принял запрос от НСПК на авторизацию платежа. |
AUTHORIZED |
Платеж авторизован, деньги заблокированы на карте клиента. |
CONFIRMING |
Подтверждение платежа обрабатывается MAPI и платежной системой. |
CONFIRMED |
Платеж подтвержден, деньги списаны с карты клиента. |
REFUNDING |
Мерчант запросил отмену подтвержденного платежа. Возврат обрабатывается MAPI и платежной системой. |
ASYNC_REFUNDING |
Обработка возврата денежных средств по QR. |
PARTIAL_REFUNDED |
Частичный возврат по подтвержденному платежу завершился успешно. |
REFUNDED |
Полный возврат по подтвержденному платежу завершился успешно. |
CANCELED |
Мерчант отменил платеж. |
REJECTED |
Банк отклонил платеж. |
Если клиент привязывает счет к терминалу мерчанта, у которого есть несколько терминалов, клиент может выполнять рекуррентные платежи на всех терминалах мерчанта.
Процесс выглядит так:
А
и Б
, покупатель ранее проводил оплату только по терминалу А
.Б
.Б
.А
и разрешает проведение рекуррентного платежа.Откройте расчетный счёт в Т‑Банке — для этого заполните заявку.
Для подключения СБП клиент должен быть резидентом. Если клиент нерезидент, СБП работать не будет.
Подключите интернет-эквайринг — подайте заявку на подключение интернет-эквайринга и заполните данные об организации и магазине.
Выберите доступные типы интеграций.
СБП доступен для следующих типов интеграций:
Настройте интеграцию на сайте, в мобильном приложении или любом другом интерфейсе.
Расчётный счёт в Т‑Банке должен быть установлен в магазине как счёт для выплат.
СПБ включается в личном кабинете:
Войдите в свой личный кабинет и откройте страницу магазина, для которого вы хотите подключить оплату через СБП. Перейдите на вкладку Способы оплаты.
На плашке Система быстрых платежей нажмите Настроить.
Выберите способ интеграции, который планируете использовать:
Выберите вкладку Платежная форма Т‑Банка и нажмите Включить.
После подключения на экране появится сообщение «Система быстрых платежей включена».
Если у вас уже есть собственная платежная форма или вы хотите подключить виджет СБП, нажмите Включить на вкладке Своя платежная форма. После включения останется настроить интеграцию по API.
После подключения на экране появится сообщение «Система быстрых платежей включена».
Если вы планируете использовать СБП в своём приложении, нажмите Включить на вкладке Приложение и следуете инструкции из этого раздела в личном кабинете.
После подключения на экране появится сообщение «Система быстрых платежей включена».
Вне зависимости от того, какой способ интеграции вы используете, вы всегда можете скачать статический QR-код в разделе Статический QR-код.
После подключения СБП в личном кабинете, QR код автоматически отобразится на платежной форме — дополнительно ничего интегрировать не нужно.
Как интегрировать платежную форму на сайт
Платёжные формы Т‑Банка:
Способ
Оплата картой
обязательный — отключить его нельзя. Все остальные способы опциональные — их можно отключить в личном кабинете.
Если вы интегрируетесь по API, вы самостоятельно отображаете полученный QR-код или кнопку на вашем сайте или любом другом интерфейсе.
Если ваша интеграция предусматривает использование мобильного приложения, в SDK нужно передать специальные параметры для отображения QR кода — IOS, Android.
Если ваша интеграция настроена с Агентом ТСП:
Стикер со статичным QR кодом — платежный QR-код, который размещается в кассовой зоне магазина. Его можно скачать в личном кабинете после создания магазина.
Чтобы получить стикер с QR-кодом:
Покупателю будет нужно отсканировать стикер с QR-кодом, ввести сумму и подтвердить оплату.
При использовании стикера с QR-кодом операции не фискализируются через онлайн-кассы, даже если они подключены в личном кабинете.
После оплаты вам придет уведомление на электронную почту или по HTTP на ваш сервер — в зависимости от настроек.
Магазин — Выставление счетов
Уведомления настраиваются по почте — acq_help@tbank.ru.
Магазин — Интернет-магазин
Если у вас уже есть интернет-магазин, уведомления можно настроить самостоятельно в разделе Терминал.
Если вы интегрировались по API, можно настроить выбор банка при оплате по СБП. Для этого нужно создать прямую ссылку, которая перенаправит клиента в конкретное приложение банка при нажатии на нее.
Чтобы сформировать прямую ссылку на переход в приложение банка, замените
HTTPS из функциональной ссылки на значение параметра schema
из списка банков.
Пример
Функциональная ссылка — https://qr.nspk.ru/AS10004UVOQ9J4I489A8SG8NIA6P3F8B. Меняем HTTPS на соответствующую schema
Т‑Банка —
bank100000000004://qr.nspk.ru/AS10004UVOQ9J4I489A8SG8NIA6P3F8B
.
Для каждого из банков нужно сделать такую прямую ссылку и отобразить список банков
на вашей платёжной форме.
Вставьте код на ваш сайт туда, где должна располагаться кнопка Оплатить через СБП:
<html lang="ru">
<head>
<script defer src="https://securepay.tinkoff.ru/html/payForm/js/tinkoff_v2.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<style>.tinkoffPayRow{display:block;margin:1%;width:160px;}</style>
<!-- tinkoffWidgetContainer – уникальный id, задается произвольно-->
<div id="tinkoffWidgetContainer1"></div>
<form name="TinkoffPayForm">
<input class="tinkoffPayRow" type="hidden" name="terminalkey" value=""/>
<input class="tinkoffPayRow" type="hidden" name="language" value="ru" />
<input class="tinkoffPayRow" type="text" placeholder="Сумма заказа" name="amount" value="111" required min="10.00"/> <input class="tinkoffPayRow" type="text" placeholder="Номер заказа" name="order"/>
<input class="tinkoffPayRow" type="text" placeholder="Описание заказа" name="description"/>
<input class="tinkoffPayRow" type="text" placeholder="ФИО плательщика" name="name"/>
<input class="tinkoffPayRow" type="text" placeholder="E-mail" name="email"/>
<input class="tinkoffPayRow" type="text" placeholder="Контактный телефон" name="phone"/>
</form>
</body>
Сумма заказа amount
указывается в рублях, копейки — через точку.
Добавьте в код поле ввода receipt
:
<input class="tinkoffPayRow" type="hidden" name="receipt" value="">
В значении атрибута value
поля receipt
указываются параметры чека. Пример добавленного код:
const form = document.forms.TinkoffPayForm;
// Данные для чека
Object.defineProperty(form.receipt, 'value', {
get: function () {
return JSON.stringify({
Email: form.email.value,
Phone: form.phone.value,
EmailCompany: 'mail@mail.com',
Taxation: 'patent',
Items: [
{
Name: form.description.value || 'Оплата',
Price: form.amount.value + '00',
Quantity: 1.0,
Amount: form.amount.value + '00',
PaymentMethod: 'full_prepayment',
PaymentObject: 'service',
Tax: 'none',
},
],
});
},
});
Для подключения оплаты по СБП для одного и более товаров в методе InitPayments
нужно передавать массив paymentItems
— это настройки, которые определяют размещение платёжных кнопок и информацию о платеже.
Пример кода:
const terminalkey = document.forms.TinkoffPayForm.terminalkey;
const widgetParameters = {
terminalKey: terminalkey.value,
paymentItems: [
{
container: document.getElementById("tinkoffWidgetContainer1"),
paymentInfo: function () {
return {
paymentData: document.forms.TinkoffPayForm,
};
},
},
],
paymentSystems: { TinkoffFps: {} },
};
window.addEventListener("load", function () {
initPayments(widgetParameters);
});
Структура объекта массива paymentItems
:
Наименование | Обязательный | Тип данных | Описание |
---|---|---|---|
container |
Да | HTMLFormElement | Элемент, в который вставляют кнопки |
paymentInfo |
Да | Function/Object | Информация о платеже |
Вставьте идентификатор магазина в код платежного виджета в значение параметра terminalkey
. Идентификатор магазина выдаётся банком —
его можно получить в личном кабинете: раздел Магазины → вкладка Терминалы:
Если вам нужно изменить состав полей платежного виджета, у полей, которые хотите скрыть, укажите type
= hidden
:
<input class="tinkoffPayRow" type="hidden" placeholder="ФИО клиента" name="name">
Если вам нужно сделать поле обязательным для заполнения, добавьте к нему параметр required
:
<input class="tinkoffPayRow" type="text" placeholder="E-mail" name="email" required>
Платежный виджет стилизует магазин. Ограничений на стилизацию со стороны Т‑Банка нет:
<meta name="viewport" content="width=device-width, initial-scale=1">
<input class="tinkoffPayRow" type="hidden" placeholder="ФИО плательщика" name="name">
<input class="tinkoffPayRow" type="text" placeholder="E-mail" name="email" required>
<input class="tinkoffPayRow" type="hidden" name="terminalkey" value="Идентификатор вашего магазина">
Проверить статус платежа можно:
Протестировать оплату через СБП можно только на PROD-окружении и DEMO-терминале
Сценарий «Платеж — успех»
PaymentId
.CONFIRMED
.Сценарий «Платеж — отказ по таймауту»
PaymentId
) и параметр IsDeadlineExpired
= true
.DEADLINE_EXPIRED
.Сценарий «Платеж — отказ, отклонен Т‑Кассой»
PaymentId
) и параметр IsRejected
= true
.REJECTED
.Сценарий «Возврат — успех»
REFUNDED
.container | string ID элемента или элемент, в который вставляются кнопки. |
TerminalKey required | string Идентификатор вашего магазина. |
object (PaymentInfos) Информация о платеже. | |
Array of items Список объектов с информацией о размещаемых кнопках. | |
T-Payweb (object) or TbankFps (object) Объект с информацией о платежных системах. |
{- "container": "string",
- "TerminalKey": "string",
- "paymentInfo": {
- "InfoEmail": "string",
- "PaymentData": {
- "TerminalKey": "TinkoffBankTest",
- "Amount": 1751,
- "OrderId": "autoOrd1615285401068DELb",
- "Description": "string",
- "DATA": { },
- "Receipt": {
- "Items": [
- {
- "Name": "Наименование товара 1",
- "Price": 10000,
- "Quantity": 1,
- "Amount": 10000,
- "PaymentMethod": "full_prepayment",
- "PaymentObject": "commodity",
- "Tax": "vat10",
- "Ean13": "0123456789",
- "ShopCode": "12345",
- "AgentData": {
- "AgentSign": "paying_agent",
- "OperationName": "Позиция чека",
- "Phones": [
- "+790912312398"
], - "ReceiverPhones": [
- "+79221210697",
- "+79098561231"
], - "TransferPhones": [
- "+79221210697"
], - "OperatorName": "Tinkoff",
- "OperatorAddress": "г. Тольятти",
- "OperatorInn": "7710140679"
}, - "SupplierInfo": {
- "Phones": [
- "+79221210697",
- "+79098561231"
], - "Name": "ООО Вендор товара",
- "Inn": "7710140679"
}
}
], - "FfdVersion": "1.05",
- "Email": "a@test.ru",
- "Phone": "+79031234567",
- "Taxation": "osn",
- "Payments": {
- "Cash": 90000,
- "Electronic": 50000,
- "AdvancePayment": 0,
- "Credit": 0,
- "Provision": 0
}
}
}
}, - "paymentItems": [
- {
- "container": "string",
- "paymentInfo": {
- "InfoEmail": "string",
- "PaymentData": {
- "TerminalKey": "TinkoffBankTest",
- "Amount": 1751,
- "OrderId": "autoOrd1615285401068DELb",
- "Description": "string",
- "DATA": { },
- "Receipt": {
- "Items": [
- {
- "Name": "Наименование товара 1",
- "Price": 10000,
- "Quantity": 1,
- "Amount": 10000,
- "PaymentMethod": "full_prepayment",
- "PaymentObject": "commodity",
- "Tax": "vat10",
- "Ean13": "0123456789",
- "ShopCode": "12345",
- "AgentData": {
- "AgentSign": "paying_agent",
- "OperationName": "Позиция чека",
- "Phones": [
- "+790912312398"
], - "ReceiverPhones": [
- "+79221210697",
- "+79098561231"
], - "TransferPhones": [
- "+79221210697"
], - "OperatorName": "Tinkoff",
- "OperatorAddress": "г. Тольятти",
- "OperatorInn": "7710140679"
}, - "SupplierInfo": {
- "Phones": [
- "+79221210697",
- "+79098561231"
], - "Name": "ООО Вендор товара",
- "Inn": "7710140679"
}
}
], - "FfdVersion": "1.05",
- "Email": "a@test.ru",
- "Phone": "+79031234567",
- "Taxation": "osn",
- "Payments": {
- "Cash": 90000,
- "Electronic": 50000,
- "AdvancePayment": 0,
- "Credit": 0,
- "Provision": 0
}
}
}
}
}
], - "paymentSystems": {
- "TinkoffPay": { }
}
}
{- "Success": "true"
}
Метод регистрирует QR и возвращает информацию о нем. Вызывается после метода Init.
TerminalKey required | string Идентификатор терминала, выдается мерчанту Т‑Кассой. |
PaymentId required | number Уникальный идентификатор транзакции в системе Т‑Кассы. Запрос будет работать, даже если указать значение в формате |
DataType | string Default: "PAYLOAD" Enum: "PAYLOAD" "IMAGE" Тип возвращаемых данных:
|
Token required | string Подпись запроса. |
{- "TerminalKey": "TinkoffBankTest",
- "PaymentId": 10063,
- "DataType": "PAYLOAD",
- "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6"
}
{- "TerminalKey": "TinkoffBankTest",
- "OrderId": "21057",
- "Success": true,
- "PaymentId": "10063",
- "ErrorCode": "0",
- "Message": "Неверные параметры",
- "Details": "Подробное описание ошибки",
- "RequestKey": "Идентификатор запроса"
}
Метод возвращает список участников куда может быть осуществлен возврат платежа, совершенного по QR.
TerminalKey required | string Идентификатор терминала, выдается мерчанту Т‑Кассой. |
PaymentId required | string Уникальный идентификатор транзакции в системе. Т‑Кассы |
Token required | string Подпись запроса. |
{- "TerminalKey": "TinkoffBankTest",
- "PaymentId": "10063",
- "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6"
}
{- "Members": [
- {
- "MemberId": "1000000",
- "MemberName": "T-Банк",
- "IsPayee": true
}
], - "OrderId": "21050",
- "Success": true,
- "ErrorCode": "0",
- "Message": "OK"
}
Метод инициирует привязку счета клиента к магазину и возвращает информацию о нем
TerminalKey required | string Идентификатор терминала, выдается мерчанту Т‑Кассой. |
Description required | string Подробное описание деталей заказа. |
DataType | string Default: "PAYLOAD" Enum: "PAYLOAD" "IMAGE" Тип возвращаемых данных:
|
object JSON-объект, содержащий
дополнительные параметры в виде
Максимальное количество пар | |
RedirectDueDate | string <datatime> Cрок жизни ссылки или динамического QR-кода СБП, если выбран этот способ
оплаты. Если параметр Если текущая дата превышает дату, переданную в этом параметре, ссылка для оплаты или возможность платежа по QR-коду становятся недоступными и платёж выполнить нельзя.
|
Token required | string Подпись запроса. |
{- "TerminalKey": "TinkoffBankTest",
- "Description": "string",
- "DataType": "PAYLOAD",
- "Data": {
- "property1": "string",
- "property2": "string"
}, - "RedirectDueDate": "2016-08-31T12:28:00+03:00",
- "Token": "871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6"
}
{- "TerminalKey": "TinkoffBankTest",
- "RequestKey": "ed989549-d3be-4758-95c7-22647e03f9ec",
- "ErrorCode": "0",
- "Success": true,
- "Message": "OK"
}
Метод возвращает статус привязки счета клиента по магазину
RequestKey required | string <uuid> Идентификатор запроса на привязку счета. |
TerminalKey required | string <= 20 characters Идентификатор терминала. Выдается мерчанту Т‑Кассой при заведении терминала. |
Token required | string Подпись запроса. |
{- "RequestKey": "13021e10-a3ed-4f14-bcd1-823b5ac37390",
- "TerminalKey": "TinkoffBankTest",
- "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc7b96"
}
{- "TerminalKey": "testRegress",
- "RequestKey": 211258,
- "BankMemberId": "100000000004",
- "BankMemberName": "T-Банк",
- "AccountToken": "a022254a5c3c46a7327c8a12cb5c8389",
- "Success": true,
- "Status": "ACTIVE",
- "ErrorCode": "0",
- "Message": "OK"
}
Метод возвращает список привязанных счетов клиента по магазину
TerminalKey required | string <= 20 characters Идентификатор терминала. Выдается мерчанту Т‑Кассой при заведении терминала. |
Token required | string Подпись запроса. |
{- "TerminalKey": "TinkoffBankTest",
- "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc7b96"
}
{- "TerminalKey": "testRegress",
- "Success": true,
- "ErrorCode": "0",
- "Message": "OK",
- "AccountTokens": {
- "RequestKey": "8de92934-26c9-474c-a4ce-424f2021d24d",
- "Status": "NEW",
- "AccountToken": "0b67f2cae19b41809f85d5674de30a1a",
- "BankMemberId": "5555",
- "BankMemberName": "T-Банк"
}
}
Проведение платежа по привязанному счету по QR через СБП. Для возможности его использования клиент должен совершить успешную привязку счета с помощью метода AddAccountQr. После вызова метода будет отправлена нотификация на Notification URL о привязке счета , в которой будет указан AccountToken. Для совершения платежа по привязанному счету Мерчант должен вызвать метод Init, в котором поля Recurrent= Y и DATA= {“QR”:“true”}, а затем вызвать метод ChargeQr для оплаты по тем же самым реквизитам и передать параметр AccountToken, полученный после привязки счета по QR в нотификации.
TerminalKey required | string <= 20 characters Идентификатор терминала. |
PaymentId required | string Уникальный идентификатор транзакции в системе Т‑Кассы. |
AccountToken required | string Идентификатор привязки счета, назначаемый банком-эмитентом. |
Token required | string Подпись запроса. |
IP | string IP-адрес клиента. |
SendEmail | boolean
|
InfoEmail | string <email> Адрес почты клиента. Обязательно, если передан параметр |
{- "TerminalKey": "TinkoffBankTest",
- "PaymentId": "700001702044",
- "AccountToken": "70LSS7DN18SJQRS10006DNPKLJL24B05",
- "Token": "f5a3be479324a6d3a4d9efa0d02880b77d04a91758deddcbd9e752a6df97cab5",
- "IP": "2011:0db8:85a3:0101:0101:8a2e:0370:7334",
- "SendEmail": true,
- "InfoEmail": "customer@test.com"
}
{- "TerminalKey": "TinkoffBankTest",
- "Amount": 100000,
- "OrderId": "21050",
- "Success": true,
- "Status": "CONFIRMED",
- "PaymentId": "13660",
- "ErrorCode": "0",
- "Message": "Неверные параметры",
- "Details": "string",
- "Currency": 643
}
Тестовая платежная сессия с предопределенным статусом по СБП.
TerminalKey required | string <= 20 characters Идентификатор терминала, выдается мерчанту Т‑Кассой. |
PaymentId required | string <= 20 characters Идентификатор платежа в системе Т‑Кассы. |
Token required | string Подпись запроса. |
IsDeadlineExpired | boolean Признак эмуляции отказа проведения платежа банком по таймауту. По умолчанию не используется.
|
IsRejected | boolean Признак эмуляции отказа банка в проведении платежа. По умолчанию не используется.
|
{- "TerminalKey": "TinkoffBankTest",
- "PaymentId": "13660",
- "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc7b96",
- "IsDeadlineExpired": true,
- "IsRejected": false
}
{- "Success": true,
- "ErrorCode": "0",
- "Message": "OK",
- "Details": "0"
}
Возвращает статус возврата платежа по СБП
TerminalKey required | string Идентификатор терминала, выдается мерчанту Т‑Кассой |
PaymentId required | string Уникальный идентификатор транзакции в системе Т‑Кассы, полученный в ответе на вызов метода Init |
Token required | string Подпись запроса |
{- "TerminalKey": "TinkoffBankTest",
- "PaymentId": "700031849",
- "Token": "l43kb4hyi6lknb23bv4gdfskjn238fsllsdf8"
}
{- "Success": true,
- "ErrorCode": "0",
- "Status": "CONFIRMED",
- "QrCancelCode": "I05043",
- "QrCancelMessage": "У клиента нет расчетного счета в этом банке. Попробуйте вернуть деньги на счет этого клиента в другом банке",
- "OrderId": "7830122",
- "Amount": 10000,
- "Message": "OK"
}
Оплата доступна на мобильных устройствах и десктопах. Проводится последовательным вызовом методов:
/TinkoffPay/terminals/{terminalKey}/status
,/Init
,/TinkoffPay/transactions/{paymentId}/versions/{version}/link
или /TinkoffPay/{paymentId}/QR
.T‑Pay SDK — интеграция способа оплаты в приложение. Документация по SDK активно поддерживается на GitHub:
Виджет T‑Pay — способ интеграции через установку виджета на сайт.
Вставьте код на ваш сайт туда, где должна располагаться кнопка Оплатить:
<style>.tinkoffPayRow{display:block;margin:1%;width:160px;}</style>
<link rel="stylesheet" href="./html/payForm/static/css/t-widget.css" type="text/css >
<script src="https://securepay.tinkoff.ru/html/payForm/js/tinkoff.js ></script>
<form name="TinkoffPayForm" onsubmit="pay(this); return false; >
<input class="tinkoffPayRow" type="hidden" name="terminalkey" value="EatFit3DS >
<input class="tinkoffPayRow" type="hidden" name="frame" value="true">
<input class="tinkoffPayRow" type="hidden" name="language" value="ru">
<input class="tinkoffPayRow" type="text" placeholder="Сумма заказа" name="amount
required>
<input class="tinkoffPayRow" type="text" placeholder="Номер заказа" name="order">
<input class="tinkoffPayRow" type="text" placeholder="Описание заказа
name="description">
<input class="tinkoffPayRow" type="text" placeholder="ФИО клиента" name="name">
<input class="tinkoffPayRow" type="text" placeholder="E-mail" name="email">
<input class="tinkoffPayRow" type="text" placeholder="Контактный телефон
name="phone">
<input class="tinkoffPayRow" type="submit" value="Оплатить">
</form>
Вставьте идентификатор мерчанта в код платежного виджета в значение параметра terminalkey
. Идентификатор мерчанта выдается Т‑Кассой —
его можно получить в личном кабинете в разделе Магазины.
Если вам нужно изменить состав полей платежного виджета, у полей, которые хотите скрыть, укажите type
= hidden
:
<input class="tinkoffPayRow" type="hidden" placeholder="ФИО
клиента" name="name">
Если вам нужно сделать поле обязательным для заполнения, добавьте к нему параметр required
:
<input class="tinkoffPayRow" type="text" placeholder="E-mail"
name="email" required>
Если вам нужно открывать платежную форму в текущем окне, укажите у этого атрибута значение true
:
<input class="tinkoffPayRow" type="hidden" name="frame"
value="true">
Платежный виджет стилизует мерчант. Ограничений на стилизацию со стороны Т‑Кассы нет:
<input class="tinkoffPayRow" type="hidden" name="terminalkey"
value="Идентификатор вашего магазина">
Добавьте в код поле ввода receipt
:
<input class="tinkoffPayRow" type="hidden" name="receipt" value="">
В значении атрибута value
поля receipt
указываются параметры чека. Пример добавленного код:
const form = document.forms.TinkoffPayForm;
// Данные для чека
Object.defineProperty(form.receipt, 'value', {
get: function () {
return JSON.stringify({
Email: form.email.value,
Phone: form.phone.value,
EmailCompany: 'mail@mail.com',
Taxation: 'patent',
Items: [
{
Name: form.description.value || 'Оплата',
Price: form.amount.value + '00',
Quantity: 1.0,
Amount: form.amount.value + '00',
PaymentMethod: 'full_prepayment',
PaymentObject: 'service',
Tax: 'none',
},
],
});
},
});
При успешном подключении T‑Pay для интернет-магазина отобразится страница активного статуса подключения T‑Pay на сайте.
Вставьте код на ваш сайт туда, где должна располагаться кнопка T-Pay:
<div id="tinkoffWidgetContainer"></div>
<script type="text/javascript">
const terminalkey = document.forms.TinkoffPayForm.terminalkey
const widgetParameters = {
container: 'tinkoffWidgetContainer’,
terminalKey: terminalkey.value,
paymentSystems: {
TinkoffPay: {
paymentInfo: function () {
return {
infoEmail: "E-mail для отправки информации о платеже",
paymentData: document.forms.TinkoffPayForm
}
}
},
},
};
window.addEventListener('load', function () {
initPayments(widgetParameters);
});
</script>
Метод InitPayments запускает инициализацию платежных кнопок T‑Pay. Входной параметр метода widgetParameters
- объект с данными о настройках проведения платежей, где нужно определить параметры, описанные в структуре метода InitPayments.
Структура объекта T‑Pay
:
Наименование | Обязательность | Тип данных | Описание |
---|---|---|---|
paymentInfo |
Да | Function/Object | Платежная информация |
Для подключения оплаты по T-pay для одного и более товаров в методе InitPayments
нужно передавать массив paymentItems
— это настройки, которые определяют размещение платёжных кнопок и информацию о платеже.
Пример кода:
<div id="tinkoffWidgetContainer1"></div>
<div id="tinkoffWidgetContainer2"></div>
<script type="text/javascript">
const terminalkey = document.forms.TinkoffPayForm.terminalkey
const widgetParameters = {
terminalKey: terminalkey.value,
paymentItems: [{
container: document.getElementById('tinkoffWidgetContainer1'),
paymentInfo: function () {
return {
infoEmail: "E-mail для отправки информации о платеже",
paymentData: document.forms.TinkoffPayForm
}
}},
{
container: document.getElementById('tinkoffWidgetContainer2'),
paymentInfo: function () {
return {
infoEmail: "E-mail для отправки информации о платеже",
paymentData: document.forms.TinkoffPayForm
}
}}],
paymentSystems: {
TinkoffPay: {
},
},
};
window.addEventListener('load', function () {
initPayments(widgetParameters);
});
</script>
Структура объекта массива paymentItems
:
Наименование | Обязательность | Тип данных | Описание |
---|---|---|---|
container |
Да | HTMLFormElement | Элемент, в который вставляют кнопки |
paymentInfo |
Да | Function/Object | Платежная информация |
Для интеграции T‑Pay + T‑ID нужно настроить интеграцию с T‑ID. Подробнее про T-ID.
Вставьте код на ваш сайт туда, где должна располагаться кнопка Оплатить:
<link rel="stylesheet" href="https://securepay.tinkoff.ru/tpaytid/styles.css" media="print"
onload="this.media='all'">
<tinkoff-pay-id-button
terminalkey=”%yourterminalkey%”
redirectsuccess=false
rederectfail=false
></tinkoff-pay-id-button>
<script src="https://securepay.tinkoff.ru/tpaytid/tinkoff-pay-button.js" type="module"></
script>
Вставьте идентификатор магазина в код платежного виджета в значение параметра terminalkey
. Идентификатор магазина выдается Т‑Кассой —
его можно получить в личном кабинете в разделе Магазины.
Если вам нужен переход по ссылке в случае удачной оплаты,
выставите redirectsuccess
= true
или задайте атрибут у себя в коде:
const tpayIdButton = document.querySelector('tinkoff-pay-id-button');
tpayIdButton.setAttribute('redirectsuccess', true);
Если вам нужен переход по ссылке в случае удачной оплаты,
выставите redirectfail
= true
или задайте атрибут у себя в коде:
const tpayIdButton = document.querySelector('tinkoff-pay-id-button');
tpayIdButton.setAttribute('redirectfail', true);
Чтобы получать данные об оплате, подпишитесь на событие onSessionChange
:
const tpayIdButton = document.querySelector('tinkoff-pay-id-button');
tinkoffPayIdButton.addEventListener('onSessionChange', e => {
// Ваш код здесь
})
Структура объекта события о платеже — onSessionChange
:
Наименование | Обязательность | Тип данных | Описание |
---|---|---|---|
eventType |
Да | String | Тип события |
sessionId |
Да | String | Идентификатор сессии |
paymentId |
Нет | Number | Идентификатор платежи |
accountId |
Нет | String | Идентификатор карты |
data |
Нет | Object | Набор параметров ключ-значение |
eventSessionId |
Нет | String | Идентификатор события открытия карт |
Чтобы реализовать сценарий T‑Pay + T‑ID, нужно установить SDK-виджет на сайте. Также нужно подписаться на события, которые генерирует
виджет, и дублировать их на backend в зашифрованном виде через метод /v2/TinkoffPayEvent
, передавая в нем данные о клиенте.
В данном случае это авторизационный токен AccessToken
, выпущенный T‑ID.
Есть три типа событий — для каждого передается набор параметров для последующей валидации:
Инициализация кнопки — процесс отображения кнопки.
Отображение счета — процесс отображения счетов, доступных клиенту для оплаты. Когда поступает событие с таким типом,
нужно создать платежную сессию эквайринга, если она еще не была создана — то есть если в параметрах события нет PaymentId
.
Это делается через метод /v2/Init с учетом особенностей T-Pay. Дальше есть несколько сценариев развития событий:
Оплата — проведение оплаты по выбранному счету.
Рекомендуем принимать результат авторизации асинхронно через нотификации.
container | string ID элемента или элемент, в который вставляются кнопки. |
TerminalKey required | string Идентификатор вашего магазина. |
object (PaymentInfos) Информация о платеже. | |
Array of items Список объектов с информацией о размещаемых кнопках. | |
T-Payweb (object) or TbankFps (object) Объект с информацией о платежных системах. |
{- "container": "string",
- "TerminalKey": "string",
- "paymentInfo": {
- "InfoEmail": "string",
- "PaymentData": {
- "TerminalKey": "TinkoffBankTest",
- "Amount": 1751,
- "OrderId": "autoOrd1615285401068DELb",
- "Description": "string",
- "DATA": { },
- "Receipt": {
- "Items": [
- {
- "Name": "Наименование товара 1",
- "Price": 10000,
- "Quantity": 1,
- "Amount": 10000,
- "PaymentMethod": "full_prepayment",
- "PaymentObject": "commodity",
- "Tax": "vat10",
- "Ean13": "0123456789",
- "ShopCode": "12345",
- "AgentData": {
- "AgentSign": "paying_agent",
- "OperationName": "Позиция чека",
- "Phones": [
- "+790912312398"
], - "ReceiverPhones": [
- "+79221210697",
- "+79098561231"
], - "TransferPhones": [
- "+79221210697"
], - "OperatorName": "Tinkoff",
- "OperatorAddress": "г. Тольятти",
- "OperatorInn": "7710140679"
}, - "SupplierInfo": {
- "Phones": [
- "+79221210697",
- "+79098561231"
], - "Name": "ООО Вендор товара",
- "Inn": "7710140679"
}
}
], - "FfdVersion": "1.05",
- "Email": "a@test.ru",
- "Phone": "+79031234567",
- "Taxation": "osn",
- "Payments": {
- "Cash": 90000,
- "Electronic": 50000,
- "AdvancePayment": 0,
- "Credit": 0,
- "Provision": 0
}
}
}
}, - "paymentItems": [
- {
- "container": "string",
- "paymentInfo": {
- "InfoEmail": "string",
- "PaymentData": {
- "TerminalKey": "TinkoffBankTest",
- "Amount": 1751,
- "OrderId": "autoOrd1615285401068DELb",
- "Description": "string",
- "DATA": { },
- "Receipt": {
- "Items": [
- {
- "Name": "Наименование товара 1",
- "Price": 10000,
- "Quantity": 1,
- "Amount": 10000,
- "PaymentMethod": "full_prepayment",
- "PaymentObject": "commodity",
- "Tax": "vat10",
- "Ean13": "0123456789",
- "ShopCode": "12345",
- "AgentData": {
- "AgentSign": "paying_agent",
- "OperationName": "Позиция чека",
- "Phones": [
- "+790912312398"
], - "ReceiverPhones": [
- "+79221210697",
- "+79098561231"
], - "TransferPhones": [
- "+79221210697"
], - "OperatorName": "Tinkoff",
- "OperatorAddress": "г. Тольятти",
- "OperatorInn": "7710140679"
}, - "SupplierInfo": {
- "Phones": [
- "+79221210697",
- "+79098561231"
], - "Name": "ООО Вендор товара",
- "Inn": "7710140679"
}
}
], - "FfdVersion": "1.05",
- "Email": "a@test.ru",
- "Phone": "+79031234567",
- "Taxation": "osn",
- "Payments": {
- "Cash": 90000,
- "Electronic": 50000,
- "AdvancePayment": 0,
- "Credit": 0,
- "Provision": 0
}
}
}
}
}
], - "paymentSystems": {
- "TinkoffPay": { }
}
}
{- "Success": "true"
}
Метод для определения возможности проведения платежа T‑Pay на терминале и устройстве.
TerminalKey required | string <= 20 characters Example: testRegress Платежный ключ, выдается мерчанту при заведении терминала. |
{- "Params": {
- "Allowed": true,
- "Version": "1.0"
}, - "Success": true,
- "ErrorCode": "0",
- "Message": "string",
- "Details": "string"
}
Метод получения Link для безусловного редиректа на мобильных устройствах
paymentId required | number <= 20 characters Example: 13660 Идентификатор платежа в системе Т‑Кассы |
version required | string Example: 2.0 Версия T‑Pay, доступная на терминале:
|
{- "Success": true,
- "ErrorCode": "0",
- "Message": "string",
- "Details": "string"
}
Передача уведомления о событии платежного виджета T‑Pay + T‑ID.
TerminalKey required | string Идентификатор терминала. Выдается мерчанту Т‑Кассой при заведении терминала. |
required | object (EventData) |
PaymentId | string Идентификатор платежа. |
Token required | string Подпись запроса. |
{- "TerminalKey": "string",
- "EventData": {
- "SessionId": "string",
- "Type": "string",
- "AccessToken": "string",
- "AccountId": "string",
- "EventSessionId": "string"
}, - "PaymentId": "string",
- "Token": "string"
}
{- "Success": "true",
- "ErrorCode": 0,
- "Message": "string",
- "Details": "string"
}
При успешном подключении SberPay для интернет-магазина должна отобразиться страница активного статуса подключения SberPay на сайте.
SberPay не работает для мерчантов интегрированных через InSales.
Требования к функционалу и дизайну кнопки определяются Сбербанком:
Оплата доступна на мобильных устройствах и десктопах. Проводится последовательным вызовом методов:
/Init
,/SberPay/transactions/{PaymentId}/link
или /SberPay/{PaymentId}/QR
,/Confirm
,/Cancel
.returnUrl
не допускается использование символов: +, &, @, #, /, %, =, ~, _, |Data
:"DATA": {
"SberPayWeb": "true",
"Device": "Desktop"
}
Из-за особенностей работы эквайринга Сбербанка подтвердить платежную сессию можно сделать только один раз — либо частично, либо полностью.
Также из-за асинхронной обработки запросов на подтверждение платеж может вернуться в статусе CONFIRMING
,
если у сервисов партнера возникнут проблемы с производительностью.
Из-за особенностей работы эквайринга Сбербанка отменить платежную сессию можно только один раз и только на полную сумму платежа.
Возврат можно делать несколько раз — как частично, так и полностью — до тех пор, пока не будет исчерпана сумма платежа.
Также из-за асинхронной обработки запросов на подтверждение платеж может вернуться в статусе REVERSING
или REFUNDING
,
если у сервисов партнера возникнут проблемы с производительностью.
Метод для получения ссылки SberPay.
paymentId required | number Example: 700001702044 Уникальный идентификатор транзакции в системе Т‑Кассы. |
{- "Params": {
- "RedirectUrl": "tinkoffbank://Main/EInvoicing?billId=5000015507&providerId=e-invoicing"
}, - "Success": true,
- "ErrorCode": "0",
- "Message": "string",
- "Details": "string"
}
Мерчант может сохранить платежные данные клиента, чтобы при последующих оплатах ему не приходилось заполнять платежную форму. Для этого клиент привязывается к терминалу, через который будут проходить платежи. После этого клиент может сохранять карты.
Мерчант может выбрать способ привязки клиента — с проверкой 3D-Secure или без. Если выбран вариант:
С проверкой 3D-Secure — клиент должен будет подтвердить операцию на этом этапе. Все дальнейшие платежи будут проходить по схеме рекуррентного платежа, то есть подтверждать каждое списание не нужно.
Без проверки 3D-Secure — клиент и его карты будут сохранены без подтверждения, но оно понадобится при первом платеже по привязанной карте.
За способ привязки отвечает параметр CheckType
в запросе метода AddCard
. Если мерчант не передаст этот параметр, MAPI по умолчанию
будет считать, что привязка прошла без подтверждения клиента.
Срок жизни формы привязки ограничен и составляет 2 суток.
Для корректной работы методов Т‑Касса должна разрешить мерчанту привязывать карты и клиентов к терминалу. В результате привязки карты к параметру
CustomerKey
будет привязанCardId
.
Мерчант вызывает метод и передает нужный параметр. Чтобы:
CustomerKey
— через метод AddCustomer, передав в запросе параметр CustomerKey
.CustomerKey
.CustomerKey
.Для мерчантов, использующих собственную платежную форму
Когда клиент сохранится в списке привязанных к терминалу, мерчант может добавить карту. Для этого мерчант вызывает метод
AddCard и в запросе передает параметр CustomerKey
. MAPI вернет идентификатор сессии привязки карты — PaymentId
.
На следующем этапе мерчант вызвает метод Check3DSVersion, в котором передает зашифрованные карточные данные клиента и
PaymentId
. Это нужно для проверки версии протокола 3D-Secure по карте. Она может быть версии 1.0 или 2.0.
Если в ответе метода Check3DSVersion есть параметр ThreeDSMethodURL
, браузер клиента должен вызывать ресурс,
адрес которого пришел в параметре ThreeDSMethodURL
. В запросе нужно передать строковый параметр threeDSMethodData
.
Эта строка — закодированный в формате base64
JSON-объект с параметрами:
Название параметра | Тип данных | Описание |
---|---|---|
threeDSMethodNotificationURL |
string | Обратный адрес, на который будет отправлен запрос после прохождения 3DS Method . |
threeDSServerTransID |
string | Идентификатор транзакции из ответа метода Check3DSVersion . |
Браузер должен вызвать 3DS Method
в скрытом iframe и передать данные в формате x-www-form-urlencoded
.
Пример запроса на
ThreeDSMethodURL
:<body onload="document.form.submit()"> <form name="form" action="{ThreeDSMethodURL}" method="post" > <input type="hidden" name=" threeDSMethodData" value="eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjU2ZTcxMmE1LTE5MGEtNDU4OC05MWJjLWUwODYyNmU3N2M0NCIsInRocm VlRFNNZXRob2ROb3RpZmljYXRpb25VUkwiOiJodHRwczovL3Jlc3QtYXBpLXRlc3QudGlua29mZi5ydS92Mi9Db21wbGV0ZTNEU0 1ldGhvZHYyIn0"> </form> </body>
Пример декодированного значения
threeDSMethodData
:{ "threeDSServerTransID":"56e712a5-190a-4588-91bc-e08626e77c44", "threeDSMethodNotificationURL":"https://rest-api-test.tinkoff.ru/v2/>Complete3DSMethodv2" }
Для завершения привязки карты мерчант вызывает метод AttachCard и передает зашифрованные карточные данные, а также набор параметров для прохождения проверки 3D-Secure.
В ответ MAPI вернет один из возможных статусов платежа:
Статус | Описание | Доступные действия |
---|---|---|
REJECTED |
Привязка отклонена | Провести привязку заново |
COMPLETED |
Успешная привязка карты | - |
3DS_CHECKING |
Требуется подтверждение привязки по 3D-Secure |
|
Если в ответе метода AttachCard вернулся статус 3DS_CHECKING
— это значит, что нужно пройти проверку 3D-Secure. Для этого мерчант должен
сформировать запрос в сервис аутентификации банка, выпустившего карту. Адрес сервиса возвращается в ответе AttachCard в параметре ACSUrl
. Вместе с
этим нужно перенаправить клиента на эту же страницу ACSUrl
для прохождения 3DS.
В заголовке запроса передается параметр Content-Type
со значением application/x-www-form-urlencoded
. Набор параметров в
теле запросе зависит от версии протокола 3DS по карте.
Если версия 3DS — 1.0, в запросе передаются параметры:
Название параметра | Описание |
---|---|
MD |
Информация для идентификации платежной сессии на стороне торговой точки. Возвращается в ответе метода FinishAuthorize. |
PaReq |
Запрос на аутентификацию плательщика, который содержит разные детали транзакции. Возвращается в ответе метода FinishAuthorize. |
TermURL |
Адрес перенаправления после аутентификации 3DS. Должен содержать ссылку на обработчик на стороне мерчанта, принимающий результаты прохождения 3-D Secure. |
Если версия 3DS — 2.0, в запросе передаются параметры в зависимости от типа устройства клиента.
Параметры для браузера:
Название параметра | Тип данных | Описание |
---|---|---|
creq |
string | JSON с параметрами threeDSServerTransID , acsTransID ,challengeWindowSize , messageType , messageVersion , закодированный в base64 . |
Строка creq
для браузера формируется из следующих параметров:
Название параметра | Тип данных | Описание |
---|---|---|
threeDSServerTransID |
string | Идентификатор транзакции из ответа метода FinishAuthorize. |
acsTransID |
string | Идентификатор транзакции, присвоенный ACS, полученный из ответа метода FinishAuthorize. |
challengeWindowSize |
string | Размер экрана, на котором открыта страница ACS. Допустимые значения: |
messageType |
string | Передается фиксированное значение CReq . |
messageVersion |
string | Версия 3DS, полученная из ответа метода Check3DSVersion. |
Параметры для приложения:
Название параметра | Тип данных | Описание |
---|---|---|
creq |
string | JWE object с параметрами threeDSServerTransID , acsTransID , messageType , messageVersion , sdkTransID , sdkCounterStoA , закодированный в PS256 . |
Строка creq
для приложения формируется из следующих параметров:
Название параметра | Тип данных | Описание |
---|---|---|
threeDSServerTransID |
string | Идентификатор транзакции из ответа метода FinishAuthorize. |
acsTransID |
string | Идентификатор транзакции, присвоенный ACS, полученный из ответа метода FinishAuthorize. |
messageType |
string | Передается фиксированное значение CReq . |
messageVersion |
string | Версия 3DS, полученная из ответа метода Check3DSVersion. |
sdkTransID |
string | Уникальный идентификатор транзакции, назначенный 3DS SDK для идентификации одной транзакции, полученный из ответа метода FinishAuthorize. |
sdkCounterStoA |
string | Внутренний счетчик 3DS SDK внутри ACS. Поддерживаемые значения: 000–255. |
Когда сервис аутентификации банка, который выпустил карту, прислал результат прохождения 3D-Secure, мерчант должен передать эту информацию в MAPI. В зависимости от версии протокола 3DS нужно вызвать один из методов:
Если привязка завершилась успешно, клиент будет перенаправлен на страницу Success Add Card URL
из настроек терминала.
В процессе обработки операция привязки меняет свое состояние. Основные статусы и условия перехода в них:
Статус | Описание |
---|---|
NEW |
Новая сессия. |
FORM_SHOWED |
Показ формы привязки карты. |
3DS_CHECKING |
Отправка клиента на проверку 3DS. |
3DS_CHECKED |
Клиент успешно прошел проверку 3DS. |
AUTHORIZING |
Отправка платежа на 0 руб. |
AUTHORIZED |
Платеж на 0 руб прошел успешно. |
COMPLETED |
Привязка успешно завершена. |
REJECTED |
Привязка отклонена. |
Регистрирует клиента в связке с терминалом.
Можно автоматически связать клиента с картой, которой был произведен платеж, если в методе Init передать параметр
CustomerKey
. Это позволит сохранить и позже показывать клиенту замаскированный номер карты, по которой будет совершен рекуррентный платеж.
TerminalKey required | string <= 20 characters Идентификатор терминала, выдается мерчанту Т‑Кассой. |
CustomerKey required | string <= 36 characters Идентификатор клиента в системе мерчанта. |
Token required | string Подпись запроса. |
IP | string <= 40 characters IP-адрес запроса. |
string <email> <= 64 characters Электронная почта клиента. | |
Phone | string <= 64 characters Телефон клиента в формате |
{- "TerminalKey": "TinkoffBankTest",
- "CustomerKey": "4387c647-a693-449d-bc35-91faecfc50de",
- "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e",
- "IP": "10.100.10.10",
- "Email": "username@test.ru",
- "Phone": "+79031234567"
}
{- "TerminalKey": "TinkoffBankTest",
- "CustomerKey": "05d65baa-9718-445e-8212-76fa0dd4c1d2",
- "ErrorCode": "0",
- "Success": true,
- "Message": "Неверные параметры",
- "Details": "Терминал не найден"
}
Возвращает данные клиента, сохраненные в связке с терминалом
TerminalKey required | string <= 20 characters Идентификатор терминала, выдается мерчанту Т‑Кассой. |
CustomerKey required | string <= 36 characters Идентификатор клиента в системе мерчанта. |
Token required | string Подпись запроса. |
IP | string <= 40 characters IP-адрес запроса. |
{- "TerminalKey": "TinkoffBankTest",
- "CustomerKey": "string",
- "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e",
- "IP": "string"
}
{- "TerminalKey": "TinkoffBankTest",
- "CustomerKey": "4264aa7b-08ab-4429-ab5a-2a171d841ced",
- "ErrorCode": "0",
- "Success": true,
- "Message": "Неверный статус клиента",
- "Details": "Клиент не найден.",
- "Email": "a@test.ru",
- "Phone": "+79031234567"
}
Метод для удаления сохраненных данных клиента.
TerminalKey required | string <= 20 characters Идентификатор терминала, выдается мерчанту Т‑Кассой. |
CustomerKey required | string <= 36 characters Идентификатор клиента в системе мерчанта. |
Token required | string Подпись запроса. |
IP | string <= 40 characters IP-адрес запроса. |
{- "TerminalKey": "TinkoffBankTest",
- "CustomerKey": "string",
- "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e",
- "IP": "string"
}
{- "TerminalKey": "TinkoffBankTest",
- "CustomerKey": "string",
- "ErrorCode": "0",
- "Success": true,
- "Message": "Неверные параметры",
- "Details": "string"
}
Для мерчантов, использующих собственную платежную форму
Метод инициирует привязку карты к клиенту.
При успешной привязке переадресует клиента на Success Add Card URL
,
при неуспешной — на Fail Add Card URL
.
Можно использовать форму Т‑Кассы или заменить её на кастомную.
TerminalKey required | string Идентификатор терминала, выдается мерчанту Т‑Кассой. |
CustomerKey required | string <= 36 characters Идентификатор клиента в системе мерчанта. |
Token required | string Подпись запроса. |
CheckType | string Enum: "NO" "HOLD" "3DS" "3DSHOLD" Если
|
IP | string <= 40 characters IP-адрес запроса. |
ResidentState | boolean Признак резидентности добавляемой карты: Возможные значения:
|
{- "TerminalKey": "1111133333",
- "CustomerKey": "testCustomer1234",
- "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e",
- "CheckType": "NO",
- "IP": "10.100.10.10",
- "ResidentState": true
}
{- "PaymentId": "6155312072",
- "TerminalKey": "TinkoffBankTest",
- "CustomerKey": "906540",
- "RequestKey": "ed989549-d3be-4758-95c7-22647e03f9ec",
- "ErrorCode": "0",
- "Success": true,
- "Message": "Неверные параметры",
- "Details": "Терминал не найден",
- "PaymentURL": "82a31a62-6067-4ad8-b379-04bf13e37642d"
}
Для мерчантов, использующих собственную платежную форму
Завершает привязку карты к клиенту.
В случае успешной привязки переадресует клиента на Success Add Card URL
в противном случае на Fail Add Card URL.
Для прохождения 3DS второй версии перед вызовом метода должен быть вызван /v2/check3dsVersion
и выполнен 3DS Method, который является обязательным при прохождении 3DS по протоколу версии
2.0.
TerminalKey required | string <= 20 characters Идентификатор терминала. Выдается мерчанту Т‑Кассой при заведении терминала. |
RequestKey required | string <uuid> Идентификатор запроса на привязку карты. |
CardData required | string Зашифрованные данные карты в формате:
|
object or 3DSv2 (object) В объекте передаются дополнительные параметры в формате Если ключи или значения содержат в себе специальные символы, получившееся значение должно быть закодировано
функцией
Максимальное количество пар
| |
Token required | string Подпись запроса. |
{- "TerminalKey": "TinkoffBankTest",
- "RequestKey": "13021e10-a3ed-4f14-bcd1-823b5ac37390",
- "CardData": "U5jDbwqOVx+2vDApxe/rfACMt+rfWXzPdJ8ZXxNFVIiZaLZrOW72bGe9cKZdIDnekW0nqm88YxRD↵jyfa5Ru0kY5cQV alU+juS1u1zpamSDtaGFeb8sRZfhj72yGw+io+qHGSBeorcfgoKStyKGuBPWfG↵d0PLHuyBE6QgZyIAM1XfdmNlV0UAxOnkTGDsskL pIt3AWhw2e8KOar0vwbgCTDjznDB1/DLgOW01↵Aj/bXyLJoG1BkOrPBm9JURs+f+uyFae0hkRicNKNgXoN5pJTSQxOEauOi6ylsVJ B3WK5MNYXtj6x↵GlxcmTk/LD9kvHcjTeojcAlDzRZ87GdWeY8wgg==",
- "DATA": {
- "property1": "string",
- "property2": "string"
}, - "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc7b96"
}
{- "TerminalKey": "testRegress",
- "CustomerKey": "testCustomerKey",
- "RequestKey": "8de92934-26c9-474c-a4ce-424f2021d24d",
- "CardId": "5555",
- "Success": true,
- "ErrorCode": "0",
- "Status": "NEW",
- "RebillId": "130799909",
- "Message": "Неверные параметры",
- "Details": "string",
- "MD": "ACQT-563587431",
- "PaReq": "eJxVUl1TwjAQ/CtM30s+KLTDHGHQwsiogFh09C2kp1RpC2nLh7/eBAtqnnYvN3ubvUD/kK4bO9RFkmc9hzWp08BM5XGSvfecRT RyA6cvIFppxPARVaVRwD0WhXzHRhL3HMUU73itwKVtyl1Pcs8Nli3pymUQK+z2Sww6joDZYI5bAfUgYeY0OZAzNYparWRWCpBqe zWeiDZnLe3BqSmkqMeh4PRy2p02BfJThkymKCIsSiAnCCqvslIfhXEG5Eyg0muxKstN0SVkv983yyT7zN/emroiQOwlkF8js8qiwogdk lg8rEfT5WK0jj6G7D4cepNo8TWNBmwSDXtAbAfEskTjkPk0oF6DeV3a6jLj8VQHmVoXglFTqTFs7IjBn4u/BTBZa7OK8yPODPCwyT M0HSbACwby6/f6xsaoSpNMMN89+uHdV/iUPz2nyat/uxrPXz5nuX/c2nBPTVYxMflwzthJ0hIgVobUeyP1yg469xW+AedOuuM="
}
Для мерчантов, использующих собственную платежную форму
Метод возвращает статус привязки карты
TerminalKey required | string <= 20 characters Идентификатор терминала, выдается мерчанту Т‑Кассой. |
RequestKey required | string Идентификатор запроса на привязку карты. |
Token required | string Подпись запроса. |
{- "TerminalKey": "testRegressBank",
- "RequestKey": "13021e10-a3ed-4f14-bcd1-823b5ac37390",
- "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e"
}
{- "TerminalKey": "TinkoffBankTest",
- "RequestKey": "13021e10-a3ed-4f14-bcd1-823b5ac37390",
- "Status": "NEW",
- "Success": true,
- "CardId": "156516516",
- "RebillId": "134249124",
- "ErrorCode": "0",
- "Message": "Неверные параметры",
- "Details": "Данный RequestKey не найден.",
- "CustomerKey": "testCustomer1234"
}
Возвращает список всех привязанных карт клиента, включая удаленные
TerminalKey required | string Идентификатор терминала, выдается мерчанту Т‑Кассой. |
CustomerKey required | string Идентификатор клиента в системе мерчанта. |
SavedCard | boolean Признак сохранения карты для оплаты в 1 клик. |
Token required | string Подпись запроса |
IP | string IP-адрес запроса |
{- "TerminalKey": "testRegressBank",
- "CustomerKey": "testCustomer1234",
- "SavedCard": "true",
- "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e",
- "IP": "2011:0db8:85a3:0101:0101:8a2e:0370:7334"
}
[- {
- "CardId": "881900",
- "Pan": "518223******0036",
- "Status": "D",
- "RebillId": "6155312073",
- "CardType": 0,
- "ExpDate": "1122"
}
]
Метод для удаления привязанной карты клиента.
TerminalKey required | string <= 20 characters Идентификатор терминала, выдается мерчанту Т‑Кассой. |
CustomerKey required | string <= 36 characters Идентификатор клиента в системе мерчанта. |
CardId required | string <= 40 characters Идентификатор карты в системе Т‑Кассы. |
Token required | string Подпись запроса. |
IP | string <= 40 characters IP-адрес запроса. |
{- "TerminalKey": "testRegressBank",
- "CustomerKey": "testCustomer1234",
- "CardId": "156516516",
- "Token": "30797e66108934dfa3d841b856fdad227c6b9c46d6a39296e02dc800d86d181e",
- "IP": "2011:0db8:85a3:0101:0101:8a2e:0370:7334"
}
{- "TerminalKey": "TinkoffBankTest",
- "Status": "D",
- "CustomerKey": "testCustomer1234",
- "CardId": "156516516",
- "CardType": 0,
- "Success": true,
- "ErrorCode": "0",
- "Message": "Неверные параметры",
- "Details": "Не удалось удалить карту клиента, для данного клиента такая карта не существует"
}
Уведомления об операциях — это уведомления магазину о статусе выполнения платежа. На основании этих уведомлений магазин должен предоставлять клиенту услугу или товар.
Чтобы самостоятельно настроить уведомления:
Т‑Касса может присылать письма с уведомлениями об успешных платежах — статус CONFIRMED
. Настроить уведомления на электронную
почту можно в личном кабинете. Уведомления на почту можно комбинировать с уведомлениями по HTTP(s).
При совершении операций через методы Authorize
, FinishAuthorize
, Confirm
, Cancel
на адрес Notification URL
высылается уведомление POST-запросом с информацией об операции. При использовании
одностадийного проведения платежа при обращении к методу FinishAuthorize
уведомление
отправляется на сайт мерчанта на адрес Notification URL
синхронно и ожидает ответа в течение 10
секунд.
После получения или неполучения ответа за заданное время сервис переадресует
клиента на Success URL
или Fail URL
в зависимости от результата платежа.
Если уведомление обработано успешно, мерчант должен ответить с HTTP-кодом 200
и телом сообщения OK
— без тегов, заглавными буквами.
Если тело сообщения отлично от OK
, уведомление считается неуспешным. В этом случае сервис будет повторно отправлять
уведомление в течение 24 часов каждый час, а затем раз в сутки в течение месяца.
То же самое касается метода Charge — за исключением того, что этот метод не перенаправляет клиента.
Т‑Банк Бизнес может сообщать магазину об успешных или ошибочных привязках счета. Для этого в настройках терминала нужно указать URL, куда будут отправляться POST-запросы со статусами.
Если в NotificationURL
используются порты, можно использовать порт 443 (HTTPS)
.
Актуальный список внешних сетей, которые использует Т‑Банк для отправки уведомлений:
Чтобы уведомления работали корректно, добавьте эти сети в исключения сетевых фильтров или других видов защиты, которыми пользуетесь.
Если в уведомлениях вам нужно получать дополнительные параметры, передайте параметр DATA
с возможными ключами —
параметр включается через менеджера или техническую поддержку:
Ключ | Расшифровка |
---|---|
description |
Описание. |
name |
ФИО. |
number |
Отображение номера договора в реестрах по AFT и ИЭ по МФО. |
order_number |
Номер заказа. |
paymentId |
Номер транзакции. |
fphone |
Телефон. |
s_firstname |
Отображение ФИО в реестрах по AFT и ИЭ по МФО. |
s_lastname |
Отображение ФИО в реестрах по AFT и ИЭ по МФО. |
s_middlename |
Отображение ФИО в реестрах по AFT и ИЭ по МФО. |
terminalKey |
Номер терминала. |
В ответе возвращается параметр Data
— не полностью в верхнем регистре.
Укажите в настройках терминала URL, чтобы получать на него POST-запросы со статусами:
Статус | Описание |
---|---|
AUTHORIZED |
Деньги захолдированы на карте клиента. Ожидается подтверждение операции. * |
CONFIRMED |
Операция подтверждена. |
PARTIAL_REVERSED |
Частичная отмена. |
REVERSED |
Операция отменена. |
PARTIAL_REFUNDED |
Произведён частичный возврат. |
REFUNDED |
Произведён возврат. |
REJECTED |
Списание денежных средств закончилась ошибкой. |
DEADLINE_EXPIRED ** |
Автоматическое закрытие сессии, которая превысила срок пребывания в статусе 3DS_CHECKING — больше 36 часов. |
* Операция может быть подтверждена:
Через личный кабинет.
Через метод Confirm.
Автоматически — если у магазина настроена одностадийная схема оплаты для магазина в личном кабинете.
По неподтвержденным операциям деньги не возмещаются. Узнать статус платежа можно через метод GetState.
** Напишите на acq_help@tbank.ru c просьбой включить отправку уведомлений об автозакрытии сессий в статусе 3DS_CHECKING
.
В случае успешной обработки уведомления мерчанту нужно вернуть ответ HTTP CODE = 200
с телом сообщения OK
—
без тегов, заглавными английскими буквами.
PHP. Пример ответа на HTTP(s)-уведомление
<?php
echo «OK»;
?>
Java. Пример ответа на HTTP(s)-уведомление
@POST
@Path("/ok")
public Response NotifyResponse() {
return Response.status(200).entity("OK").build();
}
Если ответ OK
не получен, уведомление считается неуспешным, и сервис будет повторно отправлять это уведомление раз в час
в течение 24 часов. Если за это время уведомление не доставлено, оно будет перемещено в архив.
При получении уведомления и перед его обработкой настоятельно рекомендуем проверить подпись запроса.
Чтобы сформировать подпись запроса для уведомления:
Ключ-Значение
— кроме параметра Token
. Например:[["TerminalKey": "1321054611234DEMO"],["OrderId": "201709"],["Success": "true"],["Status": "AUTHORIZED"],["PaymentId": "8742591"],["ErrorCode": "0"],["Amount": "9855"],["CardId": "322264"],["Pan": "430000******0777"],["ExpDate": "1122"],["RebillId": "101709"]]
Password
. Password — пароль для терминала, указан в личном кабинете мерчанта:[["TerminalKey": "1321054611234DEMO"],["OrderId": "201709"],["Success": "true"],["Status": "AUTHORIZED"],["PaymentId": "8742591"],["ErrorCode": "0"],["Amount": "9855"],["CardId": "322264"],["Pan": "430000******0777"],["ExpDate": "1122"],["RebillId": "101709"],["Password": "Dfsfh56dgKl"]]
[["Amount": "9855"],["CardId": "322264"],["ErrorCode": "0"],["ExpDate": "1122"],["OrderId": "201709"],["Pan": "430000******0777"],["Password": "Dfsfh56dgKl"],["PaymentId": "8742591"],["RebillId": "101709"],["Status": "AUTHORIZED"],["Success": "true"],["TerminalKey": "1321054611234DEMO"]]
985532226401122201709430000******0777Dfsfh56dgKl8742591101709AUTHORIZEDtrue1321054611234DEMO
b906d28e76c6428e37b25fcf86c0adc52c63d503013fdd632e300593d165766b
Пример генерации токена:
private static final String PASSWORD_KEY = "Password"; private static final String PASSWORD_VALUE = "12345678";
private String generateToken(final Map<String, String> parameters) throws UnsupportedEncodingException,
NoSuchAlgorithmException { final Map<String, String> sortedParameters = new TreeMap<String, String>(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<String,String> params, final String expectedToken) {
final String actualToken = params.get(TOKEN);
return !(expectedToken == null || !expectedToken.equals(actualToken));
}
Метод для получения уведомлений об изменении статуса платежа. Реализуется на стороне мерчанта.
Уведомление о привязке (NotificationAddCard)
Для мерчантов, использующих собственную платежную форму
Уведомления магазину о статусе выполнения метода привязки карты — AttachCard.
После успешного выполнения метода AttachCard Т‑Касса отправляет POST-запрос с информацией о привязке карты.
Уведомление отправляется на ресурс мерчанта на адрес Notification URL
синхронно и ожидает ответа в течение 10 секунд.
После получения ответа или не получения его за заданное время сервис переадресует клиента на Success AddCard URL
или Fail AddCard URL
— в зависимости от результата привязки карты.
В случае успешной обработки нотификации мерчант должен вернуть ответ с телом сообщения OK
— без тегов, заглавными английскими буквами.
Если тело сообщения отлично от OK
, любая нотификация считается неуспешной, и сервис будет повторно отправлять
нотификацию раз в час в течение 24 часов. Если за это время нотификация так и не доставлена, она складывается в дамп.
Нотификация о фискализации (NotificationFiscalization)
Если используется подключенная онлайн касса, по результату фискализации будет
отправлена нотификация с фискальными данными. Такие нотификации не отправляются маркетплейсам.
Нотификация о статусе привязки счета по QR (NotificationQr)
После привязки счета по QR магазину отправляется статус привязки и токен.
Нотификация будет приходить по статусам ACTIVE
и INACTIVE
.
TerminalKey | string <= 20 characters Идентификатор терминала. Выдается мерчанту Т‑Кассой при заведении терминала. |
Amount | number <= 10 characters Сумма в копейках. |
OrderId | string <= 36 characters Идентификатор заказа в системе мерчанта. |
Success | boolean Успешность прохождения запроса — |
Status | string <= 20 characters Статус платежа. |
PaymentId | number <= 20 characters Уникальный идентификатор транзакции в системе Т‑Кассы. |
ErrorCode | string <= 20 characters Код ошибки. |
Message | string Краткое описание ошибки. |
Details | string Подробное описание ошибки. |
RebillId | number <= 20 characters Идентификатор автоплатежа. |
CardId | number Идентификатор карты в системе Т‑Кассы. |
Pan | string Замаскированный номер карты или телефона. |
ExpDate | string Срок действия карты
в формате |
Token | string Подпись запроса. Формируется по такому же принципу, как и в случае запросов в Т‑Кассу. |
object (DataNotification) Дополнительные параметры платежа, переданные при создании заказа. Являются обязательными для платежей в рассрочку. В ответе параметр приходит в формате |
{- "TerminalKey": "TinkoffBankTest",
- "Amount": 100000,
- "OrderId": "21050",
- "Success": true,
- "Status": "string",
- "PaymentId": 13660,
- "ErrorCode": "0",
- "Message": "string",
- "Details": "string",
- "RebillId": 3207469334,
- "CardId": 10452089,
- "Pan": "string",
- "ExpDate": "0229",
- "Token": "7241ac8307f349afb7bb9dda760717721bbb45950b97c67289f23d8c69cc7b96",
- "DATA": {
- "Route": "TCB",
- "Source": "Installment",
- "CreditAmount": 10000
}
}
Если на терминале включена фискализация чеков и к нему привязана онлайн-касса, вместе с платежом можно отправлять чеки.
Передаваемый чек может быть в формате ФФД 1.05 и ФФД 1.2 — это зависит от привязанной к терминалу онлайн-кассы.
Чтобы передать чек в формате ФФД 1.2, нужно, чтобы к терминалу была подключена касса с поддержкой этого формата, а
в чеке передавался параметр FfdVersion
со значением 1.2
.
Чек прихода передается при вызове методов Init или Confirm. В случае двустадийного платежа при передаче чека через методы Init и Confirm приоритетным будет считаться чек, переданный в Confirm.
Чек возврата передается через метод Cancel. В чеке должна быть указаны позиции возврата, а сумма чека возврата должна совпадать с возвращаемой суммой.
Техническая поддержка не дает рекомендации клиентам по использованию определённых параметров в чеках — за это отвечает сам клиент. Рекомендуем самостоятельно разобраться в налаживании схемы работы фискализации с юристами, поддержкой онлайн-кассы и соответствующими органами.
Поддержка оказывает консультации технического характера, если в процессе фискализации возникают ошибки.
Подробная инструкция по подключению онлайн-кассы
Чтобы пройти тест-кейсы 7 и 8:
За формирование чека отвечает клиент. При подключении через:
Receipt
нужно передавать в запросе Init.Важно
Для подключения онлайн-кассы нужен активированный терминал. Также нужно указать корректный сайт магазина в настройках терминала — иначе может возникнуть ошибка подключения кассы.
Метод позволяет отправить закрывающий чек в кассу. Условия работы метода:
CONFIRMED
.Receipt
.Receipt
был передан хотя бы один объект — Receipt.Items.PaymentMethod
=
full_prepayment
, prepayment
или advance
.TerminalKey required | string Идентификатор терминала выдается мерчанту Т‑Кассой. |
PaymentId required | string Идентификатор платежа в системе Т‑Кассы. |
required | Receipt_FFD_12 (object) or Receipt_FFD_105 (object) Объект с данными чека. |
Token required | string Подпись запроса |
{- "TerminalKey": "TinkoffBankTest",
- "PaymentId": "2304882",
- "Receipt": {
- "FfdVersion": "string",
- "ClientInfo": {
- "Birthdate": "string",
- "Citizenship": "string",
- "DocumentСode": "21",
- "DocumentData": "string",
- "Address": "string"
}, - "Taxation": "osn",
- "Email": "a@test.ru",
- "Phone": "+79031234567",
- "Customer": "78894325",
- "CustomerInn": "788621292",
- "Items": [
- {
- "AgentData": {
- "AgentSign": "paying_agent",
- "OperationName": "Позиция чека",
- "Phones": [
- "+790912312398"
], - "ReceiverPhones": [
- "+79221210697",
- "+79098561231"
], - "TransferPhones": [
- "+79221210697"
], - "OperatorName": "Tinkoff",
- "OperatorAddress": "г. Тольятти",
- "OperatorInn": "7710140679"
}, - "SupplierInfo": {
- "Phones": [
- "+79221210697",
- "+79098561231"
], - "Name": "ООО Вендор товара",
- "Inn": "7710140679"
}, - "Name": "Наименование товара 1",
- "Price": 10000,
- "Quantity": 1,
- "Amount": 10000,
- "Tax": "vat10",
- "PaymentMethod": "full_payment",
- "PaymentObject": "goods_with_marking_code",
- "UserData": "Данные пользователя ext.test.qa@tinkoff.ru",
- "Excise": "12.2",
- "CountryCode": "056",
- "DeclarationNumber": "12345678901",
- "MeasurementUnit": "шт",
- "MarkProcessingMode": "string",
- "MarkCode": {
- "MarkCodeType": "EAN8",
- "Value": "12345678"
}, - "MarkQuantity": {
- "Numerator": 1,
- "Denominator": 2
}, - "SectoralItemProps": {
- "FederalId": "001",
- "Date": "21.11.2020",
- "Number": "123/43",
- "Value": "test value SectoralItemProps"
}
}
], - "Payments": {
- "Cash": 90000,
- "Electronic": 50000,
- "AdvancePayment": 0,
- "Credit": 0,
- "Provision": 0
}
}, - "Token": "string"
}
{- "Success": true,
- "ErrorCode": "2304882",
- "Message": "Неверные параметры"
}
Чтобы квитанция отправилась, на платежной форме нужно отображать электронную почту с выбором чек-бокса Нужна квитанция
.
Вы можете настроить обязательный ввод электронной почты на платежной форме. В таком случае электронная почта для отправки квитанции будет обязательной для заполнения.
При включении этой настройки покупателям будет доступна только оплата картой — T-Pay, Sber Pay и другие способы будут недоступны. Для включения настройки обратитесь в чат поддержки.
Receipt
для ФФД 1.05JSON-объект с данными чека. Обязателен, если подключена онлайн-касса.
Параметр | Тип | Обязательность | Описание | Тег ФФД |
---|---|---|---|---|
Items |
Array of objects | Да | Массив, содержащий в себе информацию о товарах. Параметры объекта описаны в таблице Структура объекта Items. |
|
FfdVersion |
String | Нет | Версия ФФД. Возможные значения: • FfdVersion: 1.2 • FfdVersion: 1.05 Версия ФФД по умолчанию — 1.05. |
|
Email |
String | Нет* | Электронная почта для отправки чека. | 1008 |
Phone |
String | Нет* | Телефон для отправки чека. | 1008 |
Taxation |
Enum | Да | Система налогообложения. Возможные значения: • osn — общая СН;• usn_income — упрощенная СН;• usn_income_outcome — упрощенная СН (доходы минус расходы);• envd — единый налог на вмененный доход;• esn — единый сельскохозяйственный налог;• patent — патентная СН.Примечание: ‣ Самозанятые работают по системе налогообложения НПД — налог на профессиональную деятельность. Интегрировать онлайн-кассу и передавать такую СНО не нужно. Формировать чеки нужно в приложении или веб-версии «Мой налог». ‣ Автоматизированная упрощённая система налогообложения. Передавать такую систему налогообложения нужно как УСН. Это работает только для обычной схемы, для Т-Чеков не работает. |
1055 |
Payments |
Object | Нет** | Объект c информацией о видах суммы платежа. Параметры объекта описаны в таблице Структура объекта Payments. |
* Должен быть заполнен один из параметров — Phone
или E-mail
.
** Если объект не передан, автоматически указывается итоговая сумма чека с видом оплаты «Безналичный».
Если передан объект receipt.Payments
, значение в Electronic
должно быть равно итоговому значению Amount
в методе Init.
При этом сумма введенных значений по всем видам оплат, включая Electronic
, должна быть равна сумме всех товаров (Amount
),
переданных в объекте receipt.Items
.
Shops
Параметр | Тип | Обязательность | Описание |
---|---|---|---|
ShopCode |
String | Да | Присвоенный идентификатор точки на стороне банка. |
Amount |
String | Да | Сумма в копейках, которая относится к указанному ShopCode . |
Name |
String | Нет | Наименование позиции. Максимум — 128 символов. |
Fee |
String | Нет | Сумма комиссии в копейках, удерживаемая из возмещения партнера в пользу маркетплейса. Если не передано, используется комиссия, указанная при регистрации. |
Items
Параметр | Тип | Обязательность | Описание | Тег ФФД |
---|---|---|---|---|
Name |
String | Да | Наименование товара. | 1030 |
Price |
Number | Да | Цена в копейках. | 1078 |
Quantity |
Number | Да | Количество/вес: • целая часть не больше 5 знаков; • дробная часть не больше 3 знаков для Атол и 2 знаков для CloudPayments. |
1023 |
Amount |
Number | Да | Сумма в копейках. Целочисленное значение не больше 10 знаков. | 1043 |
PaymentMethod |
Enum | Да | Признак способа расчёта. Если значение не передано, по умолчанию в онлайн-кассу передается full_payment .Возможные значения: • full_prepayment — предоплата 100%;• prepayment — предоплата;• advance — аванс;• full_payment — полный расчет;• partial_payment — частичный расчет;• credit — передача в кредит;• credit_payment — оплата кредита. |
1214 |
PaymentObject |
Enum | Да | Признак предмета расчёта.Если значение не передано, по умолчанию в онлайн-кассу отправляется commodity .Возможные значения: • commodity — товар;• excise — подакцизный товар;• job — работа;• service — услуга;• gambling_bet — ставка азартной игры;• gambling_prize — выигрыш азартной игры;• lottery — лотерейный билет• lottery_prize — выигрыш лотереи;• intellectual_activity — предоставление результатов интеллектуальной деятельности;• payment — платеж;• agent_commission — агентское вознаграждение;• composite — составной предмет расчета;• another — иной предмет расчета. |
1212 |
Tax |
Enum | Да | Ставка налога. Возможные значения: • none — без НДС;• vat0 — НДС по ставке 0%;• vat10 — НДС чека по ставке 10%;• vat20 — НДС чека по ставке 20%;• vat110 — НДС чека по расчетной ставке 10/110;• vat120 — НДС чека по расчетной ставке 20/120. |
1199 |
Ean13 |
String | Нет | Штрихкод в требуемом формате. В зависимости от типа кассы, требования могут отличаться: • АТОЛ Онлайн — шестнадцатеричное представление с пробелами. Максимальная длина — 32 байта (^[a-fA-F0-9]{2}$)(^([afA-F0-9]{2}\s){1,31}[a-fA-F0-9]{2}$). Пример: 00 00 00 01 00 21 FA 41 00 23 05 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 AB 00 .• CloudKassir — длина строки: четная, от 8 до 150 байт — то есть от 16 до 300 ASCII символов ['0' - '9' , 'A' - 'F' ] шестнадцатеричного представления кода маркировки товара. Пример: 303130323930303030630333435 .• OrangeData — строка, содержащая base64 кодированный массив от 8 до 32 байт. Пример: igQVAAADMTIzNDU2Nzg5MDEyMwAAAAAAAQ== .Если в запросе передать не прошедший валидацию параметр Ean13 , возвращается неуспешный ответ с текстом ошибки в параметре message — «Неверный параметр Ean13». |
1162 |
ShopCode |
String | Нет | Код магазина. Для параметра ShopСode нужно использовать значение параметра Submerchant_ID , полученного в ответ при регистрации магазинов через XML. Если XML не используется, передавать поле не нужно. |
|
AgentData |
Object | Да, если используется агентская схема | Данные агента. Параметры объекта описаны в таблице Структура объекта AgentData. | |
SupplierInfo |
Object | Да, если передается значение AgentSign в объекте AgentData |
Данные поставщика платежного агента. Параметры объекта описаны в таблице Структура объекта AgentData. |
Как передать скидку в платеже
На всех кассах, кроме Cloud Kassir, скидка уже должна быть заложена на стороне клиента — к нам в запросе должны приходить итоговые значения Price
, Quantity
, Amount
.
Произведение цены и количества/веса (Price * Quantity
) должно быть равно общей сумме (Amount
).
Для Cloud Kassir скидка может быть учтена только в Amount
— Price
можно прописывать без скидки.
Промокоды и бонусы
При оплате бонусами для каждой позиции прописывается реальная полная стоимость в цене — Price
. В объекте Payments
нужно указать AdvancePayment
(сумма оплаты бонусами) и Electronic
(сумма, которую заплатил клиент).
Payments
Параметр | Тип | Обязательность | Описание | Тег ФФД |
---|---|---|---|---|
Cash |
Number(14) | Нет | Вид оплаты «Наличные». Сумма к оплате в копейках, не больше 14 знаков. | 1031 |
Electronic |
Number(14) | Да | Вид оплаты «Безналичный». | 1081 |
AdvancePayment |
Number(14) | Нет | Вид оплаты «Предварительная оплата (Аванс)». | 1215 |
Credit |
Number(14) | Нет | Вид оплаты «Постоплата (Кредит)». | 1216 |
Provision |
Number(14) | Нет | Вид оплаты «Иная форма оплаты». | 1217 |
AgentData
Данные агента. Обязателен, если используется агентская схема.
Параметр | Тип | Обязательность | Описание | Тег ФФД |
---|---|---|---|---|
AgentSign |
String | Нет | Признак агента. Возможные значения: • bank_paying_agent — банковский платежный агент;• bank_paying_subagent — банковский платежный субагент;• paying_agent — платежный агент;• paying_subagent — платежный субагент;• attorney — поверенный;• commission_agent — комиссионер;• another — другой тип агента. |
1222 |
OperationName |
String | Нет | Наименование операции. Атрибут обязателен, если AgentSign передан в значениях:• bank_paying_agent • bank_paying_subagent |
1044 |
Phones |
Array of Strings | Нет | Телефоны платежного агента в формате +{Ц} . Атрибут обязателен, если в AgentSign передан в значениях:• bank_paying_agent ;• bank_paying_subagent ;• paying_agent ;• paying_subagent . |
1073 |
ReceiverPhones |
Array of Strings | Нет | Телефоны оператора по приему платежей в формате +{Ц} .Атрибут обязателен, если в AgentSign передан в значениях:• paying_agent ;• paying_subagent . |
1074 |
TransferPhones |
Array of Strings | Нет | Телефоны оператора перевода в формате +{Ц} .Атрибут обязателен, если в AgentSign передан в значениях:• bank_paying_agent ;• bank_paying_subagent . |
1075 |
OperatorName |
String | Нет | Наименование оператора перевода. Атрибут обязателен, если в AgentSign передан в значениях:• bank_paying_agent ;• bank_paying_subagent . |
1026 |
OperatorAddress |
String | Нет | Адрес оператора перевода. Атрибут обязателен, если в AgentSign передан в значениях:• bank_paying_agent ;• bank_paying_subagent . |
1005 |
OperatorInn |
String | Нет | ИНН оператора перевода. Атрибут обязателен, если в AgentSign передан в значениях:• bank_paying_agent ; • bank_paying_subagent . |
1016 |
SupplierInfo
Данные поставщика платежного агента. Обязателен, если передается значение AgentSign
в объекте AgentData
.
Параметр | Тип | Обязательность | Описание | Тег ФФД |
---|---|---|---|---|
Phones |
Массив String | Да, если передается значение AgentSign в объекте AgentData . |
Телефон поставщика в формате +{Ц} . 1–19 символов в каждой строке массива. |
1171 |
Name |
String | Да, если передается значение AgentSign в объекте AgentData . |
Наименование поставщика. В данные 239 символов включаются телефоны поставщика + 4 символа на каждый телефон. Например, если передано два телефона поставщика длиной 12 и 14 символов, максимальная длина наименования поставщика будет 239 – (12 + 4) – (14 + 4) = 205 символов. |
1225 |
Inn |
String | Да, если передается значение AgentSign в объекте AgentData . |
ИНН поставщика в формате ЦЦЦЦЦЦЦЦЦЦ . 10–12 символов. |
1226 |
Пример запроса:
{
"TerminalKey":"TinkoffBankTest",
"Amount":140000,
"OrderId":"21050",
"Description":"Подарочная карта на 1000 рублей",
"Token":"871199b37f207f0c4f721a37cdcc71dfcea880b4a4b85e3cf852c5dc1e99a8d6"
"DATA":{
"Phone":"+71234567890",
"Email":"a@test.com"},
"Receipt": {
"Email":"a@test.ru",
"Phone":"+79031234567",
"Taxation":"osn",
"Items": [
{
"Name":"Наименование товара 1",
"Price":10000,
"Quantity":1.00,
"Amount":10000,
"Tax":"vat10"
},
{
"Name":"Наименование товара 2",
"Price":20000,
"Quantity":2.00,
"Amount":40000,
"Tax":"vat20"
},
{
"Name":"Наименование товара 3",
"Price":30000,
"Quantity":3.00,
"Amount":90000,
"Tax":"vat10"
}
]
}
}
Пример запроса, если используется агентская схема:
{
"TerminalKey":"TinkoffBankTest",
"Amount": 50000,
"OrderId":"21050",
"Description":"Подарочная карта на 1000 рублей",
"Token":"2ED30E046136931431B5251B7C9A1EAC68DAB082203BD42676BA14A851359DF4",
"DATA":{"Phone":"+71234567890","Email":"a@test.com"},
"Receipt": {
"Email": "a@test.ru",
"Phone": "+79031234567",
"Taxation": "osn",
"Customer":"TestCustomer",
"CustomerInn":"1234567890",
"Payments": {
"electronic": 50000,
"cash": 90000,
"advancePayment": 0,
"credit": 0,
"provision": 0
},
"AgentData": {
"AgentSign": "bank_paying_subagent",
"OperationName": "Чек",
"Phones": ["+19221210697", "+19098561231"],
"ReceiverPhones": ["+29221210697", "+29098561231"],
"TransferPhones": ["+39221210697"],
"OperatorName": "Tinkoff",
"OperatorAddress": "г.Москва",
"OperatorInn": "7710140679"
},
"SupplierInfo": {
"Phones": ["+49221210697", "+49098561231"]
},
"Items": [
{
"AgentData": {
"AgentSign": "paying_agent",
"OperationName": "Позиция чека",
"Phones": ["+790912312398"],
"ReceiverPhones": ["+79221210697", "+79098561231"],
"TransferPhones": ["+79221210697"],
"OperatorName": "Tinkoff",
"OperatorAddress": "г. Тольятти",
"OperatorInn": "7710140679"
},
"SupplierInfo": {
"Phones": ["+79221210697", "+79098561231"],
"Name": "ООО Вендор товара",
"Inn": "7710140679"
},
"Name": "Наименование товара 1",
"Price": 10000,
"Quantity": 1.00,
"Amount": 10000,
"Tax": "vat10",
"Ean13": "303130323930303030630333435",
"ShopCode": "12345",
"MeasurementUnit": "шт"
},
{
"Name": "Наименование товара 2",
"Price": 20000,
"Quantity": 2.00,
"Amount": 40000,
"Tax": "vat20"
},
{
"Name": "Наименование товара 3",
"Price": 30000,
"Quantity": 3.00,
"Amount": 90000,
"Tax": "vat10"
}
]
}
}
Receipt
для ФФД 1.2JSON-объект с данными чека. Обязателен, если подключена онлайн-касса.
Параметр | Тип | Обязательность | Описание | Тег ФФД |
---|---|---|---|---|
Items |
Array of objects | Да | Массив, содержащий в себе информацию о товарах. Параметры объекта описаны в таблице Структура объекта Items. |
|
FfdVersion |
String | Нет | Версия ФФД. Возможные значения: • FfdVersion: 1.2 • FfdVersion: 1.05 Версия ФФД по умолчанию — 1.05. |
|
Email |
String | Нет* | Электронная почта для отправки чека. | 1008 |
Phone |
String | Нет* | Телефон для отправки чека. | 1008 |
Taxation |
Enum | Да | Система налогообложения. Возможные значения: • osn — общая СН;• usn_income — упрощенная СН;• usn_income_outcome — упрощенная СН (доходы минус расходы);• envd — единый налог на вмененный доход;• esn — единый сельскохозяйственный налог;• patent — патентная СН.Примечание: ‣ Самозанятые работают по системе налогообложения НПД — налог на профессиональную деятельность. Интегрировать онлайн-кассу и передавать такую СНО не нужно. Формировать чеки нужно в приложении или веб-версии «Мой налог». ‣ Автоматизированная упрощённая система налогообложения. Передавать такую систему налогообложения нужно как УСН. Это работает только для обычной схемы, для Т-Чеков не работает. |
1055 |
Payments |
Object | Нет** | Объект c информацией о видах суммы платежа Параметры объекта описаны в таблице Структура объекта Payments. |
* Должен быть заполнен один из параметров — Phone
или E-mail
.
** Если объект не передан, автоматически указывается итоговая сумма чека с видом оплаты «Безналичный».
Если передан объект receipt.Payments
, значение в Electronic
должно быть равно итоговому значению Amount
в методе Init.
При этом сумма введенных значений по всем видам оплат, включая Electronic
, должна быть равна сумме всех товаров (Amount
),
переданных в объекте receipt.Items
.
Наименование | Тип | Обязательность | Описание | Тег ФФД |
---|---|---|---|---|
FfdVersion |
String | Нет | Версия ФФД. Возможные значения: • FfdVersion: 1.2 • FfdVersion: 1.05 Версия ФФД по умолчанию — 1.05. |
|
ClientInfo |
Object | Нет | Информация по покупателю. | |
Taxation |
Enum | Да | Система налогообложения. Возможные значения: • osn — общая СН;• usn_income — упрощенная СН;• usn_income_outcome — упрощенная СН (доходы минус расходы);• envd — единый налог на вмененный доход;• esn — единый сельскохозяйственный налог;• patent — патентная СН.Примечание: ‣ Самозанятые работают по системе налогообложения НПД — налог на профессиональную деятельность. Интегрировать онлайн-кассу и передавать такую СНО не нужно. Формировать чеки нужно в приложении или веб-версии «Мой налог». ‣ Автоматизированная упрощённая система налогообложения. Передавать такую систему налогообложения нужно как УСН. Это работает только для обычной схемы, для Т-Чеков не работает. |
1055 |
Email |
String | Нет* | Электронная почта для отправки чека. | 1008 |
Phone |
String | Нет* | Телефон для отправки чека. | 1008 |
Customer |
String | Нет | Идентификатор/Имя покупателя. | 1227 |
CustomerInn |
String | Нет | ИНН покупателя. | 1228 |
Items |
Array of objects | Да | Массив, содержащий в себе информацию о товарах. | |
Payments |
Object | Нет** | Объект c информацией о видах суммы платежа. Параметры объекта описаны в таблице Структура объекта Payments. | |
OperatingСheckProps |
Object | Нет | Операционный реквизит чека (тег 1270). | |
SectoralCheckProps |
Object | Нет | Отраслевой реквизит чека (тег 1261). | |
AddUserProp |
Object | Нет | Дополнительный реквизит пользователя (тег 1084). | |
AdditionalCheckProps |
String | Нет | Дополнительный реквизит чека (БСО) (тег 1192). |
* Должен быть заполнен один из параметров — Phone
или E-mail
.
** Если объект не передан, автоматически указывается итоговая сумма чека с видом оплаты «Безналичный».
Если передан объект receipt.Payments
, значение в Electronic
должно быть равно итоговому значению Amount
в методе Init.
При этом сумма введенных значений по всем видам оплат, включая Electronic
, должна быть равна сумме всех товаров (Amount
),
переданных в объекте receipt.Items
.
ClientInfo
Параметр | Тип | Обязательность | Описание | Тег ФФД |
---|---|---|---|---|
Birthdate |
String | Нет | Дата рождения покупателя в формате ДД.ММ.ГГГГ . |
1243 |
Citizenship |
String | Нет | Числовой код страны, гражданином которой является покупатель. Код страны указывается в соответствии с Общероссийским классификатором стран мира ОКСМ. | 1244 |
DocumentСode |
String | Нет | Числовой код вида документа, удостоверяющего личность Может принимать только значения: • 21 — паспорт гражданина Российской Федерации; • 22 — паспорт гражданина Российской Федерации, дипломатический паспорт, служебный паспорт, удостоверяющие личность гражданина Российской Федерации за пределами Российской Федерации; • 26 — временное удостоверение личности гражданина Российской Федерации, выдаваемое на период оформления паспорта гражданина Российской Федерации; • 27 — свидетельство о рождении гражданина Российской Федерации — для граждан Российской Федерации в возрасте до 14 лет; • 28 — иные документы, признаваемые документами, удостоверяющими личность гражданина Российской Федерации в соответствии с законодательством Российской Федерации • 31 — паспорт иностранного гражданина; • 32 — иные документы, признаваемые документами, удостоверяющими личность иностранного гражданина в соответствии с законодательством Российской Федерации и международным договором Российской Федерации; • 33 — документ, выданный иностранным государством и признаваемый в соответствии с международным договором Российской Федерации в качестве документа, удостоверяющего личность лица безгражданства; • 34 — вид на жительство (для лиц без гражданства); • 35 — разрешение на временное проживание (для лиц без гражданства); • 36 — свидетельство о рассмотрении ходатайства о признании лица без гражданства беженцем на территории Российской Федерации по существу; • 37 — удостоверение беженца; • 38 — иные документы, признаваемые документами, удостоверяющими личность лиц без гражданства в соответствии с законодательством Российской Федерации и международным договором Российской Федерации; • 40 — документ, удостоверяющий личность лица, не имеющего действительного документа, удостоверяющего личность, на период рассмотрения заявления о признании гражданином Российской Федерации или о приеме в гражданство Российской Федерации. |
1245 |
DocumentData |
String | Нет | Реквизиты документа, удостоверяющего личность — например, серия и номер паспорта. | 1246 |
Address |
String | Нет | Адрес покупателя (клиента), грузополучателя. Максимум — 256 символов. | 1254 |
OperatingСheckProps
Параметр | Тип | Обязательность | Описание |
---|---|---|---|
Name |
String | Да | Идентификатор операции (тег 1271). Принимает значения 0 до определения значения реквизита ФНС России. |
Value |
String | Да | Данные операции (тег 1272). |
Timestamp |
String | Да | Дата и время операции в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС (тег 1273). |
SectoralCheckProps
Параметр | Тип | Обязательность | Описание |
---|---|---|---|
FederalId |
String | Да | Идентификатор ФОИВ (тег 1262). Максимальное количество символов — 3. |
Date |
String | Да | Дата документа основания в формате ДД.ММ.ГГГГ (тег 1263). |
Number |
String | Да | Номер документа основания (тег 1264). |
Value |
String | Да | Значение отраслевого реквизита (тег 1265). |
AddUserProp
Параметр | Тип | Обязательность | Описание |
---|---|---|---|
Name |
String | Да | Наименование дополнительного реквизита пользователя (тег 1085). |
Value |
String | Да | Значение дополнительного реквизита пользователя (тег1086). |
Items
Параметр | Тип | Обязательность | Описание | Тег ФФД |
---|---|---|---|---|
Name |
String | Да | Наименование товара. Максимум — 128 символов. |
1030 |
Price |
Number | Да | Цена в копейках. | 1079 |
Quantity |
Number | Да | Количество/вес: • целая часть не больше 5 знаков; • дробная часть не больше 3 знаков для Атол и 2 знаков для CloudPayments. |
1023 |
Amount |
Number | Да | Сумма в копейках. Целочисленное значение не больше 10 знаков. | 1043 |
PaymentMethod |
Enum | Да | Признак способа расчёта. Если значение не передано, по умолчанию в онлайн-кассу передается full_payment .Возможные значения: • full_prepayment — предоплата 100%;• prepayment — предоплата;• advance — аванс;• full_payment — полный расчет;• partial_payment — частичный расчет;• credit — передача в кредит;• credit_payment — оплата кредита. |
1214 |
PaymentObject |
Enum | Да | Признак предмета расчёта.Если значение не передано, по умолчанию в онлайн-кассу отправляется commodity .Возможные значения: • commodity — товар;• excise — подакцизный товар;• job — работа;• service — услуга;• gambling_bet — ставка азартной игры;• gambling_prize — выигрыш азартной игры;• lottery — лотерейный билет• lottery_prize — выигрыш лотереи;• intellectual_activity — предоставление результатов интеллектуальной деятельности;• payment — платеж;• agent_commission — агентское вознаграждение;• composite — составной предмет расчета;• another — иной предмет расчета. |
1212 |
UserData |
String | Нет | Дополнительный реквизит предмета расчета. | 1191 |
Excise |
Number | Нет | Сумма акциза в рублях с учетом копеек, включенная в стоимость предмета расчета. Целая часть — не больше 8 знаков, дробная — не болше 2. Значение не может быть отрицательным. |
1229 |
CountryCode |
String | Нет | Цифровой код страны происхождения товара в соответствии с Общероссийским классификатором стран мира, 3 цифры. | 1230 |
DeclarationNumber |
String | Нет | Номер таможенной декларации. Максимум — 32 цифры. | 1231 |
MeasurementUnit |
String | Да | Единицы измерения. Передается в соответствии с ОК 015-94 (МК 002-97). Возможные значения. Также можно передавать произвольные значения. MeasurementUnit обязателен, если ФФД онлайн-кассы — 1.2. |
2108 |
MarkProcessingMode |
String | Нет* | Режим обработки кода маркировки. Должен принимать значение 0 . |
2102 |
MarkCode |
Object | Нет* | Код маркировки в машиночитаемом формате, который формируется по установленным требованиями и правилам и наносится на упаковку, товары или товарные ярлыки. Параметры объекта описаны в таблице Структура объекта MarkCode. | 1163 |
MarkQuantity |
Object | Нет** | Реквизит «дробное количество маркированного товара». MarkQuantity не является обязательным объектом — в том числе для товаров с маркировкой. Этот объект можно передавать, если товар с маркировкой — то есть даже при ФФД 1.2 этот объект не является обязательным. |
|
SectoralItemProps |
Array of objects | Нет*** | Отраслевой реквизит предмета расчета. Параметры объекта описаны в таблице Структура объекта SectoralItemProps. | |
Tax |
Enum | Да | Ставка налога. Возможные значения: • none — без НДС;• vat0 — НДС по ставке 0%;• vat10 — НДС чека по ставке 10%;• vat20 — НДС чека по ставке 20%;• vat110 — НДС чека по расчетной ставке 10/110;• vat120 — НДС чека по расчетной ставке 20/120. |
1199 |
AgentData |
Object | Да, если используется агентская схема | Данные агента. Параметры объекта описаны в таблице Структура объекта AgentData. | |
SupplierInfo |
Object | Да, если передается значение AgentSign в объекте AgentData |
Данные поставщика платежного агента. Параметры объекта описаны в таблице Структура объекта AgentData. |
* Включается в чек, если предметом расчета является товар, который подлежит обязательной
маркировке средством идентификации — соответствующий код в поле paymentObject
.
** Передается только в случае, если:
расчет осуществляется за маркированный товар — соответствующий код в поле paymentObject
,
значение в поле measurementUnit
равно 0
.
Состоит из двух параметров:
Numerator
— числитель дробной части предмета расчета. Значение должно быть строго меньше значения реквизита Denominator
.Denominator
— знаменатель дробной части предмета расчета. Значение равно количеству товара в партии (упаковке), имеющей общий код маркировки товара.Пример:
{
"numerator": "1",
"denominator": "2"
}
*** Указывается только для товаров, подлежащих обязательной маркировке средством идентификации. Включение этого реквизита предусмотрено НПА отраслевого регулирования для соответствующей товарной группы.
Как передать скидку в платеже
На всех кассах, кроме Cloud Kassir, скидка уже должна быть заложена на стороне клиента — к нам в запросе должны приходить итоговые значения Price
, Quantity
, Amount
.
Произведение цены и количества/веса (Price * Quantity
) должно быть равно общей сумме (Amount
).
Для Cloud Kassir скидка может быть учтена только в Amount
— Price
можно прописывать без скидки.
Промокоды и бонусы
При оплате бонусами для каждой позиции прописывается реальная полная стоимость в цене — Price
. В объекте Payments
нужно указать AdvancePayment
(сумма оплаты бонусами) и Electronic
(сумма, которую заплатил клиент).
MarkCode
Параметр | Тип | Обязательность | Описание |
---|---|---|---|
MarkCodeType |
String | Да | Тип штрихкода. Возможные значения: • UNKNOWN — код товара, формат которого не идентифицирован, как один из реквизитов; • EAN8 — код товара в формате EAN-8; • EAN13 — код товара в формате EAN-13; • ITF14 — код товара в формате ITF-14; • GS10 — код товара в формате GS1, нанесенный на товар, не подлежащий маркировке • GS1M — код товара в формате GS1, нанесенный на товар, подлежащий маркировке; • SHORT — код товара в формате короткого кода маркировки, нанесенный на товар; • FUR — контрольно-идентификационный знак мехового изделия; • EGAIS20 — код товара в формате ЕГАИС-2.0; • EGAIS30 — код товара в формате ЕГАИС-3.0; • RAWCODE — код маркировки, как он был прочитан сканером. |
value |
String | Да | Код маркировки. |
SectoralItemProps
Параметр | Тип | Обязательность | Описание | Тег ФФД |
---|---|---|---|---|
FederalId |
Enum (string) | Да | Идентификатор ФОИВ — федеральный орган исполнительной власти. | 1262 |
Date |
String | Да | Дата нормативного акта ФОИВ. | 1263 |
Number |
String | Да | Номер нормативного акта ФОИВ. | 1264 |
Value |
String | Да | Состав значений, определенных нормативного актом ФОИВ. | 1265 |
Пример запроса с маркировкой:
{
"TerminalKey": "testRegressTwoFiscalAtolBank",
"Amount": 90000,
"OrderId": "{{$timestamp}}",
"Description": "RS_TESTING",
"CustomerKey": "a.grigorash",
"Receipt": {
"FfdVersion": "1.2",
"ClientInfo": {
"Birthdate": "21.11.1995",
"Сitizenship": "643",
"DocumentCode": "40",
"DocumentData": "4507 443564",
"Address": "г. Краснодар ул. Привокзальная 1"
},
"Taxation": "osn",
"Email": "ext.test.qa@tinkoff.ru",
"Phone": "88005553535",
"Customer": "Клиент",
"CustomerInn": "516974792202",
"Items": [
{
"AgentData": {
"AgentSign": "paying_agent",
"OperationName": "Позиция чека",
"Phones": [
"+790912312398"
],
"ReceiverPhones": [
"+79221210697",
"+79098561231"
],
"TransferPhones": [
"+79221210697"
],
"OperatorName": "Tinkoff",
"OperatorAddress": "г. Тольятти",
"OperatorInn": "7710140679"
},
"SupplierInfo": {
"Phones": [
"+79221210697",
"+79098561231"
],
"Name": "ООО Вендор товара",
"Inn": "7710140679"
},
"Name": "Тестовый товар",
"Price": 100000,
"Quantity": 1,
"Amount": 90000,
"Tax": "vat20",
"PaymentMethod": "full_prepayment",
"PaymentObject": "goods_with_marking_code",
"UserData": "Данные пользователя ext.test.qa@tinkoff.ru",
"Excise": 12.2,
"CountryCode": "056",
"DeclarationNumber": "12345678901",
"MeasurementUnit": "шт",
"MarkProcessingMode": "0",
"MarkCode": {
"MarkCodeType": "EAN8",
"Value": "12345678"
},
"MarkQuantity": {
"Denominator": "2",
"Numerator": "1"
},
"SectoralItemProps": [
{
"Number": "123/43",
"Date": "21.11.2020",
"Value": "test value SectoralItemProps",
"FederalId": "001"
}
]
}
]
}
}
Пример запроса без маркировки:
{
"TerminalKey": "testRegressTwoFiscalAtolBank",
"Amount": 90000,
"OrderId": "{{$timestamp}}",
"Description": "RS_TESTING",
"CustomerKey": "a.grigorash",
"Receipt": {
"FfdVersion": "1.2",
"Taxation": "osn",
"Email": "ext.test.qa@tinkoff.ru",
"Phone": "88005553535",
"Customer": "Клиент",
"CustomerInn": "516974792202",
"Items": [
{
"AgentData": {
"AgentSign": "paying_agent",
"OperationName": "Позиция чека",
"Phones": ["+790912312398"],
"ReceiverPhones": ["+79221210697", "+79098561231"],
"TransferPhones": ["+79221210697"],
"OperatorName": "Tinkoff",
"OperatorAddress": "г. Тольятти",
"OperatorInn": "7710140679"
},
"SupplierInfo": {
"Phones": ["+79221210697", "+79098561231"],
"Name": "ООО Вендор товара",
"Inn": "7710140679"
},
"Name": "Тестовый товар",
"Price": 100000,
"Quantity": 1,
"Amount": 90000,
"Tax": "vat20",
"PaymentMethod": "full_prepayment",
"PaymentObject": "commodity",
"MeasurementUnit": "шт"
}
]
}
}
CODE | MESSAGE | DETAILS (опционально) |
---|---|---|
0 | None | |
1 | Параметры не сопоставлены | |
2 | Отсутствуют обязательные параметры | |
3 | Внутренняя ошибка системы интернет-эквайринга | |
4 | Не получится изменить статус платежа | |
5 | Обратитесь в поддержку, чтобы уточнить детали | |
6 | Не получилось привязать карту покупателя. Обратитесь в поддержку, чтобы уточнить детали | |
7 | Неверный статус покупателя | |
8 | Неверный статус транзакции | |
9 | Переадресовываемый URL пуст | |
10 | Метод Charge заблокирован для данного терминала | |
11 | Невозможно выполнить платеж | |
12 | Неверный параметр RedirectDueDate |
|
13 | Оплата с мобильного телефона недоступна | |
13 | Оплата через WebMoney недоступна | |
14 | Платеж неверный | |
15 | Не удалось осуществить платеж через EINV | |
16 | Счет был отклонен | |
17 | Неверные введенные данные | |
18 | Не удалось осуществить платеж через MC | |
19 | Не удалось осуществить платеж через WebMoney | |
20 | Ошибка повторного идентификатора заказа | |
21 | Внутренняя ошибка вызова сервиса ACQAPI | |
27 | Кассовая ссылка на текущий момент недоступна для повторной активации | |
50 | Ошибка отправки нотификации | |
51 | Ошибка отправки email | |
52 | Ошибка отправки SMS | |
53 | Обратитесь к продавцу | |
54 | Повторное прохождение 3DS авторизации не допустимо | |
55 | Повторите попытку позже | Не найдено оплаченных назначений платежа |
60 | Запрещено получение документов по URL для текущего терминала | Запрещено получение документов по URL для текущего терминала |
61 | Должен быть заполнен один из параметров: emailList или URL |
Должен быть заполнен один из параметров: emailList или URL |
62 | Запрещено получение документов по URL для текущего systemId | Запрещено получение документов по URL для текущего systemId |
63 | Не найдена операция | Не найдена операция |
64 | Невалидные данные в запросе | Невалидные данные в запросе |
65 | Не удалось сформировать документ. Обратитесь в службу поддержки | Не удалось сформировать документ. Повторите операцию позднее |
66 | Не удалось сформировать документ. Повторите операцию позднее | Запрещено получение документов по URL для текущего терминала |
67 | Не удалось сформировать документ. Повторите операцию позднее | Не удалось сформировать документ. Повторите операцию позднее |
68 | Не удалось сформировать документ. Обратитесь в службу поддержки | Стороний сервис не доступен |
76 | Операция по иностранной карте недоступна | Операция по иностранной карте недоступна. Воспользуйтесь картой российского банка |
77 | Оплата иностранной картой недоступна | Оплата по иностранной карте недоступна. Воспользуйтесь картой российского банка |
78 | Выплата на иностранную карту недоступна | Выплата на иностранную карту недоступна. Воспользуйтесь картой российского банка |
79 | Возврат на иностранную карту недоступен. | Возврат на иностранную карту недоступен. Обратитесь в поддержку |
96 | Ошибка Iris | |
97 | Ошибка Jasper | |
98 | Ошибка SubExt | |
99 | Попробуйте повторить попытку позже | Банк, выпустивший карту, отклонил операцию |
100 | • Попробуйте еще раз. Если ошибка повторится — обратитесь в поддержку • Платеж не получится отменить, потому что деньги покупателя не были зарезервированы • Платеж уже отменен • Не получилось отменить платеж. Укажите сумму не больше, чем зарезервировано • Покупатель опротестовал платеж в банке. Обратитесь в поддержку,чтобы уточнить детали • Платеж уже подтвержден • Нужно настроить подтверждение платежа через СМС (3DS) — для этого обратитесь в поддержку • Карта покупателя неактивна |
|
101 | Не пройдена идентификация 3DS | Ошибка прохождения 3-D Secure |
102 | • Обратитесь в поддержку, чтобы уточнить детали • Сообщите покупателю, чтобы попробовал оплатить еще раз. Если ошибка повторится — обратитесь в поддержку |
|
102 | Операция отклонена, пожалуйста обратитесь в интернет-магазин или воспользуйтесь другой картой | Заказ не может быть оплачен, обратитесь службу поддержки |
102 | Превышен лимит на сумму выплат в месяц | |
102 | Отказ. больше двух успешных оплат с одного email в неделю по проекту dolyame.ru | |
102 | Отказ. больше двух успешных оплат с одного phone в неделю по проекту dolyame.ru | |
102 | Отказ. больше двух успешных оплат с одной карты в неделю по проекту dolyame.ru | |
102 | Отказ. больше двух успешных оплат с одной карты в сутки по проекту dolyame.ru | |
102 | Отказ. больше двух успешных оплат с одного устройства в сутки по проекту dolyame.ru | |
102 | Отказ. больше двух успешных оплат с одного устройства в неделю по проекту dolyame.ru | |
102 | Отказ. больше двух успешных оплат с одного куки/идентификатора клиентского агента в сутки по проекту dolyame.ru | |
102 | Отказ. больше двух успешных оплат с одного куки/идентификатора клиентского агента в неделю по проекту dolyame.ru | |
102 | Отказ. Попытка оплаты с виртуальных или мошеннических бинов по проекту dolyame.ru | |
103 | Недостаточно средств на счете | |
104 | Ошибка выполения рекуррента | |
105 | Нужно настроить автоплатежи по Maestro — для этого обратитесь в поддержку | |
106 | Карта не поддерживает 3DS проверку. Попробуйте другую карту | |
107 | Неверно введен CardId . Проверьте, что такая карта была ранее привязана |
|
108 | Оплата разрешена только по 3DS картам. Попробуйте другую карту | |
109 | Не найден dsTranId для сессии |
|
110 | Не передан cres |
|
111 | Передан некорректный cres |
|
116 | Недостаточно средств на карте | |
119 | Превышено допустимое количество запросов авторизации операции | |
120 | Попробуйте повторить попытку позже | |
123 | Попробуйте повторить попытку позже | |
125 | Попробуйте повторить попытку позже | |
191 | Некорректный статус договора, обратитесь к вашему менеджеру | |
201 | Поле PaymentId не должно быть пустым |
|
201 | Поле paymentMethod не должно быть пустым |
|
201 | Поле paymentObject не должно быть пустым |
|
201 | Поле measurementUnit не должно быть пустым |
|
202 | Терминал заблокирован | |
203 | Параметры запроса не должны быть пустыми | |
204 | Неверный токен. Проверьте пару TerminalKey /SecretKey |
|
205 | Неверный токен. Проверьте пару TerminalKey /SecretKey |
Указанный терминал не найден |
206 | email не может быть пустым |
|
207 | Параметр DATA превышает максимально допустимый размер |
|
208 | Наименование ключа из параметра DATA превышает максимально допустимый размер |
|
209 | Значение ключа из параметра DATA превышает максимально допустимый размер |
|
210 | Размер поля TerminalKey должен быть от {min} до {max} |
|
211 | Неверный формат IP | |
212 | Размер поля OrderId должен быть от {min} до {max} |
|
213 | Размер поля Description должен быть от {min} до {max} |
|
214 | Поле Currency должно быть меньше или равно {value} |
|
215 | Размер поля PayForm должен быть от {min} до {max} |
|
216 | Размер поля CustomerKey должен быть от {min} до {max} |
|
217 | Поле PaymentId числовое значение должно укладываться в формат (<{integer} цифр><{fraction} цифр>) |
|
218 | Значение PAN не является числовым |
|
219 | Неверный срок действия карты | |
220 | Размер поля CardHolder должен быть от {min} до {max} |
|
221 | Значение CVV не является числовым |
|
222 | Поле CardId числовое значение должно укладываться в формат (<{integer} цифр><{fraction} цифр>) |
|
223 | Поле RebillId числовое значение должно укладываться в формат <{integer} цифр><{fraction} цифр> |
|
224 | Неверный формат email |
|
225 | Неверный формат email |
|
226 | Размер поля email должен быть от {min} до {max} |
|
227 | Размер поля Phone должен быть от {min} до {max} |
|
228 | Размер поля MD должен быть от {min} до {max} |
|
229 | Размер поля PaRes должен быть от {min} до {max} |
|
230 | Размер поля Code должен быть от {min} до {max} |
|
231 | Не найден идентификатор карты | |
233 | Размер поля CardId должен быть от {min} до {max} |
|
234 | Размер поля PAN должен быть от {min} до {max} |
|
235 | Размер поля RebillId должен быть от {min} до {max} |
|
236 | Размер поля Token должен быть от {min} до {max} |
|
237 | Размер поля PaymentId должен быть от {min} до {max} |
|
238 | Размер поля ExpDate должен быть от {min} до {max} |
|
239 | Размер поля CVV должен быть от {min} до {max} |
|
240 | Поле Amount числовое значение должно укладываться в формат (<{integer} цифр>.<{fraction} цифр>) |
|
241 | Поле Currency должно быть больше или равно {value} |
|
242 | Размер поля InfoEmail должен быть от {min} до {max} |
|
243 | Ошибка шифрования карточных данных | |
244 | Ошибка сопоставления карточных данных | |
245 | Параметр AddCard не сопоставлен |
|
246 | Параметр SendEmail не сопоставлен |
|
247 | Параметр Amount не сопоставлен |
|
248 | Параметр CVV не сопоставлен |
|
249 | Параметр Currency не сопоставлен |
|
250 | Параметр DATA не сопоставлен |
|
251 | Неверная сумма. Сумма должна быть больше или равна {value} копеек | |
252 | Срок действия карты истек | |
253 | Валюта {value} не разрешена для данного терминала | |
254 | Дополнительные возможности отключены | |
255 | Платеж не найден | |
256 | Указан некорректный тип безопасной сделки | Указан некорректный тип безопасной сделки |
257 | Некорректное значение признака последней выплаты. Используйте значения true или false |
Некорректное значение признака последней выплаты. Используйте значения true или false |
258 | Неверный параметр Ean13 |
|
259 | Параметр EncryptedPaymentData не сопоставлен |
|
260 | Максимальная длина номера телефона — 30 символов | |
261 | Параметр Source не сопоставлен |
|
262 | Истек срок действия родительского платежа | |
308 | Сумма всех позиций в чеке должна равняться сумме всех видов оплаты | |
309 | Поле Receipt не должно быть пустым |
|
310 | Дробная часть параметра Quantity не должна быть больше {value} знаков |
|
310 | Целая часть параметра Quantity не должна быть больше {value} знаков |
|
311 | Ошибка регистрации чека в Receipt Service | |
312 | Ошибка получения чека из Receipt Service | |
313 | Ошибка создания организации в Receipt Service | |
314 | Ошибка создания кассы в Receipt Service | |
315 | Касса не найдена | |
316 | Максимальная длина номера телефона — 19 символов | |
317 | Неверное значение поля agentSign |
|
318 | Поле AgentSign не должно быть пустым |
|
319 | Поле SupplierInfo не должно быть пустым |
|
320 | Поле Inn в объекте SupplierInfo не должно быть пустым |
|
321 | Поле Receipts не должно быть пустым |
|
322 | Передана некорректная подпись | |
323 | Amount не совпадают |
|
324 | Указанный тип отмены не может быть выполнен по операции | |
325 | Транзакция не найдена | |
326 | Неверный amount | |
327 | "Терминал не поддерживает C2C переводы или не передан Route=""C2C"" для C2C терминала" | |
328 | Должны присутствовать данные для списания и данные для пополнения | |
329 | email или Phone обязательны при передаче чека |
|
330 | Сумма в запросе больше чем в оригинальной транзакции | |
331 | Неверный терминал | |
332 | Поле Fee в объекте Shops должно быть больше или равно 0 |
|
333 | Поле Amount в объекте Shops должно быть больше или равно 1 |
|
334 | Суммы в чеке и в платеже не совпадают | |
335 | OrderId {value} не найден для TerminalKey {value} |
|
381 | Возможна привязка только резидентных карт | |
382 | Возможна привязка только нерезидентных карт | |
383 | Поле markProcessingMode должно быть заполнено для маркированных товаров |
|
383 | Поле markCode должно быть заполнено для маркированных товаров |
|
383 | Поле sectoralItemProps должно быть заполнено для маркированных товаров |
|
383 | Поле markQuantity должно быть заполнено для маркированных товаров |
|
383 | Поле {value} для маркированных товаров должно принимать значение {value} | |
383 | markCode.value имеет некорректное значение |
|
383 | numerator и denominator должны быть больше 0 |
|
383 | numerator должен быть строго меньше denominator |
|
383 | Для версии кассы ФФД 1.2 объекты AgentData и SupplierInfo должны быть переданы в Items |
|
384 | Для C2C запрещено проводить рекуррент по данной ПС | Для C2C запрещено проводить рекуррент по данной ПС |
385 | Поле markQuantity передается только для маркированных товаров |
|
385 | Поле markProcessingMode передается только для маркированных товаров |
|
386 | markQuantity заполняется только для дробного расчета за штучный маркированный товар |
|
401 | Внутренняя ошибка системы | |
402 | Повторите попытку позже | |
403 | Превышен лимит на количество пополнений в месяц | |
404 | Превышен лимит на сумму пополнения через бесконтактные сервисы | |
405 | Превышен лимит на сумму пополнения по виртуальной карте | |
406 | Превышен лимит на сумму пополнения в месяц через мобильное приложение | |
407 | Не найдено | |
410 | Данный тип перевода для терминала не доступен | |
411 | Сертификат не найден | |
412 | Истек срок действия сертификата | |
413 | Сертификат заблокирован | |
414 | Сертификат уже сохранен для данного терминала | |
415 | Дата начала срока действия сертификата еще не наступила | |
416 | Некорректное значение параметра SetStatus | |
417 | Ошибка обработки сертификата | |
419 | Параметр account объекта DATA должен быть заполнен корректно для MCC: 6050/6051 |
|
500 | Добавление карты к данному терминалу запрещено | |
501 | Терминал не найден | |
502 | Карта по requestKey не найдена |
|
503 | CustomerKey не найден |
|
504 | Не удалось провести платеж при привязке карты | |
505 | Не удалось привязать карту. Внутренняя ошибка | |
506 | Карта добавлена в черный список | |
507 | Карта не поддерживает 3DS проверку. Попробуйте другую карту | |
508 | Неверный номер карты | |
509 | Не удалось выполнить отмену при привязке карты | |
510 | Карта уже привязана к переданному CustomerKey | |
511 | Проверка 3DS не пройдена | |
512 | Не удалось выполнить запрос на проверку 3DS | |
513 | Не удалось выполнить платеж после прохождения 3DS | |
514 | Введена неверная сумма холдирования | |
515 | Внутренняя ошибка | |
600 | Карта добавлена в черный список | |
600 | Интернет-магазин отклонил операцию по данной карте. Обратитесь в интернет-магазин для выяснения причин отказа в платеже | |
601 | Разрешены операции только по Master Card | |
603 | Превышено количество попыток оплаты с данной карты | |
604 | Обратитесь в поддержку, чтобы уточнить детали | |
619 | Отсутствуют обязательные данные отправителя | Не переданы персональные данные отправителя для операции emoney2card больше 15000 руб. |
620 | Проверьте сумму — она не может быть равна 0 | Сумма операции не может быть равна 0 |
623 | Выплата по этому заказу уже прошла | Запрещено проводить платеж с OrderId для которого уже есть успешный платеж |
632 | Превышен лимит на сумму операции | Лимит на сумму пополнения emoney2card. См. лимиты |
633 | Превышен лимит на количество переводов в день по иностранным картам | Лимит на кол-во пополнений emoney2card для карт эмитированных нерезидентами РФ за 1 отчетный день |
634 | Превышен лимит на сумму переводов по номеру карты в месяц | Лимит на сумму пополнения emoney2card по номеру карты одного получателя в отчетный месяц |
637 | Не хватает данных получателя или отправителя для выплаты на иностранную карту. Проверьте заполнение | Отсутствуют персональные данные получателя/отправителя при переводе на иностранную карту |
642 | Проверьте номер карты | Карта не прошла проверку по алгоритму Луна |
648 | Магазин заблокирован или еще не активирован. Обратитесь в поддержку, чтобы уточнить детали | |
650 | Сообщите покупателю, чтобы попробовал оплатить еще раз. Если ошибка повторится — обратитесь в поддержку | |
651 | Не получилось совершить платеж. Свяжитесь с поддержкой | Передаваемый Request_Id не найден |
702 | Поле maid и saav должно быть задано в настройках терминала | |
703 | Обратитесь в поддержку, чтобы уточнить детали | |
800 | Комиссия не найдена | |
903 | Повторите попытку позже | |
914 | Платеж не найден | |
926 | Сделка уже закрыта | Сделка уже закрыта |
927 | Сделка не найдена | Сделка не найдена |
991 | Для использования 3dsType нужно установить 3ds терминал |
Для использования TDS-роутинга нужно пользоваться ТДС терминалом |
999 | Попробуйте повторить попытку позже | |
1001 | Свяжитесь с банком | Свяжитесь с банком, выпустившим карту, чтобы провести платеж |
1003 | Неверный магазин | Неверный номер магазина. Идентификатор магазина недействителен |
1004 | Банк, который выпустил карту, считает платеж подозрительным | |
1005 | Платеж отклонен банком, выпустившим карту | Платеж отклонен банком, выпустившим карту |
1006 | Платеж не прошел | Свяжитесь с банком, выпустившим карту, чтобы провести платеж |
1007 | Банк, который выпустил карту, считает платеж подозрительным | |
1008 | Банк, который выпустил карту, отклонил платеж | |
1012 | Банк, который выпустил карту, отклонил платеж | |
1013 | Банк, который выпустил карту, отклонил платеж — сумма превышает лимит по карте | Сумма превышает лимит платежа вашего банка. Воспользуйтесь другой картой или обратитесь в банк |
1014 | Карта недействительна | Неправильные реквизиты — проверьте их или воспользуйтесь другой картой |
1015 | Неверный номер карты | Неверный номер карты |
1017 | Попробуйте снова или свяжитесь с банком, выпустившим карту | Попробуйте снова или свяжитесь с банком, выпустившим карту |
1018 | Неизвестный статус платежа | |
1019 | Банк, который выпустил карту, отклонил платеж — сумма превышает лимит по карте | |
1030 | Повторите попытку позже. | Не получилось оплатить. Попробуйте еще раз |
1033 | Истек срок действия карты | |
1034 | Попробуйте повторить попытку позже | Не получилось оплатить. Воспользуйтесь другой картой или обратитесь в банк, выпустивший карту |
1038 | Превышено количество попыток ввода ПИН-кода — попробуйте снова или обратитесь в банк, выпустивший карту | |
1039 | Платеж отклонен — счет не найден | |
1041 | Карта утеряна | Карта утеряна. Свяжитесь с банком, выпустившим карту |
1043 | Банк, который выпустил карту, считает платеж подозрительным | |
1051 | Недостаточно средств на карте. | Не получилось оплатить. На карте недостаточно средств |
1053 | Платеж отклонен — счет не найден | |
1054 | Истек срок действия карты | Неправильные реквизиты — проверьте их или воспользуйтесь другой картой |
1055 | Неверный ПИН | |
1057 | Покупатель запретил такие операции для своей карты | |
1058 | Покупатель запретил такие операции для своей карты | |
1059 | Банк, который выпустил карту, считает платеж подозрительным | |
1061 | Покупатель превысил лимит платежей по своей карте | |
1062 | Банк, который выпустил карту, отклонил платеж | |
1063 | Банк, который выпустил карту, считает платеж подозрительным | |
1064 | Проверьте сумму | |
1065 | Покупатель превысил лимит платежей по своей карте | |
1071 | Токен просрочен | Токен просрочен |
1075 | Покупатель оплатил максимум раз по своей карте за день | |
1076 | Не получилось отменить резервирование. Обратитесь в поддержку, чтобы уточнить детали | |
1077 | Коды не совпадают — попробуйте снова | |
1078 | Данный тип операции не поддерживается картой | |
1080 | Плательщик ввел неверный срок действия карты | |
1082 | Неверный CVV | Неправильные реквизиты — проверьте их или воспользуйтесь другой картой |
1085 | Операция успешна | Успех |
1086 | Платеж отклонен — не получилось подтвердить ПИН-код | |
1088 | Банк, который выпустил карту, отклонил платеж | |
1089 | Попробуйте повторить попытку позже | Не получилось оплатить. Попробуйте еще раз или обратитесь в банк, выпустивший карту |
1091 | Технические работы в банке, который выпустил карту | |
1092 | Банк, который выпустил карту, отклонил платеж | |
1093 | Банк, который выпустил карту, считает платеж подозрительным | |
1094 | Банк, который выпустил карту, считает платеж подозрительным | |
1096 | Системная ошибка | Системная ошибка |
1099 | Способ оплаты отключен | |
1116 | Некорректная сумма выдачи | Сумма баланса меньше суммы переданной в операции выдачи |
1119 | Параметр account объекта DATA должен быть заполнен корректно для MCC: 6050/6051 |
Передан некорректный номер кошелька |
1125 | Некорректное значение OperationInitiatorType . Должно быть одно из списка |
|
1126 | Несопоставимые значения rebillId или Recurrent с переданным значением OperationInitiatorType |
|
1201 | Обратитесь в поддержку, чтобы уточнить детали | |
1202 | Сумма платежа превышает лимит по разовой операции в этом магазине. Обратитесь в поддержку, чтобы уточнить детали | |
1203 | Сумма платежа превышает лимит по разовой операции или количеству операций в этом магазине. Обратитесь в поддержку, чтобы уточнить детали | |
1204 | Достигнут лимит по суточному обороту. Чтобы изменить лимит, обратитесь в поддержку | |
1205 | Магазин не принимает карты этой страны. Обратитесь в поддержку, чтобы уточнить детали | |
1207 | Сообщите покупателю, чтобы попробовал оплатить еще раз. Если ошибка повторится — обратитесь в поддержку | |
1217 | Воспользуйтесь другой картой или обратитесь к продавцу | Воспользуйтесь другой картой или обратитесь к продавцу |
1218 | Воспользуйтесь другой картой или обратитесь к продавцу | Воспользуйтесь другой картой или обратитесь к продавцу |
1235 | Для карт «Мир» нужно настроить подтверждение платежей по СМС 3DS 2.0. Обратитесь в поддержку, чтобы уточнить детали | |
1316 | Запрещено проведение авторизации | Запрещено проведение авторизации с использованием 3DS |
1502 | Недостаточно средств на счете компании | Insufficient funds |
1503 | Некорректный статус счета, обратитесь в поддержку | Invalid account status |
2014 | Не пройдена идентификация 3DS | |
2015 | Mерчант с таким именем и паролем не найден. | |
2200 | Превышено допустимое количество запросов авторизации операции | |
3001 | Оплата через QrPay недоступна | Ошибка возникает, если для терминала не активирован способ оплаты СБП. Сделать это можно в личном кабинете интернет-эквайринга, в настройках магазина, во вкладке Способы оплаты |
3002 | Недостаточный баланс счёта для отмены | Ошибка возникает, если на расчетном счете магазина недостаточно средств для возврата. Пополните счет и повторите попытку |
3003 | Отмена платежа в связи с мошенничеством | |
3004 | Способ СБП недоступен для магазина | |
3005 | Оплата через СБП не доступна | |
3006 | Банк получателя не может принять возврат. Выберите другой банк | |
3007 | Отказ в проведении операции от СБП | |
3008 | У получателя нет расчетного счета в этом банке. Выберите другой банк | |
3009 | Отказ в проведении операции от СБП или банка получателя | |
3010 | У получателя нет расчетного счета в этом банке. ФИО некорректное | |
3011 | Оплата через E2C недоступна | |
3012 | Привязка счета не найдена | |
3013 | Рекуррентные платежи недоступны | |
3014 | AccountToken не найден |
|
3015 | Неверный статус AccountToken |
|
3016 | Невозможно создать QR | |
3017 | Переданное значение RedirectDueDate вне допустимого диапазона |
|
3018 | Список банков не найден | |
3019 | Не включен СБП в личном кабинете | |
3020 | К данному телефону и банку уже создана привязка. Выберите другой банк | |
3021 | Привязка по номеру телефона недоступна на данном терминале | |
3022 | Превышено доступное количество запросов для привязки. Попробуйте позже | |
3023 | Привязка невозможна | |
3024 | Не удалось найти банк по номеру телефона. Выберите другой банк | |
3026 | Запрос по привязке не идентифицирован | |
3028 | Банк покупателя отклонил возврат. Попросите покупателя обратиться туда или выберите другой его банк | |
3029 | Слишком много неудачных попыток за час. Попробуйте снова через час или выберите другой банк покупателя | По требованиям НСПК в час допустимо проводить не больше 1 попытки возврата по операции |
3030 | Слишком много неудачных попыток за сутки. Попробуйте еще раз завтра или выберите другой банк покупателя | По требованиям НСПК в день допустимо проводить не больше 5 попыток возврата по операции |
3031 | Банк покупателя отклонил возврат. Попросите покупателя обратиться туда или выберите другой его банк | |
3032 | Слишком много неудачных попыток за час. Попробуйте снова через час или выберите другой банк получателя | |
3033 | Слишком много неудачных попыток за сутки. Попробуйте еще раз завтра или выберите другой банк получателя | |
3034 | Банк получателя отклонил выплату. Попросите получателя обратиться туда или выберите другой его банк | |
3035 | Банк получателя отклонил выплату. Попросите получателя обратиться туда или выберите другой его банк | |
3036 | Возникла ошибка. Не получилось сделать выплату | |
3037 | Повторный вызов метода недоступен | |
3038 | Возврат средств через СБП доступен только со счетом в T-Bank. Измените счет в настройках вашего магазина | |
3040 | Техническая ошибка | |
3041 | Слишком много неудачных попыток за сутки. Попробуйте еще раз завтра | |
3042 | Слишком много неудачных попыток за час. Попробуйте снова через час | |
3101 | Оплата по Mir Pay недоступна для магазина | |
3102 | DeepLink для оплаты по Mir Pay не создан | |
8001 | Операция запрещена для рассрочки | |
8002 | T-Bank Credit Broker недоступен. Повторите попытку позже | |
8003 | Операция запрещена для покупки долями | |
8004 | BNPL недоступен. Повторите попытку позже | |
9001 | Попробуйте повторить попытку позже | |
9999 | Внутренняя ошибка системы | |
- | Количество товара должно быть больше нуля | |
- | Максимальная длина rawcode — 223 символа |
|
- | Касса принимает значение markCode только с типом rawcode |
|
- | Для данной кассы ожидалось одно из itemCode или markСode |
|
- | Для данной кассы ожидалось либо itemCode , либо markCode |
|
- | Для данной кассы предусмотрена передача только markСode |
Ошибка | Решение | Онлайн-касса |
---|---|---|
Состояние чека не найдено. Попробуйте позднее | Ошибка на стороне кассы. Обратитесь в поддержку вашей онлайн-кассы и уточните причины ошибки в чеке. | На всех кассах |
Сервер не смог обработать входной чек | Ошибка на стороне кассы. Обратитесь в поддержку вашей онлайн-кассы и уточните причины ошибки в чеке. | На всех кассах |
Код ошибки, который начинается с <!DOCTYPE html и так далее |
Ошибка на стороне кассы. Обратитесь в поддержку вашей онлайн-кассы и уточните причины ошибки в чеке. | Orange Data |
Произошла ошибка при фискализации, обратитесь в службу технической поддержки | Ошибка на стороне кассы. Обратитесь в поддержку вашей онлайн-кассы и уточните причины ошибки в чеке. | На всех кассах |
Чек зависает в очереди на фискализацию с интеграцией через aQsi | Нужно исправить ошибку самостоятельно или через поддержку aQsi. Инструкция: • В личном кабинете aQsi перейдите в Настройки → Интеграции → Фискализация чеков на aQsi 5 из Orange Data. Сгенерируйте токен (ключ) и скопируйте его. • Перейдите в личный кабинет Orange Data в раздел Услуги. Вставьте токен (ключ) и сформируйте счет без ошибки. Инструкция aQsi. |
Orange Data |
REGISTRATION_REQUEST_FAILED — ошибка в запросе |
Причины ошибки могут быть разные. Основная причина — вы не передали версию ФФД 1.2 в своем запросе, при том, что терминал и касса настроены на ФФД 1.2. | На всех кассах |
Неизвестная организация | Онлайн-касса не зарегистрирована. Обратитесь в кассовый сервис и завершите интеграцию. | На всех кассах |
Сумма неналичных оплат превышает сумму чека | В запросе в одной или нескольких позициях чека вы передаете параметры price (цена) и quantity (количество) так, что их произведение не равняется amount (сумма) в данной позиции. С такой ошибкой нужно сделать чек коррекции по этой операции в личном кабинете кассы. | На всех кассах |
Код товарной номенклатуры имеет неизвестный префикс | Неверный код товара, параметр EAN13 . Исправьте параметр EAN13 в своем запросе. Для уточнения можно обратиться в поддержку вашей кассы. С такой ошибкой нужно сделать чек коррекции по этой операции в личном кабинете кассы. |
На всех кассах |
Указанная версия ФФД не соответствует режиму обработки документов ФФД 1.2 | Проверьте версию ФФД на вашем терминале (личный кабинет интернет-эквайринга → раздел Онлайн-кассы) и в запросе. Если версии не совпадают, исправьте версию на актуальную в запросе или в настройках онлайн-кассы в личном кабинете интернет-эквайринга. | На всех кассах |
Ошибка при закрытии документа: некорректное значение параметров команды ФН | Исчерпан ресурс ФН. Обратитесь в онлайн-кассу. | На всех кассах |
Не удалось перейти в режим регистрации после закрытия смены: смена превысила 24 часа | Исчерпан ресурс ФН. Обратитесь в онлайн-кассу. | На всех кассах |
Если поле статуса чека пустое | Вы отправляете запросы на версию ФФД 1.2, а касса и терминал настроены на ФФД 1.05. Отправляйте запросы на версию ФФД 1.05 или переключите настройки кассы и магазина на ФФД 1.2. С такой ошибкой нужно сделать чек коррекции по этой операции в личном кабинете кассы. | На всех кассах |
AuthWrongUserOrPassword |
Ошибка на стороне кассы. Обратитесь в поддержку вашей онлайн-кассы и уточните причины ошибки в чеке. | Ekomkassa |
Неизвестная ошибка обработки | У вас недоступна онлайн-касса. Обратитесь в поддержку онлайн-кассы. | Бизнес.Ру |
Некорректный запрос. Ошибка в поле items : количество элементов в поле receipt.items не может превышать 100 |
Нужно сделать чек коррекции в личном кабинете кассы. Вы передали больше 100 позиций в чеке. В таком случае для будущих операций рекомендуем делить платеж на 2 и более. |
Бизнес.Ру |
Не найдена интеграция с платежной системой | Вы указали неправильные данные для онлайн-кассы в личном кабинете T-Банка. Логин и пароль нужно взять из личного кабинета Бизнес.Ру: раздел Интеграции → Т‑Банк. Там указан логин и придуманный пользователем пароль. Также данные можно уточнить в поддержке приложения. | Бизнес.Ру |
Неизвестная организация | Проблема с настройкой интеграции на стороне кассы. Рекомендуем обратиться в поддержку вашей кассы. | Orange Data и aQsi online |
Очередь документов переполнена | Причина — выключенная касса aQsi или отсутствие интернета. Именно по этой причине все чеки которые поступают по API, встают в очередь на фискализацию в кассовом аппарате aQsi. Чем дольше касса не в сети, тем больше переполнение чеков на фискализацию. Обратитесь в поддержку кассы. |
Orange Data |
В группе нет ни одного устройства | У вас не прописана или неверно прописана группа касс в настройках кассы в личном кабинете интернет-эквайринга — раздел Онлайн-кассы. Группу можно узнать в кассовом сервисе и внести изменения в в личном кабинете интернет-эквайринга. В 90% случаев нужно скорректировать на aQsi. | Orange Data |
Нет оплаченных ККМ для обработки чека | Ошибка на стороне кассы. Обратитесь в поддержку вашей онлайн-кассы и уточните причины ошибки в чеке. | CloudKassir |
Терминал заблокирован | Ошибка на стороне кассы. Обратитесь в поддержку кассы и уточните причины блокировки. | CloudKassir |
Нет касс без признака БСО для организации | У партнера настроена касса с включенным параметром Только для печати БСО . Чеки, которые направляются на формирование в кассу, должны иметь признак БСО. По чеку, который находится в ошибке, означает, что чек был отправлен без признака БСО.Отключите передачу БСО на стороне кассы. |
CloudKassir |
Код группы, указанный в запросе, не соответствует токену | Запрос и терминал настроены на ФФД 1.05. На стороне кассы настроено ФФД 1.2 или наоборот — несоответствие версий. Скорректируйте версии ФФД на стороне интернет-эквайринга и кассы. | На всех кассах |
CLIENT_INFO_EMAIL_AND_PHONE_NOT_FOUND |
Вы не передаете в запросе ФФД 1.2 при том, что касса и терминал настроены на эту версию. | На всех кассах |
Неизвестная группа | На терминале установлена некорректная группа касс. Уточните корректную группу касс в поддержке онлайн-кассы и измените ее в настройках кассы в личном кабинете интернет-эквайринга. | Orange Data и aQsi online |
Таймаут сообщения в очереди | Ошибка на стороне кассы. Обратитесь в поддержку вашей онлайн-кассы и уточните причины ошибки в чеке. | АТОЛ |
Некорректное значение параметров команды ФН | Уточните причины ошибки в поддержке кассы. Скорее всего, вы некорректно передаете СНО — на стороне кассы в настройках указана другая СНО. | АТОЛ |
Во время регистрации чека выяснилось, что в группе нет активных касс | Активируйте тариф в ОФД Платформа. Обратитесь в техническую поддержку ОФД Платформа или самостоятельно активируйте тариф в личном кабинете ОФД. | АТОЛ |
Пользователь заблокирован | Ошибка на стороне кассы. Скорее всего, касса заблокировала вас из-за того, что их услуги не были оплачены. Уточнение можно получить в поддержке кассы. |
АТОЛ |
Ошибка обмена с ФН на уровне интерфейса I2C | ФН не был доступен, могли возникнуть технические неисправности в самой кассе. С такой ошибкой нужно сделать чек коррекции по этой операции в личном кабинете кассы. | АТОЛ |
Недопустимое сочетание реквизитов | В запросе передается признак определённого агента, а на кассе данный признак не установлен. Клиенту нужно подать заявку на изменение данных в личном кабинете АО. 1. Зайдите в личный кабинет АТОЛ Онлайн → раздел Изменение данных. 2. Перейдите на шаг 3 и выберите нужный агент. 3. Сохраните и отправьте заявку администратору. |
АТОЛ |
Операция sell не поддерживается |
У вас приостановлена услуга фискализации. Пополните баланс и продлите действие услуги. Вам нужно обратиться в кассу для получения подробностей. |
КОМТЕТ Касса |
WrongLoginOrPassword |
Неправильный логин или пароль. Уточнитн интеграционные данные от кассы и введите их в личном кабинете интернет-эквайринга повторно: Магазины → Онлайн-касса. |
Ekomkassa |
ErrorIncomingMissingToken |
Проверьте актуальность логина и пароля от кассы. Ошибка может возникать, когда вы изменили пароль в личном кабинете кассы, но не поменяли его в настройках интеграции (в личном кабинете интернет-эквайринга), либо когда в момент отправки запроса в личном кабинете кассы вы были заблокированы. Для уточнений рекомендуем обратиться в поддержку кассы и сделать чек коррекции по этой операции. | Ekomkassa |
Retry limit equals 20 was exceeded | Ошибка может быть вызвана разными причинами — например, недоступностью кассы. Как правило, чеки с такой ошибкой автоматически обрабатываются через какое-то время. Означает, что API не получает от кассы статус отправленного ранее запроса на чек. Если чек не сформируется в течение суток, сделайте чек коррекции в личном кабинете кассы. | Ekomkassa |
Kkm is busy at the moment | Ошибка появляется на интегрированных кассах Эвотор, означает что касса перегружена задачами, обычно такие ошибки автоматически исправляет сервер, автоматически делает новый запрос через небольшой интервал времени, до тех пор пока касса не примет чек. Если чек не сформируется в течение суток, сделайте чек коррекции в личном кабинете кассы. | Ekomkassa |
Операция невозможна, недостаточно питания | Ошибка возникает на интегрированных кассах Эвотор, сервер автоматически перезапускает транзакцию через определенный период времени. Обычно ошибка возникает, когда на кассу Эвотора идет слишком много запросов одновременно. Если чек не сформируется в течение суток, сделайте чек коррекции в личном кабинете кассы. | Ekomkassa |
Session time expired | На кассе не переоткрылась смена. Ошибка автоматически исправляется кассовым сервером, запрос на чек перезапускается через определенный интервал времени. Если этого не произошло в течение суток, сделайте чек коррекции в личном кабинете кассы. | Ekomkassa |
Команда не реализуется в данном режиме ККТ | Ошибка возникает, если касса занята другим процессом, который не дает работать с ФН. В такой ситуации сервер кассы автоматически делает перезапуск чека через определенный интервал времени. Для получения более подробной информации рекомендуем обратиться в поддержку кассы. | Ekomkassa |
Авторизация невозможна. Неверные учетные данные | По этой ошибке есть 2 варианта решения: 1. При подключении кассы Ferma вы указали неверные данные в личном кабинете интернет-эквайринга. Исправьте их. 2. У вас версия ФФД 1.2 на терминале и кассе, но вы не передаете версию ФФД 1.2 в запросе. |
Ferma |
По кассе Ferma не завершена регистрация в ФНС | Нужно завершить регистрацию кассы в личном кабинете Ferma или обратиться в поддержку OFD.RU по почте ofd@ofd.ru или номеру 84955409911. | Ferma |
Не оплачена касса Ferma | Вам нужно оплатить кассу для восстановления работы: продлите услугу в личном кабинете Ferma или обратитесь в поддержку OFD.RU по почте ofd@ofd.ru или номеру 84955409911. | Ferma |
Таймаут сообщения в очереди | ККТ отключена или на ПК клиента не запущено приложение для фискализации чеков. Рекомендуем уточнить причину ошибки у поддержке кассы. | На всех кассах |
Нет касс соответствующих переданному типу платежного агента | Вы передаете тип агента, который не настроен на стороне кассы или отличается от него. С такой ошибкой нужно сделать чек коррекции по этой операции в личном кабинете кассы. | На всех кассах |
В группе нет ни одного устройства с требуемым признаком агента | Вы передаете тип агента, который не настроен на стороне кассы или отличается от него. С такой ошибкой нужно сделать чек коррекции по этой операции в личном кабинете кассы. | На всех кассах |
Неизвестная ошибка | Ошибка на стороне кассы. Обратитесь в поддержку вашей онлайн-кассы и уточните причины ошибки в чеке. | CloudKassir |
Network error | Ошибка на стороне кассы. Обратитесь в поддержку вашей онлайн-кассы и уточните причины ошибки в чеке. | На всех кассах |
Непредвиденная ошибка | Ошибка на стороне кассы. Обратитесь в поддержку вашей онлайн-кассы и уточните причины ошибки в чеке. | Ferma |
Ошибка формата передачи ФН | Ошибка на стороне кассы. Обратитесь в поддержку вашей онлайн-кассы и уточните причины ошибки в чеке. | На всех кассах |
Ошибка | Решение |
---|---|
RReq not found for provided threeDSServerTransID | RReq был получен от эмитента позже, чем был отправлен Submit3DSAuthorization (GetTdsResult). Повторно вызовите метод Submit3DSAuthorization (GetTdsResult) спустя некоторое время — у эмитента есть до 30 минут на отправку RReq после отправки ARes . |
deviceChannel is missing or has incorrect value | Некорректно передается или не передается deviceChannel в 3ds method. |
Не пройдена аутентификация 3DS. Попробуйте повторить попытку позже | Ошибка приходит для метода Submit3DSAuthorization. Проблема на стороне эмитента при прохождении 3DS. |
500 Internal Server Error. При получении ссылки на метод Check3dsVersion и дальнейшей отправки запроса получена ошибка 500 | Ошибка может возникать на стороне ACS. Повторите запрос и обратитесь в поддержку эмитента для уточнения причин. |
Тестовые карты нужны как для прохождения тест-кейсов, так и совершения тестовых платежей. Это два разных процесса, в каждом из которых используются разные данные тестовых карт:
Для прохождения тест-кейсов — тестовый терминал с приставкой DEMO
. Запросы с него нужно отправлять на боевую среду
и использовать тестовые карты из тест-кейса.
Данные карт для тест-кейсов можно найти в личном кабинете: раздел Магазины → Терминалы → Тестовый → Тестировать. При выборе определенного тест-кейса появится информация с данными карты.
Для совершения тестовых платежей — боевой терминал без приставки DEMO
.
Запросы с него нужно отправлять на тестовую среду и использовать тестовые карты, указаные ниже.
Чтобы пользоваться тестовой средой, нужно добавить ваш IP-адрес в White List тестовой среды. Для этого пришлите нам:
ИНН.
Наименование организации.
IP-адрес (или пул адресов), с которого планируется обращение.
Тестовый URL, по которому будете обращаться:
rest-api-test.tinkoff.ru
— для запросов по API в рамках обычных WEB оплат/выплат;rest-api-test.tinkoff.ru
— для запросов в SDK и использования его API;sm-register-test.tcsbank.ru
— для регистрации точек агрегатором/маркетплейсом.Важно
Отправлять запросы для открытия платежной формы для оплаты нужно с IP-адреса, который был добавлен в White List.
Для прохождения тест-кейса №1 в запросе Init не нужно передавать Reсurrent = Y
(recurrent:true
), так как флаг рекуррентов
не даст системе засчитать платеж как тест-кейс.
При получении ошибки «Ошибка нотификации: не получаем ответ ОК» при прохождении тест-кейса №2 нужно проверить правильность передачи ответа на нотификацию. Верный ответ — 200:ОК.
Для прохождения тест-кейсов в запросе Init нельзя передавать параметры, которые противоречат настройкам терминала.
Например, на терминале установлена двухстадийная оплата, а в Init был передан pay_type = О
— признак одностадийности.
Если вам нужно поменять тип проведения платежа:
Вы можете использовать любой срок действия для тестовой карты. Можно произвести несколько тестовых привязок с разными сроками действия и потом через метод GetCardList посмотреть, какие карты привязаны. Тестовые карты используются при проведении операций на тестовой среде.
Описание параметра TransStatus
находится в описании параметров ответа cres
(JSON/JWE cres объект).
Поведение карты | TransStatus | Описание | PAN |
---|---|---|---|
Ошибка оплаты Ошибка при списании |
Нет | - | 2201382000000021 expDate: 12/25 cvv: 123 |
Ошибка оплаты Недостаточно средств |
Нет | - | 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 |
Поведение карты | TransStatus | Описание | PAN |
---|---|---|---|
Успешная оплата | Нет | - | 2200770239097761 expDate: 12/25 cvv: 123 |
Поведение карты | TransStatus | Описание | PAN |
---|---|---|---|
Успешная оплата | Y | AUTHENTICATION_SUCCESSFUL_REASON_18 Успешное прохождение аутентификации без ввода пароля c заполненной transStatusReason High confidence, то есть высокая уверенность в надежности |
2201382000000591 |
Если РКО от Т‑Банка:
Возмещение считается за один календарный день.
Тип операции | Пояснение | Плюс/минус |
---|---|---|
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 | Зачисление ТСП претензии клиента Т‑Банка | Плюс |
Тип файла — текстовый файл в кодировке Win CP-1251
. Разделитель полей — символ ;
, точка с запятой.
Тело реестра состоит из строк. Одна строка — одна операция. Каждая строка тела реестра заканчивается знаком конец строки/перевод каретки (CR/LF) и должна содержать информацию из таблицы ниже.
№ Поля | Наименование/содержание поля | Размерность поля |
---|---|---|
1 | Порядковый номер | Порядковый номер строк и тела реестра. |
2 | Номер карты/телефона | Маскированный номер карты: 1234 56** **** 7890 / Маскированный номер телефона: +7(903)XXX-XX-11. |
3 | ПС | Наименование платежной системы: • Visa, • MC, • Мir, • SBP, • T-Pay, • SberPay. |
4 | Номер заказа | Цифры, буквы. Кроме спецсимволов, не больше 256 знаков. |
5 | Дата операции | DD.MM.YYYY |
6 | Время операции | HH:MM:SS |
7 | Временная зона | MSK |
8 | Код авторизации | Шестизначный буквенно-цифровой код. Уникальный 32-значный номер операции СБ. |
9 | Код терминала | Номер терминала в системах банка. |
10 | Дата обработки операции | DD.MM.YYYY |
11 | Дата перечисления | DD.MM.YYYY |
12 | Сумма операции (руб.) | Сумма операции, разделитель целой и дробной части . (123.45). |
13 | Комиссия Банка (руб.) | Комиссия банка, разделитель целой и дробной части . (123.45). |
13.1* | Комиссия за фискализацию (руб.) | Комиссия за фискализацию, разделитель целой и дробной части . (123.45). |
14 | К перечислению (руб.) | Сумма к возмещению после удержания комиссии банка, разделитель целой и дробнойчасти . (123.45). |
15 | Тип операции | • Debit, • Chargeback_Fee, • 2Chargeback, • 2Chargeback_Reversal, • DebitCorrection, • CreditCorrection, • DebitClientCorrection, • CR_Chargeback, • CR_Chargeback_Fee, • Chargeback_Reversal, • Representment_Reversal, • CancelRefund, • CreditClientCorrection, • Credit, • Chargeback, • Chargeback_Reversal_Fee, • Representment, • Representment_Fee, • AUTH_FAIL. |
16 | RRN | Внутренний номер операции в платежной системе — кроме операций по СБП. Например, 835508576879. |
17 | Payment ID | Номер операции, присваиваемый банком. |
18 | Название терминала | От 4 до 20 латинских символов. |
19 | Тип карты | Карта, выпущенная на территории РФ или иностранная карта Dom/Int. |
20 | DATA | Для передачи дополнительных данных в реестр используется параметр DATA из метода Init — передаётся в виде ключ:значение . Используйте ключи:• Paymentpurpose, • Order_number, • Email, • Name, • Phone, • S_lastname, • S_firstname, • S_middlename, • Number, • Mfo_agreement. |
21 | Описание | Description , переданный в методе Init. |
По техническим вопросам обратитесь на почту acq_help@tbank.ru.
Для предоставления обратной связи и по вопросам улучшения обслуживания и сервиса обратитесь к вашему личному менеджеру.
№ | Описание изменений | Дата |
---|---|---|
1 | Создан документ | 26.05.2023 |
2 | В описание параметра "deviceChannel" для метода FinishAuthorize добавлено уточнение, что значение 02 - Browser (BRW) используется по умолчанию | 16.02.2024 |
3 | Раздел "Рекомендации при интеграции" переименован в "Инструкции по безопасности при интеграции" и дополнен описанием про корректность токена и использование новейших версий CMS | 19.02.2024 |
4 | Раздел "Инструкции по безопасности при интеграции" дополнен описанием про использование ПО для интеграции, полученного не с сайта https://www.tbank.ru/kassa/develop/ | 20.02.2024 |
5 | В раздел "Тестовые карты" добавлено пояснение про карты для тест-кейсов и карты для совершения тестовых платежей | 11.03.2024 |
6 | В раздел "Подпись запроса" добавлена ссылка на сервис для проверки корректности формирования токена | 11.03.2024 |
7 | Исправлено описание параметра "Success" в ответе для всех методов, где он используется | 22.03.2024 |
8 | В раздел "Подпись запроса" добавлено уточнение про поддержку UTF-8 (пункт №5) | 25.03.2024 |
9 | В раздел "Тестирование и обработка ошибок" добавлены типовые ошибки Онлайн-кассы, исправлен URL для закрывающего чека, добавлены параметры "MD", "PaReq", "ACSUrl" в описание метода "Привязка карты" | 04.04.2024 |
10 | В раздел "Возмещения и реестры" добавлен подраздел "Формат реестра" | 11.04.2024 |
11 | В раздел "Платежная форма в webview" были добавлены рекомендации по интеграции | 11.04.2024 |
12 | 12.04.2024 | |
13 | 16.04.2024 | |
14 | В раздел "Фискализация" добавлен подраздел "Подключение Онлайн-кассы", а также в раздел "Нотификации мерчанта об операциях" добавлены дополнительные параметры массива "DATA" | 16.04.2024 |
15 | Обновлено описание пункта №2 дополнительных мер при интеграции с MAPI в разделе "Инструкции по безопасности при интеграции" | 18.04.2024 |
16 | Правка ошибок в параметрах "RebillId" и "CardId" в нотификациях и добавление информации по проведению скидок/бонусов в разделе "Описание дополнительных объектов" | 26.04.2024 |
17 | Добавление пояснения в ответ на метод подтверждения платежа статуса "3DS_CHECKING" | 14.05.2024 |
18 | 16.05.2024 | |
19 | 17.05.2024 | |
20 | 30.05.2024 | |
21 | 10.06.2024 | |
22 | Убрана обязательность параметра "ClientInfo" в чеках для ФФД 1.2. Добавлено описание для формирования токена методом getConfirmOperation | 13.06.2024 |
23 | Добавлено описание ошибок 3020, 3021, 3022, 3023, 3024, 3026, 3032, 3033, 3034, 3035, 3036 и 3038 в раздел "Коды ошибок" | 25.06.2024 |
24 | Добавлен подраздел "Квитанции" и описаны ключи для доп. параметров в "DATA" | 27.06.2024 |
25 | Добавлены теги ФФД к сущностям параметра "Receipt" для ФФД 1.05 и ФФД 1.2 | 27.06.2024 |
26 | Добавлено примечание к параметру "Taxation" в описании доп. объектов | 01.07.2024 |
27 | Убрана обязательность передачи специальных параметров для полей "Route" и "Source" в методах "/cancel" и "/confirm" | 25.07.2024 |
28 | В разделе "Сценарии оплаты по карте" добавлено уточнение про частичный возврат при подключенной онлайн-кассе (блок "Возврат и отмена платежа") | 26.07.2024 |
29 | В разделе нотификаций исправлен тип параметра "PaymentId" на "number" | 02.08.2024 |
30 | Добавлен раздел "Типовые ошибки 3DS", добавлена типовая ошибка по онлайн-кассам, обновлена информация по нотификациям о фискализации, добавлен статус "DEADLINE_EXPIRED" для нотификаций по HTTP(S) | 14.08.2024 |
31 | Обновлено описание нотификаций по HTTP(S) | 28.08.2024 |
32 | Добавлена важная информация о DEMO терминале в разделе "Прохождение 3DS" | 26.09.2024 |
33 | Обновление описания статуса DEADLINE_EXPIRED в разделе "Статусная модель платежа" | 02.10.2024 |
34 | Правки в массиве "Items" для метода работы с чеками | 29.10.2024 |
35 | 01.11.2024 | |
36 | Добавлена информация о том, что SberPay не работает с мерчантами интегрированными через InSales | 06.11.2024 |
37 | Обновлено описание раздела "Безопасность при интеграции" | 07.11.2024 |
38 | В раздел "Сценарии привязки карты" добавлена информация о сроке жизни формы привязки | 12.11.2024 |
39 | В подраздел "Особенности в /Init" добавлена информация об использовании спецсимволов в параметре "returnUrl" | 20.11.2024 |