Тинькофф
Прием платежей через интернет-эквайринг Тинькофф банка
Вам необходимо создать новый терминал. Нельзя использовать т от, который у вас подключен еще куда-то.
Для подключения интернет-эквайринга Тинькофф в первую очередь нужно подать заявку и получить идентификатор терминала и пароль. Это можно сделать перейдя по ссылке -
После рассмотрения вашей заявки, вам выдадут тестовый терминал и пароль к нему.
Переходим в проект на salebot.pro и в разделе Платежные системы - Тинькофф прописываем ключи тестового терминала.

Далее вам в личном кабинете Тинькофф нужно пройти тесты на формирование ссылки, чека и оплаты с тестовых карт банка.
Для совершения повторного платежа обязательно необходимо обнулить payment_sum, ранее сформированную ссылку и уже после переназначить переменную payment_sum для получения свежей ссылки. Можно указать предыдущее значение.
Обратите внимание на Тест 3 (отмена платежа), вам нужен будет идентификатор платежа PaymentId, найти его можно после совершения платеж в переменной tinkoff_payment_id
Сформировать ссылку на оплату в блоке можно ОДНИМ ИЗ из доступных способов:
- Создание ссылки с помощью переменной payment_sum и дополнительных параметров (устаревшая работающая версия)
Ссылку на оплату можно создавать в кнопке с функцией "Оплата". О том как создавать такую кнопку рассказано в этой статье:

Кнопки
Salebot.pro
Статья про кнопку с функцией Оплата
Рассмотрим все возможные параметры данной кнопки. О том как создавать кнопку с функцией Оплата рассказано в этой статье:
Для формирования ссылки на оплату в настройках кнопки необходимо указать обязательные параметры: Сумма и Описание товара.

Форма настройки кнопки Опл ата для Тинькофф
поле Текст. Данный текст будет указан на кнопке с ссылкой на оплату в сообщении
поле Функция. Для создания кнопки для выдачи ссылки на оплату выбираем функцию Оплата
поле Платежная система. В списке отображаются подключенные к проекту платежные системы. Выбираем Tinkoff
Если к проекту не подключены платежные системы данный тип кнопок будет не доступен
поле Описание товара (обязательное). В данном поле нужно указать название товара. Максимально количество символов для данного поля: 250
Чем точнее указано описание товара, тем лучше. Например: не Телефон, а Смартфон Xiaomi модель
НЕЛЬЗЯ использовать двойные кавычки в описании товара: удалите или замените на одинарные кавычки.
поле Сумма (обязательное). В этом поле указываем стоимость товара.
чекбокс Автоплатеж. Для подключения автоплатежа включите в настройках платежной системы в Сейлбот ползунок и поставьте галочку в данном чек-боксе в настройке кнопки. По умолчанию, отключен.
Про настройки для автоплатежей можно почитать в этой статье:

Тинькофф
Salebot.pro
Подключение автоплатежей Тинькофф
меню Данные для формирования чека. При клике по данной кнопке откроются дополнительные обязательные и необязательные поля для формирования чека
Многие платежные системы поддерживают облачные онлайн-кассы, они необходимы по 54-ФЗ.
Прочитайте особенности формирования чеков на сайте выбранной платежной системы, чтобы не попасть в неловкую ситуацию с налоговой инспекцией.
- Наименование товара
- Цена за единицу товара в копейках
- Количество
- Произведение количества на цену за единицу товара
- Ставка НДС
- Способ расчёта
- Предмет расчета
- Система налогообложения
- Переменная с email покупателя
- Переменная с номером телефона покупателя
меню Дополнительная информация. При клике по данной кнопке откроются дополнительные поля для формирования ссылки
- Язык страницы оплаты
чекбокс С уведомление о клике. Для отслеживания перехода по ссылке для оплаты можно поставить галочку. В таком случае, при клике по кнопке в диалог с клиентом в Сейлбот придет уведомление о том, что был совершен переход по ссылке

