Salebot.pro
Search
⌃K

Тинькофф

Прием платежей через интернет-эквайринг Тинькофф банка

Как подключить

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

Как сформировать ссылку на оплату

Сформировать ссылку на оплату в блоке можно ОДНИМ ИЗ из доступных способов:

Кнопка с функцией Оплата

Ссылку на оплату можно создавать в кнопке с функцией "Оплата". О том как создавать такую кнопку рассказано в этой статье:
Кнопки
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 в Калькуляторе блоке.
В поле Калькулятор переменной присвоим значение функции 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 значение равно сумме к оплате. Например, 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. 1.
    name - Наименование товара
  2. 2.
    quantity - Количество или вес товара (целое или дробное число через точку)
  3. 3.
    price - Цена за единицу товара в копейках
  4. 4.
    amount - Стоимость товара в копейках. Произведение Quantity и Price
  5. 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"}]

Как сделать автоплатежи в Тинькофф

Для включения автоплатежа, нужно в меню подключения платежки включить эту возможность
Далее в личном кабинете Тинькофф нужно пройти тесты подключения автоплатежей с тестовых карт банка.
Личный кабинет Тинькофф: вкладка Автоплатежи -данные для прохождения тестов
Чтобы пройти тесты подключения автоплатежей: 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, которая заполняется так же как и для чеков в обычном платеже.