Т-банк

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

Рис. 1. Форма подключения эквайринга от Т-банка на стороне Сейлбот

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

Для подключения интернет-эквайринга Т-банк в первую очередь нужно подать заявку и получить идентификатор терминала и пароль. Это можно сделать перейдя по ссылке.

После рассмотрения вашей заявки, вам выдадут тестовый терминал и пароль к нему.

Рис. 3. Тестовые данные

Переходим в проект на salebot.pro и в разделе Эквайринг - Т-банк прописываем ключи тестового терминала.

поле Система налогообложения. Можно выбрать систему налогообложения, которая будет передана в чеке.

поле Ставка НДС. Необходимо указать подходящий код для передачи значения НДС. Например, none если без НДС или vat0 если ставка НДС 0% .

Доступные варианты ставки НДС
Значение

vat120

20/120

vat110

10/110

vat20

20%

vat10

10%

vat0

0%

none

без НДС

vat5

5%

vat7

7%

vat105

5/105

vat107

7/107

Далее вам в личном кабинете Т-банка нужно пройти тесты на формирование ссылки, чека и оплаты с тестовых карт банка.

Как протестировать платежи на стороне Т-банка, написано здесь.

Вкратце - внутри бота нужно указать данные тестового терминала и с помощью тестовых карт провести оплату как покупатель. Данные терминала и данные тестовых карт будут находиться у каждого клиента на магазине. Тестирование платежей это своего рода настройка и проверка интеграции вашего бота с нами.

Рис. 5. Тестовые платежи
Рис. 6. Тестовые платежи

Обратите внимание на Тест 3 (отмена платежа) на рис. 6, вам нужен будет идентификатор платежа PaymentId, найти его можно после совершения платеж в переменной tinkoff_payment_id

Рис. 7. Переменные сделки

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

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

Ссылку на оплату можно создавать в кнопке с функцией "Оплата".

О том как создавать такую кнопку рассказано в статье "Кнопки".

Обязательные параметры кнопки Оплата для Т-банк

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

Рис. 8. Форма для настройки кнопки оплаты в боте

поле Текст. Данный текст будет указан на кнопке с ссылкой на оплату в сообщении

поле Функция. Для создания кнопки для выдачи ссылки на оплату выбираем функцию Оплата

поле Платежная система. В списке отображаются подключенные к проекту платежные системы. Выбираем T-банк

поле Описание товара (обязательное). В данном поле нужно указать название товара. Максимально количество символов для данного поля: 250 Чем точнее указано описание товара, тем лучше. Например: не Телефон, а Смартфон Xiaomi модель

поле Сумма (обязательное). В этом поле указываем стоимость товара.

чекбокс Автоплатеж. Для подключения автоплатежа включите в настройках платежной системы в Сейлбот ползунок и поставьте галочку в данном чек-боксе в настройке кнопки. По умолчанию, отключен.

меню Данные для формирования чека. При клике по данной кнопке откроются дополнительные обязательные и необязательные поля для формирования чека

Многие платежные системы поддерживают облачные онлайн-кассы, они необходимы по 54-ФЗ. Прочитайте особенности формирования чеков на сайте выбранной платежной системы, чтобы не попасть в неловкую ситуацию с налоговой инспекцией.

  • Наименование товара

  • Цена за единицу товара в копейках

  • Количество

  • Произведение количества на цену за единицу товара

  • Способ расчёта

  • Предмет расчета

  • Переменная с email покупателя

  • Переменная с номером телефона покупателя

меню Дополнительная информация. При клике по данной кнопке откроются дополнительные поля для формирования ссылки

  • Язык страницы оплаты

чекбокс С уведомление о клике. Для отслеживания перехода по ссылке для оплаты можно поставить галочку. В таком случае, при клике по кнопке в диалог с клиентом в Сейлбот придет уведомление о том, что был совершен переход по ссылке

Рис. 9. Уведомление о клике

На данное уведомление можно настраивать дальнейшую логику работы бота.

Дополнительные параметры для формирования чека и ссылки

выпадающее меню "Данные для формирования чека"

Рис. 10. Меню настроек кнопки Оплата: "Данные для формирования чека"