Уведомление о клике
На данное уведомление можно настраивать дальнейшую логику работы бота.
выпадающее меню "Данные для формирования чека"

меню настроек кнопки Оплата: "Данные для формирования чека"
поле Наименование товара . В данном поле нужно указать название товара. Чем точнее указано название товара, тем лучше. Например: не Телефон, а Смартфон Xiaomi модель ххх
НЕЛЬЗЯ использовать двойные кавычки в Наименовании товара: удалите или замените на одинарные кавычки.
поле Цена за единицу товара в руб. Обратите внимание, в данном поле указывается цена в рублях.
поле Количество. Количество или вес товара. Передать можно целое или дробное число через точку. Пример, 5 или 10.3
поле Произведение количества на цену за единицу товара. В данном поле необходимо указать сумму равную произведению количества на цену за единицу товара. Например, если Цена за единицу тов ара в руб равна 5000 и количество товаров 1, то Сумма заказа 5000 руб,
поле Ставка НДС. Необходимо указать подходящий код для передачи значения НДС. Например, none если без НДС или vat0 если ставка НДС 0% .
Доступные варианты ставки НДС:
- vat120 — 20/120
- vat110 — 10/110
- vat20 — 20%
- vat10 — 10%
- vat0 — 0%
- none — без НДС
поле Способ расчёта. Можно передать одно из значений признака способа расчета:
- full_payment — полный расчет
- full_prepayment — предоплата 100% - полная предварительная оплата, которая осуществляется клиентом до получения товара/оказания услуги
- prepayment — предоплата - частичная предварительная оплата, которая осуществляется клиентом до получения товара/оказания услуги
- advance — аванс - предоплата в случаях, когда заранее нельзя определить перечень товаров/работ/услуг
- partial_payment — частичный расчет и кредит
- credit — передача в кредит
- credit_payment — оплата кредит
поле Предмет расчёта. Дополнительно можно передать предмет расчета (если не передать, будет commodity (товар)).
Может принимать следующие значения:
- commodity — товар
- excise — подакцизный товар
- job — работа
- service — услуга
- gambling_bet — ставка азартной игры
- gambling_prize — выигрыш азартной игры
- lottery — лотерейный билет
- lottery_prize — выигрыш лотереи
- intellectual_activity — предоставление результатов интеллектуальной деятельности
- payment — платеж
- agent_commission — агентское вознаграждение
- composite — составной предмет расчета
- another — иной предмет расчета
поле Система налогообложения. Можно выбрать систему налогообложения, которая будет передана в чеке.

Поле Переменная с email покупателя (необязательный, если передан Номер телефона) В данном поле указывается Email пользователя (клиента). Можно указывать переменную, в которой хранится email пользователя.
Например, #{email}
Поле Переменная с номером телефона покупателя (необязательный, если передан Email). В данном поле можно указать переменную, в которой записан номер телефона покупателя в формате 79000000000
Например, #{phone}
Обязательно должен присутствовать email и/или телефон
выпадающее меню "Дополнительная информация"
поле Язык страницы оплаты. По умолчанию, язык страницы оплаты русский. Можно изменить на английский

Как только пользователь получит блок с кнопкой "Оплата" автоматически будут созданы переменные клиента:
Служебная переменная клиента
__payments
, которая хранит сумму, идентификатор созданной ссылки, нужна для идентификации хука от платежной системы.Служебную переменную клиента __payments НЕЛЬЗЯ удалять или изменять!
Переменная клиента
error_payment_button
создается, если при формировании кнопки возникла ошибка.В значение переменной error_payment_button запишется либо текст ошибки, либо ответ платежной системы с ошибкой.
Значение переменных становятся актуальными при переходе в следующий блок
Успешный платеж.
После успешной оплаты в бота придет КОЛБЭК, который состоит из 10 символов секретного ключа платежной системы, слова _success и через пробел сумма платежа
Например:
ovg58keefc_success 44
, где: ovg58keefc : 10 символов секретного ключа платежной системы
_success : результат обработки запроса (успешный платеж)
44 : сумма платежа
Колбеки (уведомления) от платежной системы пользователь НЕ ВИДИТ. Они отображаются только во вкладке Клиенты и видны оператору.
Пример использования:
Шаг 1. В блоке "с кнопкой Оплата" добавляем кнопки с функцией Оплата.
Шаг 2. В поле Условие соединения от этого блока к блоку "Успешная оплата" указываем колбэк. Аналогично работает, если указать колбэк об успешной оплате в поле Условие блока Первостепенной проверки условия.
Важно: выбор соответствия Полное совпадение. Также можно использовать По наличию ключев ых слов, если указать часть колбэке без сумм оплаты

