Интеграция 1С-Битрикс с платежной системой Тинькофф Оплата

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с платежной системой Тинькофф Оплата
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Интеграция 1С-Битрикс с платёжной системой Тинькофф Оплата

Тинькофф Оплата — это не Тинькофф Кредит и не Тинькофф Pay. Три разных продукта, три разных API, и путаница между ними — стандартная ошибка при первичной настройке. Тинькофф Оплата (она же «Интернет-эквайринг Тинькофф») — полноценный платёжный шлюз для приёма карточных платежей, работающий через API securepay.tinkoff.ru/v2/. Именно о нём пойдёт речь.

Архитектура шлюза Тинькофф

API Тинькофф построено по схеме Init → Pay → Confirm/Cancel. Основные методы:

  • Init — инициализация платежа, получение PaymentURL и PaymentId
  • GetState — получение актуального статуса транзакции
  • Confirm — подтверждение предавторизованного платежа
  • Cancel — отмена платежа или возврат
  • Charge — рекуррентное списание по привязанной карте

Все запросы подписываются токеном — SHA-256 от конкатенации значений параметров и пароля в алфавитном порядке ключей. Неправильный порядок при генерации токена — самая частая причина ошибки INVALID_SIGNATURE при первом запуске.

Интеграция с модулем sale Битрикс

Тинькофф имеет официальный модуль для Битрикс на Маркетплейсе. Альтернативно — кастомный обработчик в /local/php_interface/include/sale_payment/tinkoff_acquiring/.

Структура обработчика:

handler.php         — основной класс, наследует ServiceHandler
.description.php    — описание и иконка
.settings.php       — поля: TerminalKey, Password, TestMode, TwoStagePayment
template/           — шаблон кнопки оплаты

Метод initiatePay формирует запрос к Init:

$request = [
    'TerminalKey' => $terminalKey,
    'Amount'      => $payment->getSum() * 100, // в копейках
    'OrderId'     => $payment->getOrderId(),
    'Description' => 'Заказ №' . $order->getField('ACCOUNT_NUMBER'),
    'SuccessURL'  => $returnUrl,
    'FailURL'     => $failUrl,
    'NotificationURL' => $notifyUrl,
    'Receipt'     => $this->buildReceipt($order), // для 54-ФЗ
];

Нотификации и обработка статусов

Тинькофф отправляет POST на NotificationURL при каждой смене статуса. Статусы, требующие действий в Битрикс:

Статус Значение Действие
AUTHORIZED Средства заблокированы Для двухстадийной — ждать Confirm
CONFIRMED Оплата подтверждена $payment->setPaid('Y')
REJECTED Отклонён банком Уведомить покупателя
REFUNDED Полный возврат Обновить статус заказа
PARTIAL_REFUNDED Частичный возврат Обновить сумму возврата
REVERSED Отмена авторизации Отменить платёж

Нотификация содержит Token для верификации подписи — проверку обязательно реализовывать. После успешной обработки возвращать строку OK, иначе Тинькофф повторит попытку.

Чековые данные для 54-ФЗ

Тинькофф имеет встроенную онлайн-кассу. При передаче объекта Receipt в запрос Init касса формирует чек автоматически. Структура Receipt:

{
  "Email": "[email protected]",
  "Phone": "+79001234567",
  "Taxation": "osn",
  "Items": [
    {
      "Name": "Название товара",
      "Price": 150000,
      "Quantity": 2,
      "Amount": 300000,
      "Tax": "vat20",
      "PaymentMethod": "full_payment",
      "PaymentObject": "commodity"
    }
  ]
}

Данные товаров берутся из корзины заказа: $order->getBasket()->getOrderableItems(). Для каждой позиции нужно сопоставить ставку НДС из каталога с кодом Tax в API Тинькофф (vat0, vat10, vat20, none).

Рекуррентные платежи

Тинькофф поддерживает привязку карты при первом платеже (параметр Recurrent: Y в Init) и последующие списания методом Charge без участия покупателя. В Битрикс это используется для подписок: при оформлении подписки сохраняется RebillId из нотификации, затем по крону вызывается Charge с нужным Amount. Подробнее — в статье про рекуррентные платежи.

Реальный кейс: таймаут при высокой нагрузке

Маркетплейс одежды, нагрузка ~500 заказов в день. Периодически покупатели жаловались, что после оплаты попадают на страницу «Ошибка», хотя деньги списались. Диагностика: при нагрузочных пиках SuccessURL-обработчик успевал вызвать GetState раньше, чем Тинькофф завершал проводку — статус возвращался AUTHORIZED вместо CONFIRMED. Статус заказа не менялся, покупатель видел ошибку. Решение: на SuccessURL показывать промежуточную страницу «Платёж обрабатывается» с JS-поллингом статуса через собственный AJAX-эндпоинт, а подтверждение оплаты делать исключительно по нотификации.

Тестирование

В личном кабинете Тинькофф (merchant.tinkoff.ru) создаётся тестовый терминал с отдельным TerminalKey. Тестовые карты для разных сценариев (успех, отказ, 3DS) — в документации API. Перед выходом в прод обязательно проверить: подпись нотификаций, корректность суммы в копейках, формирование Receipt, обработку двойного callback.

Сроки: базовое подключение без кассы — 1–3 дня. С 54-ФЗ и кастомной логикой статусов — 3–6 рабочих дней.