поле Наименование товара . В данном поле нужно указать название товара. Чем точнее указано название товара, тем лучше. Например: не Телефон, а Смартфон Xiaomi модель ххх

поле Цена за единицу товара в руб. Обратите внимание, в данном поле указывается цена в рублях.

поле Количество. Количество или вес товара. Передать можно целое или дробное число через точку. Пример, 5 или 10.3

поле Произведение количества на цену за единицу товара. В данном поле необходимо указать сумму равную произведению количества на цену за единицу товара. Например, если Цена за единицу товара в руб равна 5000 и количество товаров 1, то Сумма заказа 5000 руб,

поле Способ расчёта. Можно передать одно из значений признака способа расчета:

Значение признака способа расчета
Описание

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}

выпадающее меню "Дополнительная информация"

поле Язык страницы оплаты. По умолчанию, язык страницы оплаты русский. Можно изменить на английский

Рис. 11. Меню дополнительной информации

поле Время жизни ссылки — по умолчанию поле пустое, но указав в нем значение в виде дд.мм.гггг, --:-- (в виде даты и времени), можно установить до какого момента времени клиент сможет осуществить платеж по данной ссылке.

Переменные клиента

Как только пользователь получит блок с кнопкой "Оплата" автоматически будут созданы переменные клиента:

Служебная переменная клиента __payments , которая хранит сумму, идентификатор созданной ссылки, нужна для идентификации хука от платежной системы.

Переменная клиента error_payment_button создается, если при формировании кнопки возникла ошибка.

В значение переменной error_payment_button запишется либо текст ошибки, либо ответ платежной системы с ошибкой.

Страницы завершения оплаты

После завершения оплаты клиенту по умолчанию будет предложено перейти обратно в чат с ботом. При этом клиент узнаёт о статусе платежа только по сообщению в чате.

Обычно содержание такого сообщения формируется в зависимости от типа колбека, который вы получили от Т-банка Касса.

Иногда колбек приходит с задержкой, поэтому в таких случаях у вас не получится моментально информировать клиента.

Чтобы избежать подобных ситуаций, отключите функцию перехода в бот в оплатах по ссылкам, сформированным через:

  • переменную payment_sum - перед указанием payment_sum, присвойте переменной apply_redirects значение 0 (ноль);

  • функцию get_tinkoff_payment_url - последним параметром укажите значение 0 (ноль);

При отключенной функции Тинькофф использует свои страницы завершения оплаты с информацией об успешном или неудавшемся платеже клиента.

Обработав колбек, вы можете дополнительно сообщить клиенту о статусе его платежа.

Как обработать результат

Успешный платеж.

в бота АВТОМАТИЧЕСКИ придет КОЛБЭК, который состоит из 10 символов секретного ключа платежной системы, слова _success и через пробел сумма платежа. Для использования в настройках схемы достаточно его скопировать.

Например: ovg58keefc_success 44, где:

ovg58keefc : первые первые 10 символов секретного ключа платежной системы

_success : результат обработки запроса (успешный платеж)

44 : сумма платежа

Колбеки (уведомления) от платежной системы пользователь НЕ ВИДИТ. Они отображаются только во вкладке Клиенты и видны оператору.

Пример использования: Шаг 1. В блоке "с кнопкой Оплата" добавляем кнопки с функцией Оплата.

Шаг 2. В поле Условие соединения от этого блока к блоку "Успешная оплата" указываем колбэк. Аналогично работает, если указать колбэк об успешной оплате в поле Условие блока Первостепенной проверки условия.

Рис. 12. Пример № 1. Колбэк об успешной оплате в поле Условие блока "Стартовое условие"
Рис. 13. Пример № 2. Колбэк об успешной оплате в поле Условие блока "Не состояние с условием"

Отличие примера № 1 (рис. 12) и примера № 2 (рис. 13) в том, что при использовании блока "Не состояние с условием" клиент не переходит в блок не состояние и не выбивается из основной воронки. Это удобно, например, если вы хотите продолжать вести клиента далее по воронке.

Платеж с ошибкой