Колбэк об успешной оплате в поле Условие соединения(стрелки)

Колбэк об успешной оплате в поле Условие блока.
Платеж с ошибкой
При ошибке проведения оплаты в бота придет КОЛБЭК, который состоит из 10 символов секретного ключа платежной системы, слова _fail и через пробел сумма платежа
Например,
ovg58keefc_fail 44
, гдеovg58keefc
: 10 символов секретного ключа платежной системы_fail
: результат обработки запроса - платеж не выполнен или с ошибкой. 44
: сумма платежаЗависит от платежной системы. Не все платежные системы присылают колбэк об ошибке платежа.
Если сумма указанная в настройках кнопки отличается от суммы, которую клиент оплатил, то придет КОЛБЭК, который состоит из 10 символов секретного ключа платежной системы, слова _different_amounts и через пробел уникальный ID платежа
Например:
ovg58keefc_different_amounts 123456
, где: ovg58keefc
: 10 символов секретного ключа платежной системы_different_amounts
: результат обработки запроса (сумма оплаты отличается от суммы в ссылке)123456
: уникальный ID платежа
Для формирования ссылки на оплату можно воспользоваться функцией
get_tinkoff_payment_url
в Калькуляторе блоке.В поле Калькулятор переменной присвоим значение функции
get_tinkoff_payment_url
Название переменной задаете самостоятельно. На скринах примеры названия переменных.
В эту переменную запишется ссылка на оплату. Переменную можно вывести на экран ссылкой в сообщении или разместить в кнопке с текстом, например, "Оплатить".
ПРИМЕР ссылки на оплату: https://securepay.tinkoff.ru/new/xoYnWrb6
Многие платежные системы поддерживают облачные онлайн-кассы, они необходимы по 54-ФЗ.
Прочитайте особенности оформления чеков на сайте выбранной платежной системы, чтобы не попасть в неловкую ситуацию с налоговой инспекцией.
Калькулятор
Описание параметров
Пример кода для копирования
Пример 1:

Пример формирования ссылки: переданы только обязательные параметры
Пример 2:

Пример формирования ссылки: переданы все параметры
link = get_tinkoff_payment_url(amount, description, recurrent, products_for_receipt, customer_phone, customer_email, expired, taxation, language, extra_params)
Параметр | Описание параметра |
---|---|
amount | Сумма к оплате. В этом поле указываем стоимость товара в рублях (обязательный параметр) |
description | Описание заказа. В этом поле можно использовать только символы английского или русского алфавита, цифры и знаки препинания. Чтобы пропустить данный параметр передайте вместо него пару одинарных или двойных кавычек или значение None |
recurrent | Подключение автоплатежа. Если автоплатеж включен, то передать значение 1, если отключен передайте значение None. |
products_for_ receipt | Параметры для формирования чеков. Чтобы пропустить данный параметр передайте вместо него пару одинарных / пару двойны х кавычек или значение None
Имеет следующий вид: [{"name":"ТОВАР1","amount":"1200","vat_code":"5","method":"FullPrepayment","object":"Commodity"}] Важно! Используйте двойные кавычки для формирования словаря {"ключ": "значение"} name - Наименование товара amount - Полная сумма в рублях за все количество данного товара с учетом всех возможных скидок, бонусов и специальных цен. vat_code - cтавка НДС. Этот параметр уст анавливает налоговую ставку в ККТ. Возможные значения данного параметра: '1' - Без НДС '2' - НДС по ставке 0% '3' - НДС по ставке 10% '4' - НДС чека по ставке 20% '5' - НДС чека по расчетной ставке 10/110 '6' - НДС чека по расчетной ставке 20/120
method - дополнительный параметр для формирования чека. Признак способа расчёта. Пример значения параметра: full_payment — полный расчет
Остальные доступные варианты можно найти в документации Тинькофф : https://www.tinkoff.ru/kassa/develop/api/receipt/#Items
object - дополнительный параметр для формирования чека. Предмет расчета может принимать разные значения. Например, commodity — товар Остальные доступные варианты можно найти в документации Тинькофф : https://www.tinkoff.ru/kassa/develop/api/receipt/#Items |
customer_phone | номер телефона покупателя, не обязательно, если передан параметр customer_email Чтобы пропустить данный параметр, передайте вместо него одинарные или двойные кавычки |
customer_email | емейл покупателя, не обязательно, если передан параметр customer_phone Чтобы пропустить данный параметр, передайте вместо него одинарные или двойные кавычки. |
expired | время жизни ссылки на оплату, в формате дд.мм.гггг (например 25.01.2021). Также можно в поле "Калькулятор" указать: expired = current_date + 2 (ссылка будет действительна 2 дня до 00:00) . expired так же можно указать дату с точным временем, через пробел, в формате дд.мм.гггг чч:мм (например: 25.01.2021 12:23). Так же можно использовать стандартные переменные, например зададим время действия ссылки 30 минут: time = current_time + 30
expired = "#{current_date} #{time}"
Чтобы пропустить данный параметр передайте вместо него пару одинарных или двойных кавычек или значение None |
taxation | Система налогообложения.
Возможные значения данного параметра:
'1' - Общая система налогообложения '2' - Упрощенная (УСН, доходы) '3' - Упрощенная (УСН, доходы минус расходы) '4' - Единый налог на вмененный доход (ЕНВД) '5' - Единый сельскохозяйственный налог (ЕСН) '6' - Патентная система налогообложения
Чтобы пропустить данный параметр передайте вместо него пару одинарных или двойных кавычек или значение None |
language | Язык страницы оплаты. По умолчанию, язык страницы оплаты русский.
Можно изменить на английский. Для это передайте значение - 'en' Чтобы пропустить данный параметр, передайте вместо него пару одинарных/ пару двойных кавычек или значение None. |
extra_params | дополнительные параметры, которых нет в данной функции.
Возможные дополнительные параметры можно посмотреть по ссылке в документации работы с API платежной системы https://www.tinkoff.ru/kassa/develop/api/payments/init-request/
Пример: extra_params = {"IP": "66.249.72.248"}
Чтобы пропустить данный параметр, передайте вместо него пару одинарных/ пару двойных кавычек или значение None. |
Пример 1: Ссылка на оплату без чека
link_tinkoff = get_tinkoff_payment_url(1200, 'Купи меня')
Пример 2: Ссылка на оплату с чеком
extra_params = {"IP": "66.249.72.248"}
receipt = [{"name":"ТОВАР1","price":"1200","quantity":"1","amount":"1200","vat_code":"2","method":"full_payment","object":"commodity"}]
link_tinkoff = get_tinkoff_payment_url(1200, 'Купи меня', '', receipt, '77777777777', '[email protected]', '28.03.2023 14:25', '2', 'en', extra_params)
Пример 3: Ссылка на оплату с чеком + Автоплатеж
receipt = [{"name":"ТОВАР1","price":"1200","quantity":"1","amount":"1200","vat_code":"2","method":"full_payment","object":"commodity"}]
link_tinkoff = get_tinkoff_payment_url(1200, 'Купи меня', '1', receipt, '77777777777', '[email protected]', '28.03.2023 14:25', '2')
Переменную можно вывести на экран ссылкой в сообщении или разместить в кнопке с текстом, например, "Купить".
Если в блоке несколько функций для получения ссылки и допущена ошибка, то значение ошибки будет записано в переменной
error_payment_func
Ошибка запишется по последней функции в Калькуляторе
В калькуляторе блока присваиваем переменной payment_sum значение равно сумме к оплате.
Например,
payment_sum = 150
или
payment_sum = 100.55
(через точку!)).
Сразу после этого появится переменная tinkoff_pay_url. Эту переменную можно вывести на экран ссылкой или разместить на кнопке с текстом "Оплатить". ПРИМЕР ссылки на оплату:
https://securepay.tinkoff.ru/new/xoYnWrb6
Также В Калькуляторе блока до установки значения переменной payment_sum, можно задать следующие необязательные переменные, для настройки платежа.
payment_description – описание заказа
language - Язык страницы оплаты en, ru. Если не передан, то страница оплаты на русском языку.
expiration_date - дата и время окончания жизни заказа. Формат: дд.мм.гггг чч:мм (например: 25.01.2021 12:23) По умолчанию 24 часа.
Также можно использовать стандартные переменные, например зададим время действия ссылки 2 дня от текущей даты до 12:00:
date = current_date + 2
expiration_date = "#{date} 12:00"
Еще пример время действия ссылки 30 минут:
time = current_time + 30
expiration_date = "#{current_date} #{time}"
Если в настройках вы включили автоматические платежи, то после успешной оплаты у клиента появится переменные tinkoff_rebill_id и tinkoff_recurrent_id, которые нужны для проведения автоплатежей и идентифкации вебхука.
Удалять их нельзя, при удалении tinkoff_rebill_id невозможно будет провести автоплатеж и нужно заново формировать ссылку на оплату, при удалении tinkoff_recurrent_id - клиент не получит колбек об оплате.
Нельзя удалять tinkoff_rebill_id и tinkoff_recurrent_id.
При удалении tinkoff_rebill_id невозможно будет провести автоплатеж и нужно заново формировать ссылку на оплату, при удалении tinkoff_recurrent_id - клиент не получит колбек об оплате.
Обратите внимание: переменной payment_sum присваивается значение последней, после необязательных переменных payment_description, language и т.д.
Создадим ссылку на оплату в размере 100р (в магазине по умолчанию рубль)

