Інтеграція 1С-Bitrix з Tinkoff Credit
Покупець додав товар за 80 000 рублів у корзину, але не готовий платити одразу. Якщо на сторінці оформлення замовлення є кнопка «Купити в кредит» — конверсія на дорогих товарах виростає на 15–25%. Tinkoff Credit — один з найпоширеніших сервісів онлайн-кредитування в російських інтернет-магазинах. Інтеграція з 1С-Bitrix технічно несложна, але містить нюанси, які впливають на працездатність.
Як працює Tinkoff Credit
Процес зі сторони покупця:
- Вибирає товар → натискає «Купити в кредит»
- Перенаправляється на форму Tinkoff, заповнює заявку
- Tinkoff приймає рішення (1–15 хвилин)
- При одобренні — гроші переводяться магазину, покупець отримує товар
Зі сторони магазину це платіжна система з відстроченим підтвердженням. Tinkoff надає API (api-msk.tinkoff.ru/api/partners/v2/orders/create), через яку магазин створює заявку на кредит, передає дані про товари та суму, отримує посилання для редиректу покупця.
Підключення: договір та налаштування
Перед технічною інтеграцією потрібен партнерський договір з Tinkoff. Після підписання ви отримуєте:
- shopId — ідентифікатор магазину
- showcaseId — ідентифікатор вітрини (може бути кілька для різних типів кредиту/розстрочки)
- API-ключ — для авторизації запитів
- Доступ у особистий кабінет партнера — для моніторингу заявок
Технічна інтеграція
У 1С-Bitrix Tinkoff Credit підключається як платіжна система модуля sale. Два шляхи:
Шлях 1: готовий модуль з Marketplace. На marketplace.1c-bitrix.ru є кілька модулів для Tinkoff Credit. Встановлюєте модуль, вводите shopId, showcaseId, API-ключ у параметрах платіжної системи (Магазин → Параметри → Платіжні системи). Модуль створює обробник \Sale\Handlers\PaySystem\TinkoffCredit та реєструє callback-URL для сповіщень.
Шлях 2: користувацький обробник платіжної системи. Якщо готові модулі не задовольняють (застарілі, брак функцій, конфлікти), пишете обробник з нуля.
Структура обробника в /local/php_interface/include/sale_payment/tinkoff_credit/:
handler.php — клас обробника
.description.php — метаданні для админки
.settings.php — список параметрів (shopId, showcaseId, apiKey)
template/ — шаблон кнопки оплати
Клас обробника успадковується від \Bitrix\Sale\PaySystem\ServiceHandler і реалізує методи:
-
initiatePay— формує запит до API Tinkoff, створює заявку, повертає URL для редиректу -
processRequest— обробка callback від Tinkoff при зміні статусу заявки -
getPaymentIdFromRequest— вилучення ID платежу з вхідного сповіщення
Формування заявки
Запит до API Tinkoff містить:
{
"shopId": "your_shop_id",
"showcaseId": "your_showcase_id",
"orderNumber": "BX_ORDER_123",
"customerInfo": {
"email": "[email protected]",
"mobilePhone": "+79001234567"
},
"items": [
{
"name": "Ноутбук Lenovo ThinkPad",
"quantity": 1,
"price": 80000,
"category": "electronics"
}
],
"sum": 80000,
"returnUrl": "https://shop.ru/personal/order/detail/{ORDER_ID}/",
"failUrl": "https://shop.ru/personal/order/detail/{ORDER_ID}/?fail=1",
"postLink": "https://shop.ru/bitrix/tools/sale_ps_result.php"
}
Товарні позиції обов'язкові. Tinkoff використовує їх для скорингу — заявка без товарів буде відхилена. Дані беруться з корзини: \Bitrix\Sale\Order::loadByAccountNumber($orderNumber)->getBasket().
postLink — URL, на який Tinkoff відправляє POST-сповіщення при зміні статусу заявки. Має бути доступний зовні (не localhost, не за basic auth).
Обробка callback-сповіщень
Tinkoff відправляє POST на postLink при кожній зміні статусу заявки:
| Статус | Значення | Дія у Bitrix |
|---|---|---|
new |
Заявка створена | Нічого |
inprocess |
На розгляді | Нічого |
approved |
Одобрена | Нічого (клієнт ще не підписав) |
signed |
Договір підписаний | Підтвердити оплату: $payment->setPaid('Y') |
rejected |
Відхилена | Скасувати платіж, сповістити менеджера |
canceled |
Скасована клієнтом | Скасувати платіж |
Критично: оплату підтверджуємо тільки на статус signed, а не approved. Одобрена заявка ще може бути скасована клієнтом.
Перевірка підпису сповіщення — обов'язкова. Tinkoff передає підпис у заголовку, яка обчислюється як HMAC від тіла запиту та вашого API-ключа. Без перевірки підпису зловмисник може підтвердити оплату, відправивши фальшивий POST.
Кнопка на сторінці товара
Крім оплати в чекауті, Tinkoff надає віджет для карточки товара — показує орієнтовний щомісячний платіж. JS-віджет підключається скриптом:
<script src="https://forma.tinkoff.ru/static/onlineScript.js"></script>
І викликається з параметрами: tinkoff.online({shopId, showcaseId, items, sum}). Інтеграція віджета в шаблон компонента bitrix:catalog.element — у файлі template.php або через result_modifier.php.
Тестування
Tinkoff надає тестове середовище з окремими shopId та showcaseId. В тестовому режимі заявки одобрюються автоматично. Обов'язково перевірте повний цикл: створення заявки → редирект → callback з кожним статусом → оновлення платежу у Bitrix. Особлива увага — обробленню rejected та canceled: переконайтеся, що замовлення не зависає в статусі «Очікування оплати» навічно.







