Прием платежей через T-Pay
Этот сценарий описывает прием платежа через T-Pay. Аутентификация плательщика происходит через вход в приложение Т-Банка. Для платежа не требуется вводить данные карты.
Принимать платежи через T-Pay можно:
- с использованием QR-кода, если платеж производится в десктопном браузере;
- с использованием ссылки для перехода в приложение Т-Банка, если платеж производится с мобильного устройства.
Для приема оплаты с использованием QR-кода вы отображаете QR-код самостоятельно.
После перенаправления по ссылке у пользователя будет 20 минут, чтобы совершить операцию. В противном случае операция закончится ошибкой.
Имеется возможность проводить платежи с автоподтверждением платежа.
Сценарий оплаты
Сценарий зависит от канала платежа клиента: мобильное устройство (mobile) или десктопный браузер (desktop). Параметры устройства клиента в запросе определяют тип ссылки на оплату, которая придет в вебхуке action_required
.
- Мобильное устройство (mobile)
- Десктопный браузер (desktop)
-
Создайте платежную сессию отдельно от платежа методом
session/create
или одновременно с платежом c помощью методаsession/init/payment
с набором необходимых параметров:- В объекте
internet_banking
передайте значениеtpay
в параметреtype
. - В объекте
platform_details
передайте значениеmobile
в параметреtype
. Укажите одно из допустимых значений для параметровos
иbrowser
.
Пример запроса
curl -X POST \
https://proxy.bank131.ru/api/v1/session/init/payment \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "tpay"
}
},
"amount_details": {
"amount": 67000,
"currency": "RUB"
},
"customer": {
"reference": "lucky"
},
"payment_options": {
"platform_details": {
"type": "mobile",
"os": "ios",
"browser": "chrome"
}
}
}'Пример ответа
{
"status": "ok",
"session": {
"id": "ps_3813062",
"status": "in_progress",
"created_at": "2025-09-05T07:14:28.236854Z",
"updated_at": "2025-09-05T07:14:28.298522Z",
"acquiring_payments": [{
"id": "pm_2769418",
"status": "in_progress",
"created_at": "2025-09-05T07:14:28.310910Z",
"customer": {
"reference": "lucky"
},
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "tpay"
}
},
"amount_details": {
"amount": 670000,
"currency": "RUB"
},
"amounts": {}
}]
}
} - В объекте
-
Дождитесь от Банка 131 вебхука
ready_to_confirm
— он означает, что Банк готов провести платеж и ждет вашего подтверждения. -
Подтвердите платеж запросом
session/confirm
или отмените платеж, отправив запросsession/cancel
. -
Дождитесь вебхука
action_required
со ссылкой на оплату в параметреredirect.url
.Вы сами решаете, получать ли вебхуки. Если они отключены, вам потребуется каждый раз отправлять запрос
session/status
, чтобы понять следующий шаг и результат операции.Пример вебхука
curl -X POST \
https://partner.ru \
-H 'content-type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"type": "action_required",
"session": {
"id": "ps_3813080",
"status": "in_progress",
"created_at": "2025-09-05T07:49:12.513214Z",
"updated_at": "2025-09-05T07:49:24.628403Z",
"acquiring_payments": [{
"id": "pm_2769436",
"status": "pending",
"created_at": "2025-09-05T07:49:12.605322Z",
"customer": {
"reference": "vtor_rec"
},
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "tpay"
}
},
"amount_details": {
"amount": 1000700,
"currency": "RUB"
},
"amounts": {},
"customer_interaction": {
"type": "redirect",
"redirect": {
"url": "https://o.tbank.ru/tpay/3000000000000021275",
"base_url": "https://o.tbank.ru/tpay/3000000000000021275",
"method": "GET",
"params": {}
}
}
}],
"actions": {
"confirm": "2025-09-05T07:49:24.148058Z"
}
}
}' -
Перенаправьте плательщика по ссылке из параметра
redirect.url
в приложение Т-Банка. Дождитесь, когда плательщик либо подтвердит, либо отменит оплату. -
Дождитесь от Банка 131 вебхука
ready_to_capture
и спишите захолдированную или меньшую сумму (session/capture
), либо отмените оплату (session/cancel
).Пропустите этот шаг, если у вас не подключены платежи с холдированием. В этом случае холдирование и списание средств произойдет автоматически.
-
Дождитесь от Банка 131 вебхука
payment_finished
с результатом проведения платежа. Статусsucceeded
означает, что платеж успешно проведен.
-
Создайте платежную сессию отдельно от платежа методом
session/create
или одновременно с платежом c помощью методаsession/init/payment
с набором необходимых параметров:- В объекте
internet_banking
передайте значениеtpay
в параметреtype
. - В объекте
platform_details
передайте значениеdesktop
в параметреtype
. Укажите одно из допустимых значений для параметровos
иbrowser
.
Пример запроса
curl -X POST \
https://proxy.bank131.ru/api/v1/session/init/payment \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "tpay"
}
},
"amount_details": {
"amount": 67000,
"currency": "RUB"
},
"customer": {
"reference": "lucky"
},
"payment_options": {
"platform_details": {
"type": "desktop",
"os": "windows",
"browser": "chrome"
}
}
}'Пример ответа
{
"status": "ok",
"session": {
"id": "ps_3813062",
"status": "in_progress",
"created_at": "2025-09-05T07:14:28.236854Z",
"updated_at": "2025-09-05T07:14:28.298522Z",
"acquiring_payments": [{
"id": "pm_2769418",
"status": "in_progress",
"created_at": "2025-09-05T07:14:28.310910Z",
"customer": {
"reference": "lucky"
},
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "tpay"
}
},
"amount_details": {
"amount": 670000,
"currency": "RUB"
},
"amounts": {}
}]
}
} - В объекте
-
Дождитесь от Банка 131 вебхука
ready_to_confirm
— он означает, что Банк готов провести платеж и ждет вашего подтверждения. -
Подтвердите платеж запросом
session/confirm
или отмените платеж, отправив запросsession/cancel
. -
Дождитесь вебхука
action_required
со ссылкой на оплату в параметреredirect.url
, которую нужно показать плательщику в виде QR-кода.Вы сами решаете, получать ли вебхуки. Если они отключены, вам потребуется каждый раз отправлять запрос
session/status
, чтобы понять следующий шаг и результат операции.Пример вебхука
curl -X POST \
https://partner.ru \
-H 'content-type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"type": "action_required",
"session": {
"id": "ps_3813080",
"status": "in_progress",
"created_at": "2025-09-05T07:49:12.513214Z",
"updated_at": "2025-09-05T07:49:24.628403Z",
"acquiring_payments": [{
"id": "pm_2769436",
"status": "pending",
"created_at": "2025-09-05T07:49:12.605322Z",
"customer": {
"reference": "vtor_rec"
},
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "tpay"
}
},
"amount_details": {
"amount": 1000700,
"currency": "RUB"
},
"amounts": {},
"customer_interaction": {
"type": "redirect",
"redirect": {
"url": "https://www.tinkoff.ru/tpay/3000000000000021275",
"base_url": "https://www.tinkoff.ru/tpay/3000000000000021275",
"method": "GET",
"params": {}
}
}
}],
"actions": {
"confirm": "2025-09-05T07:49:24.148058Z"
}
}
}' -
Отобразите ссылку из параметра
redirect.url
в виде QR-кода. Дождитесь, когда плательщик либо подтвердит, либо отменит оплату. -
Дождитесь от Банка 131 вебхука
ready_to_capture
и спишите захолдированную или меньшую сумму (session/capture
), либо отмените оплату (session/cancel
).Пропустите этот шаг, если у вас не подключены платежи с холдированием. В этом случае холдирование и списание средств произойдет автоматически.
-
Дождитесь от Банка 131 вебхука
payment_finished
с результатом проведения платежа. Статусsucceeded
означает, что платеж успешно проведен.
Рекуррентные платежи
Чтобы проводить рекуррентные платежи MIT или рекуррентные платежи CIT через T-Pay:
-
Получите рекуррентный токен, передав в запросе
recurrent=true
(в объектеpayment_options
). Если платеж пройдет успешно, в вебхукеpayment_finished
в параметреrecurrent.token
вернется токен.Пример запроса
curl -X POST \
https://proxy.bank131.ru/api/v1/session/init/payment \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "tpay"
}
},
"amount_details": {
"amount": 670000,
"currency": "RUB"
},
"customer": {
"reference": "lucky"
},
"payment_options": {
"platform_details": {
"recurrent": true,
"type": "mobile",
"os": "ios",
"browser": "chrome"
}
}
}'Пример ответа
{
"status": "ok",
"session": {
"id": "ps_3813071",
"status": "in_progress",
"created_at": "2025-09-05T07:24:45.996726Z",
"updated_at": "2025-09-05T07:24:46.081328Z",
"acquiring_payments": [{
"id": "pm_2769427",
"status": "in_progress",
"created_at": "2025-09-05T07:24:46.108909Z",
"customer": {
"reference": "lucky"
},
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "tpay"
}
},
"amount_details": {
"amount": 33123,
"currency": "RUB"
},
"amounts": {},
"payment_options": {
"recurrent": true
}
}]
}
} -
При проведении последующих платежей передавайте рекуррентный токен.
Примеры
- Рекуррентный платеж MIT
- Рекуррентный платеж CIT
- Пример запроса
- Пример ответа
curl -X POST \
https://proxy.bank131.ru/api/v1/session/init/payment \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "recurrent",
"recurrent": {
"token": "e9876f32bcd947f79c324cf2da5726304a894f6ae2037de7705fdb3e0a134d39",
"initiator":"merchant"
}
},
"amount_details": {
"amount": 900000,
"currency": "RUB"
},
"customer": {
"reference": "lucky"
},
"payment_options": {
"platform_details": {
"type": "mobile",
"os": "android",
"browser": "chrome"
}
}
}'{
"status": "ok",
"session": {
"id": "ps_3812845",
"status": "in_progress",
"created_at": "2025-09-03T11:04:27.322539Z",
"updated_at": "2025-09-03T11:04:27.381848Z",
"acquiring_payments": [{
"id": "pm_2769255",
"status": "in_progress",
"created_at": "2025-09-03T11:04:27.394705Z",
"customer": {
"reference": "lucky"
},
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "tpay"
}
},
"amount_details": {
"amount": 900000,
"currency": "RUB"
},
"amounts": {}
}]
}
}- Пример запроса
- Пример ответа
curl -X POST \
https://proxy.bank131.ru/api/v1/session/init/payment \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "recurrent",
"recurrent": {
"token": "e9876f32bcd947f79c324cf2da5726304a894f6ae2037de7705fdb3e0a134d39",
"initiator":"client"
}
},
"amount_details": {
"amount": 900000,
"currency": "RUB"
},
"customer": {
"reference": "vtor_rec"
},
"payment_options": {
"platform_details": {
"type": "mobile",
"os": "ios",
"browser": "chrome"
}
}
}'{
"status": "ok",
"session": {
"id": "ps_3812844",
"status": "in_progress",
"created_at": "2025-09-03T11:04:27.322539Z",
"updated_at": "2025-09-03T11:04:27.381848Z",
"acquiring_payments": [{
"id": "pm_2769254",
"status": "in_progress",
"created_at": "2025-09-03T11:04:27.394705Z",
"customer": {
"reference": "lucky"
},
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "tpay"
}
},
"amount_details": {
"amount": 55000,
"currency": "RUB"
},
"amounts": {}
}]
}
}
Возврат платежей
Сценарий возврата платежей через T-Pay ничем не отличается от стандартного.