Обратите внимание:
- Сначала указываете необязательные параметры payment_description и т.д.
- И последней присваиваем значение переменной payment_sum
Далее в нужном месте нужно вывести переменную tinkoff_pay_url, в которой содержится ссылка.

После успешной оплаты в бот придут колбеки, по которым вы сможете понять что была успешная оплата. Эти колбеки в системе вы видите как сообщения от пользователя, чтобы их не мог отправить пользователь, они состоят из 10 первых символов секретного ключа и приписки success, например: 869e5us32x_success
В случае неудачной оплаты, придет колбек с припиской 869e5us32x_fail
Эти колбеки НЕ ВИДИТ пользователь, они отображаются только оператору.
Тип сравнения должен быть "Полное совпадение"
Также после успешной оплаты переменная tinkoff_payment_completed устанавливается в True.
Например, можно сделать обработку успешной оплаты блоком с условием и вывести соответствующее сообщение пользователю:

После завершения оплаты клиенту добавится переменная tinkoff_callback_data, содержащая данные ответа платежной системы по совершенной операции. Из полученного словаря можно извлечь необходимые данные при помощи метода get.
Для формирования чека онлайн-кассы необходимо при формировании ссылки на оплату передать дополнительные параметры.
Обязательные параметры:
email — электронная почта пользователя (Необязателен, если передан параметр phone)
phone — телефон пользователя. Указывается в формате ITU-T E.164, например 79000000000 (Необязателен, если передан параметр email)
taxation — система налогообложения:
osn — общая
usn_income — упрощенная (доходы)
usn_income_outcome — упрощенная (доходы минус расходы)
patent — патентная
envd — единый налог на вмененный доход
esn — единый сельскохозяйственный налог
products_for_receipt - это массив с перечисленными товарами чека, следующего вида:
[{"name": "Наименование товара", "quantity": "Количество товара", "price": "Цена за единицу товара в копейках", "amount": "Стоимость товара в копейках", "tax": "Ставка НДС"}, {"name": "Наименование товара 2", "quantity": "Количество товара 2", "price": "Цена за единицу товара 2 в копейках", "amount": "Стоимость товара в копейках", "tax": "Ставка НДС"}]
Каждый товар имеет вид: {"name": "Наименовани е товара", "quantity": "Количество товара", "price": "Цена за единицу товара в копейках", "amount": "Стоимость товара в копейках", "tax": "Ставка НДС"}
- 1.name - Наименование товара
- 2.quantity - Количество или вес товара (целое или дробное число через точку)
- 3.price - Цена за единицу товара в копейках
- 4.amount - Стоимость товара в копейках. Произведение Quantity и Price
- 5.tax - cтавка НДС:
- none — без НДС
- vat0 — 0%
- vat10 — 10%
- vat20 — 20%
- vat110 — 10/110
- vat120 — 20/120
Дополнительно можно передать предмет расчета payment_object (если не передать, будет commodity (товар)), может принимать следующие зн ачения:- commodity — товар
- excise — подакцизный товар
- job — работа
- service — услуга
- gambling_bet — ставка азартной игры
- gambling_prize — выигрыш азартной игры
- lottery — лотерейный билет
- lottery_prize — выигрыш лотереи
- intellectual_activity — предоставление результатов интеллектуальной деятельности
- payment — платеж
- agent_commission — агентское вознаграждение
- composite — составной предмет расчета
- another — иной предмет расчета