При ошибке проведения оплаты в бота АВТОМАТИЧЕСКИ придет КОЛБЭК, который состоит из 10 символов секретного ключа платежной системы, слова _fail и через пробел сумма платежа

Например, ovg58keefc_fail 44 , где

ovg58keefc : 10 символов секретного ключа платежной системы

_fail : результат обработки запроса - платеж не выполнен или с ошибкой.

44 : сумма платежа

Если сумма указанная в настройках кнопки отличается от суммы, которую клиент оплатил, то АВТОМАТИЧЕСКИ придет КОЛБЭК, который состоит из 10 символов секретного ключа платежной системы, слова _different_amounts и через пробел уникальный ID платежа

Например: ovg58keefc_different_amounts 123456 , где:

ovg58keefc : 10 символов секретного ключа платежной системы

_different_amounts : результат обработки запроса (сумма оплаты отличается от суммы в ссылке)

123456 : уникальный ID платежа

Рис. 12. Пример № 1. Колбэк об ошибке платежа в поле Условие блока "Стартовое условие"

Функция get_tinkoff_payment_url в Калькуляторе

Для формирования ссылки на оплату можно воспользоваться функцией get_tinkoff_payment_url в Калькуляторе блоке.

В поле Калькулятор переменной присвоим значение функции get_tinkoff_payment_url

Название переменной задаете самостоятельно. На скринах примеры названия переменных.

В эту переменную запишется ссылка на оплату. Переменную можно вывести на экран ссылкой в сообщении или разместить в кнопке с текстом, например, "Оплатить".

ПРИМЕР ссылки на оплату: https://securepay.tinkoff.ru/new/xoYnWrb6

Многие платежные системы поддерживают облачные онлайн-кассы, они необходимы по 54-ФЗ. Прочитайте особенности оформления чеков на сайте выбранной платежной системы, чтобы не попасть в неловкую ситуацию с налоговой инспекцией.

Пример 1:

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

Пример 2:

Рис. 14. Пример формирования ссылки: переданы все параметры

Переменную можно вывести на экран ссылкой в сообщении или разместить в кнопке с текстом, например, "Купить".

Сплитование платежей в Т-банк и работа с ними

Для старта работы нам потребуется выполнить четыре шага: 1. Переходим по ссылке 2. Оставляем заявку менеджеру и ожидаем связи от него. 3. Заключаем договор с банком и запрашиваем в банке логин и пароль 4. Получаем токен через функцию tinkoff_sm_register_get_token() tinkoff_sm_register_get_token(username, password, test) - функция токена Функция принимает три параметра: Обязательные параметры: username - логин password - пароль Необязательный параметр: test - параметр на случай если проводите настройки в тестовой среде, в параметр можно передать 1 и запрос будет отправлен в тестовую среду. Если не используете такой тип настройки, проигнорируйте данный параметр НЕ указывая его в функции.

ВАЖНО! Если у вас возникают сложности на этапе получения токена, то добавьте список IP адресов salebot в белый лист, запросить адреса можно в службе поддержки на сайте или мессенджере. После того как вы получили токен, необходимо сделать запрос на регистрацию точки с указанием всех необходимых параметров, включая данные банка и лицевого счета (счета физлиц не поддерживаются) через функцию tinkoff_sm_register_get_shop_code в ответ приходит помимо прочего "shopCode", который необходим для дальнейшей работы. tinkoff_sm_register_get_shop_code(token, org_data, address, ceo, bank_acc) token - полученный на шаге выше токен org_data - словарь с данными о вашей организации (вид показан в примере ниже) address - юридический адрес организации ceo - данные владельца организации bank_acc - реквизиты Пример использования функции:

Рис. 15. Пример функции tinkoff_sm_register_get_shop_code с заполненными параметрами

При формировании ссылки на оплату указываете переменную, сформированную по принципу: shop="Shops":[{"ShopCode":"????????","Amount": "1000"}] link=get_tinkoff_payment_url(10,'', '', '','+79099999999','','', 1, '', shop)

В переменной shop поле Amount содержит сумму в копейках, которая будет отправлена этому продавцу. Нужно чтобы сумма в первом параметре функции была не меньше, чем сумма по всем получателям. Для указания нескольких получателей указываем так: shop="Shops":[{"ShopCode":"???????1","Amount": "1000"},{"ShopCode":"???????2","Amount": "2000"}] в данном примере общая сумма 30 рублей или 3000 копеек

