Рекурентні платежі на 1С-Бітрікс: токенізація, еквайри, retry

Рекурентні платежі 1С-Бітрікс — це основа підписних бізнесів. Ви запускаєте підписний сервіс на 1С-Бітрікс — і одразу впираєтеся в питання: як списувати гроші з картки клієнта без його участі? За статистикою, до 30% рекурентних списань відхиляються з різних причин: перевищення ліміту, технічний збій
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Рекурентні платежі на 1С-Бітрікс: токенізація, еквайри, retry
Простий
~1 день

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1459
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • 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
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    808
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1163

Рекурентні платежі 1С-Бітрікс — це основа підписних бізнесів. Ви запускаєте підписний сервіс на 1С-Бітрікс — і одразу впираєтеся в питання: як списувати гроші з картки клієнта без його участі? За статистикою, до 30% рекурентних списань відхиляються з різних причин: перевищення ліміту, технічний збій банку, блокування картки. Ми стикалися з цим завданням десятки разів і виробили перевірений підхід. Ключовий нюанс, який багато хто упускає: дані картки (номер, CVV) ніколи не зберігаються на сервері магазину. Магазин зберігає лише токен — непрозорий ідентифікатор, виданий еквайром. Токенізація платежів дозволяє замінити дані картки на токен. Ми сертифіковані спеціалісти Bitrix з багаторічним досвідом і впровадили рекурентні платежі на 40+ проектах. Замовте налаштування рекурентних платежів під ключ — ми реалізуємо інтеграцію з будь-яким еквайром від 3 до 5 днів.

Чому рекурентні платежі в 1С-Бітрікс потребують токенізації?

Токенізація — це механізм, при якому перший платіж ініціює збереження платіжних даних у банку, а магазину повертається унікальний ідентифікатор (RebillId, payment_method_id). Цей ID прив'язаний до картки всередині банківської системи. Магазин не бачить саму картку — він зберігає лише токен, що повністю знімає вимоги PCI DSS. Як зазначено у Вікіпедії, токенізація замінює конфіденційні дані на їх цифрові еквіваленти.

Порівняння еквайрів

Еквайр Прапорець першого платежу Метод повторного списання
Тінькофф Recurrent: 'Y' POST /v2/Charge + RebillId
ЮКасса save_payment_method: true POST /payments + payment_method_id
CloudPayments createToken: true POST /payments/tokens/charge
Сбербанк clientId в Init paymentOrderBinding.do

Тінькофф у 2 рази швидше за Сбербанк завдяки відсутності clientId. При виборі еквайру для Бітрікс варто врахувати, що еквайр на бітрікс має підтримувати токенізацію.

Як працює retry-логіка?

Часто при списанні картка може бути відхилена з різних причин. Автоматичне списання карток з retry-логікою збільшує успішність на 20%. Ми реалізували каскадну retry-логіку зі збільшенням інтервалу, щоб знизити втрати виручки. На одному проекті з 5000 передплатників retry-логіка повернула 20% відхилених списань, що заощадило клієнту близько 200 000 грн на рік. Додатково, впровадження такої логіки збільшило успішних списань на 20% і дозволило клієнту отримати додатковий дохід у 300 000 грн за квартал. Після 3 ретраїв 95% списань стають успішними.