После определения переменных платежа, определяем переменную payment_sum, после которой сразу появится ссылка на оплату.
Общая стоимость всех товаров должна быть равной переменной payment_sum в рублях!

Пример:
[{"name": "Наименование товара", "quantity": "2", "price": "1000", "amount": "2000", "tax": "none"}, {"name": "Наименование товара 2", "quantity": "3", "price": "500", "amount": "1500", "tax": "none"}]
Для включения автоплатежа, нужно в меню подключения платежки включить эту возможность
Далее в личном кабинете Тинькофф нужно пройти тесты подключения автоплатежей с тестовых карт банка.
.jpg?alt=media&token=1dbceda8-de30-427f-99d5-20f7932d3102)
Личный кабинет Тинькофф: вкладка Автоплатежи -данные для прохождения тестов
Чтобы пройти тесты подключения автоплатежей:
1. В разделе Платежные системы - Тинькофф - Включить автоплатежи.
2. Создаём обычную ссылку на оплату.
3. Оплачиваем ее тестовой картой из Тест №5, приходит уведомление от платежной системы об успешной оплате.
4. Для этого же клиента вызываем функцию рекуррентного платежа tinkoff_recurrent_payment.
5. В кабинете Тинькофф нажимаем Проверить. Тесты пройдены
Провести автоплатеж.
Далее для проведения автоплатежа, нужно вызвать функцию: tinkoff_recurrent_payment(сумма, 'описание')
первым аргументом передаем сумму, которую нужно списать, вторым описание платежа, если не передать, то будет пустое.
Редактор блока -> Калькулятор -> функция для проведения автоплатежа
Провести обычный платеж, если включены рекуррентные платежи.
Если в настройках включен бегунок рекуррентные платежи, но нужно провести обычный платеж без сохранения карты для подписки, присвойте переменной
tinkoff_manual_recurrent_disable
любое значение перед объявлением payment_sum.
При таких настройках платеж будет обычным.
Пример: tinkoff_manual_recurrent_disable = 1

Если при автосписании нужен чек, то до вызова функции нужно определить переменную products_for_receipt_recurrent, которая заполняется так же как и для чеков в обычном платеже.
Last modified 28d ago