Salebot.pro
Search…
⌃K

Тинькофф

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

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

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

Как сгенерировать ссылку на оплату

Задаем payment_sum (например 150 или 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, которая заполняется так же как и для чеков в обычном платеже.