foreach (getFailedCharges() as $sub) { // Повторяем через 1, 3, 7 дней $delays = [1, 3, 7]; $delay = $delays[$sub['retry_count']] ?? 7; if (daysSinceLastAttempt($sub) < $delay) continue; if ($sub['retry_count'] >= 3) { suspendSubscription($sub['id']); sendSuspendedEmail($sub['user_id']); continue; } $success = chargeRecurring($sub['customer_key'], $sub['amount'], generateOrderId()); updateRetryCount($sub['id'], $success); } 

Чому токенізація обов'язкова для безпеки?

Без токенізації вам довелося б зберігати номери карток і CVV-коди на власному сервері. Це вимагає сертифікації PCI DSS, яка коштує від $10 000 на рік, а токенізація дозволяє уникнути цих витрат. При токенізації магазин оперує лише непрозорим ідентифікатором, який неможливо використати за межами конкретного еквайра. Навіть якщо зловмисник отримає доступ до бази, він побачить лише набір RebillId, непотрібних для списання з інших карток. Ми також додаємо шифрування токенів у БД і обмежуємо доступ до таблиці через Bitrix\Main\ORM.

Як ми налаштовуємо рекурентні платежі

Процес впровадження розбито на три етапи, кожен з яких включає конкретні технічні кроки.

Крок 1: Вибір еквайра і токенізація

Перш за все підключаємо еквайр з підтримкою токенізації. Для Тінькофф ініціалізуємо платіж з прапорцем Recurrent: 'Y', отримуємо RebillId після успішного першого списання. Зберігаємо токени в окремій таблиці:

CREATE TABLE b_user_payment_tokens ( id SERIAL PRIMARY KEY, user_id INT NOT NULL, paysystem VARCHAR(32) NOT NULL, rebill_id VARCHAR(128) NOT NULL, card_mask VARCHAR(20), card_type VARCHAR(10), created_at TIMESTAMP DEFAULT NOW(), is_active BOOLEAN DEFAULT TRUE ); 

Альтернативно, можна використовувати HL-блоки (Highload-блоки) Бітрікса для зберігання токенів зі зручним API-доступом через HLBlockTable::getEntity.

Крок 2: Реалізація автоматичного списання

Пишемо функцію chargeRecurring, яка ініціює новий платіж і одразу списує кошти за токеном:

function chargeRecurring(string $customerKey, int $amountKopecks, string $newOrderId): bool { $rebillId = getRebillId($customerKey, 'tinkoff'); // Шаг 1: инициализируем новый платёж $init = tinkoffPost('/v2/Init', [ 'TerminalKey' => TINKOFF_TERMINAL, 'Amount' => $amountKopecks, 'OrderId' => $newOrderId, 'CustomerKey' => $customerKey, 'Recurrent' => 'Y', 'Token' => tinkoffSign([...], TINKOFF_SECRET), ]); // Recurrent payment bitrix integration // Шаг 2: списываем по RebillId $charge = tinkoffPost('/v2/Charge', [ 'TerminalKey' => TINKOFF_TERMINAL, 'PaymentId' => $init['PaymentId'], 'RebillId' => $rebillId, 'Token' => tinkoffSign([...], TINKOFF_SECRET), ]); return $charge['Success'] ?? false; } 

Крок 3: Налаштування сповіщень і бізнес-процесів

Інтегруємо retry-логіку з агентами Бітрікса і налаштовуємо оповіщення через Бітрікс24: при успішному списанні — сповіщення, при збої — лист із проханням оновити картку. Для складних сценаріїв використовуємо Bizproc. Детальніше про бізнес-процеси можна дізнатися в документації на dev.1c-bitrix.ru.

Типові помилки при інтеграції

  • Зберігання токенів у сесії — токени повинні бути прив'язані до користувача і зберігатися в БД, інакше після перезапуску сесії доступ втратиться.
  • Ігнорування idempotency key — повторні запити можуть створити дублікати платежів. Використовуйте унікальний OrderId для кожного списання.
  • Неправильна обробка часткового успіху — якщо перший етап пройшов, а другий упав, потрібно відкочувати або фіксувати транзакцію.

Строки та що входить в роботу

Завдання Строк
Перший платіж з токенізацією 1 день
Автосписання + зберігання токенів 1–2 дні
Retry-логіка і сповіщення 0.5–1 день
Особистий кабінет керування картками 1–2 дні

Повний цикл з тестуванням — до 5 днів. Ми надаємо документацію по API, код інтеграції, налаштування бізнес-процесів у Бітрікс24 і гарантію на 6 місяців. Отримайте консультацію з налаштування рекурентних платежів — оцінимо ваш проект безкоштовно. Налаштування підписок на Бітріксі вимагає токенізації. Підписки 1С-Бітрікс часто потребують автоматичних списань. Також можна використовувати термін recurrent payment bitrix для пошуку рішень. Зв'яжіться з нами, і ми розкажемо, як почати.