Создание ссылки с помощью переменной 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 часа;

  • apply_redirects - индикатор необходимости перенаправить клиента в бота после нажатия на кнопку "Оплатить". Ожидаемые значения 0 (ноль) или 1 (один, по умолчанию): 0 (ноль) - оставить клиента в виджете оплаты, применяются стандартные страницы завершения платежа Тинькофф Касса; 1 (один) - немедленно перенаправить в бота после нажатия на кнопку "Оплатить". О статусе платежа можно сообщить в ответ на колбек.

Также можно использовать стандартные переменные, например зададим время действия ссылки 2 дня от текущей даты до 12:00: date = current_date + 2 expiration_date = "#{date} 12:00"

Еще пример время действия ссылки 30 минут: time = current_time + 30 expiration_date = "#{current_date} #{time}"

Рис. 16. Пример использования переменных в калькуляторе

Если в настройках вы включили автоматические платежи, то после успешной оплаты у клиента появится переменные tinkoff_rebill_id и tinkoff_recurrent_id, которые нужны для проведения автоплатежей и идентификации вебхука. Удалять их нельзя, при удалении tinkoff_rebill_id невозможно будет провести автоплатеж и нужно заново формировать ссылку на оплату, при удалении tinkoff_recurrent_id - клиент не получит колбек об оплате.

Рис. 17. Пример оплаты
Рис. 18. Переменные в карточке клиента

Обратите внимание: переменной payment_sum присваивается значение последней, после необязательных переменных payment_description, language и т.д.

Пример формирования ссылки на оплату

Создадим ссылку на оплату в размере 100р (в магазине по умолчанию рубль)

Рис. 19. Пример настройки блока

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

Далее в сообщении нужно вывести переменную tinkoff_pay_url, в которой содержится ссылка (см. рис. 19).

Как обработать результат

После успешной оплаты в бот придут колбеки, по которым вы сможете понять что была успешная оплата. Эти колбеки в системе вы видите как сообщения от пользователя, чтобы их не мог отправить пользователь, они состоят из 10 первых символов секретного ключа и приписки success, например: 869e5us32x_success

В случае неудачной оплаты, придет колбек с припиской 869e5us32x_fail

Тип сравнения должен быть "Полное совпадение"

Также после успешной оплаты переменная tinkoff_payment_completed устанавливается в True.

Например, можно сделать обработку успешной оплаты блоком с условием и вывести соответствующее сообщение пользователю:

Шаг 1. Копируем колбек об успешной олпате:

Рис. 20. Колбек об успешной оплате

Шаг 2. Создаем блок с условием (Стартовое условие или Не состояние с условием) и указываем в поле "Условие" колбек:

Рис. 21. Настройка блока "Стартовое условие"
Рис. 22. Настройка блока "Не состояние с условием"

Отличие примера № 1 (рис. 12) и примера № 2 (рис. 13) в том, что при использовании блока "Не состояние с условием" клиент не переходит в блок не состояние и не выбивается из основной воронки. Это удобно, например, если вы хотите продолжать вести клиента далее по воронке.

После завершения оплаты клиенту добавится переменная 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

vat5

5%

vat7

7%

vat105

5/105

vat107

7/107

Дополнительно можно передать предмет расчета payment_object (если не передать, будет commodity (товар)), может принимать следующие значения:

Возможные значение
Описание

commodity

товар

excise

подакцизный товар

job

работа

service

услуга

gambling_bet

ставка азартной игры

gambling_prize

выигрыш азартной игры

lottery

лотерейный билет

lottery_prize

выигрыш лотереи

intellectual_activity

предоставление результатов интеллектуальной деятельности

payment

платеж

agent_commission

агентское вознаграждение

composite

составной предмет расчета

another

иной предмет расчета

Рис. 23. Пример в калькуляторе передачи параметров

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

Рис. 24. Пример передачи переменых

Пример:

[{"name": "Наименование товара", "quantity": "2", "price": "1000", "amount": "2000", "tax": "none"}, {"name": "Наименование товара 2", "quantity": "3", "price": "500", "amount": "1500", "tax": "none"}]

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

Провести тестовые платежи

В личном кабинете Тинькофф нужно пройти тесты подключения автоплатежей с тестовых карт банка.

Рис. 25. Личный кабинет Т-банка: вкладка Автоплатежи -данные для прохождения тестов

Чтобы пройти тесты подключения автоплатежей: 1. Создаём ссылку на оплату get_tinkoff_payment_url. В параметре recurrent передайте значение равное 1, пример кода есть в описании функции 2. Оплачиваем ее тестовой картой из Тест №5, приходит уведомление от платежной системы об успешной оплате. 3. Для этого же клиента вызываем функцию рекуррентного платежа tinkoff_recurrent_payment. 4. В кабинете Тинькофф нажимаем Проверить. Тесты пройдены

Провести установочный платеж

Для создания ссылки на первый установочный платеж можно воспользоваться функцией get_tinkoff_payment_url в Калькуляторе блоке.

Рис. 26. Настройка блока для оплаты

Важный параметр данной функции для проведения установочного платежа recurrent.

Если автоплатеж включен, то передайте значение 1, если отключен передайте значение None или ""

После успешной оплаты придет уведомление (callback), а у клиента появится переменная tinkoff_rebill_id. Эта переменная нужна для повторных автосписаний. Если её удалить, то повторные автосписания провести не получится.

Провести повторный автоплатеж

От блока, который реагирует на колбэк об успешной оплате создаем стрелку с таймером (задержкой) через какой период необходимо повторить списание.

Рис. 27. Настройки блока для автосписания

Далее для проведения автоплатежа, нужно вызвать функцию:

tinkoff_recurrent_payment(сумма, 'описание')

Первым параметром передаем сумму, которую нужно списать, вторым - описание платежа, если не передать, то будет пустое.

Рис. 28. Редактор блока -> Калькулятор -> функция для проведения автоплатежа

Если подключена онлайн-касса, то при автосписании нужно формировать чек. Чтобы это сделать, перед списанием нужно создать переменные:

products_for_receipt_recurrent

обязательная переменная, массив с перечисленными товарами чека. Числа нужно указывать без кавычек!

taxation

обязательная переменная

phone

обязательная, если нет переменной email

email

обязательная, если нет переменной phone

Рис. 29. Пример в калькуляторе

Как заполнять products_for_receipt_recurrent читайте в параграфе выше "Функция get_tinkoff_payment_url в Калькуляторе".

Отменить автоплатежи

Для того, чтобы отменить автосписания настроим блок для удаления переменной tinkoff_rebill_id

Рис. 30. Отмена автоплатежа

Провести обычный платеж, если включены рекуррентные платежи.

Если в настройках включен бегунок рекуррентные платежи, но нужно провести обычный платеж без сохранения карты для подписки, присвойте переменной tinkoff_manual_recurrent_disable любое значение перед объявлением payment_sum. При таких настройках платеж будет обычным. Пример:

tinkoff_manual_recurrent_disable = 1

Рис. 31. Калькулятор в блоке

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

Прием платежей для курсов через Т-банк

Шаг 1. В платежных системах подключаем прием платежей через Т-банк Эквайринг

Рис. 32. Форма подключения эквайринга от Т-банка на стороне Сейлбот

Шаг 2. В настройках курса выбираем платежную систему

Рис. 33. Выбираем платежную систему в разделе "Оплата" в настроках курса

Шаг 3. Создаем тариф

Рис. 34. Создание виджета в настройках курса

Шаг 5. В личном кабинете Тинькофф в настройках терминала обязательно включаем уведомления по HTTP и вставляем ссылку: https://chatter.salebot.pro/tinkoff_callback/result

Рис. 35. Настройка терминала

На странице курса будет отображаться тариф с кнопкой для оплаты:

Рис. 36. Тариф на странице курса

Далее ученику нужно будет ввести свои данные:

Рис. 37. Форма для заполнения данных при покупке учеником курса
Рис. 38. Форма оплаты

Last updated

Was this helpful?