Інтеграція 1С-Bitrix зі сплит-сервісами (Яндекс Сплит, Долями)
Сплит-оплата — це не кредит. Покупець не беде в борг у банку, не проходить скоринг на 15 хвилин та не підписує кредитний договір. Сума покупки ділиться на 2–4 рівних платежі, першу — одразу, решта — автоматичне списання з карти через 2, 4, 6 тижнів. Для магазину це означає: гроші за товар приходять повністю одразу (або протягом 1–2 днів), розстрочку покупцю оплачує сервіс. Інтеграція Яндекс Сплит та Долями з 1С-Bitrix різниться за API, але однакова за архітектурою.
Яндекс Сплит: технічна інтеграція
Яндекс Сплит працює через Yandex Pay SDK. Підключення складається з двох частин: фронтенд-віджет та бекенд-обробник.
Фронтенд. На сторінці чекауту або карточці товара підключається SDK:
<script src="https://pay.yandex.ru/sdk/v1/pay.js"
onload="onYaPayLoad()"
async></script>
Ініціалізація кнопки:
function onYaPayLoad() {
const YaPay = window.YaPay;
YaPay.Button.create({
merchantId: 'YOUR_MERCHANT_ID',
currencyCode: YaPay.CurrencyCode.Rub,
cart: {
items: [{
productId: 'SKU123',
total: {amount: '25000.00'}
}]
},
paymentType: 'SPLIT' // Саме це включає сплит
})
.mount(document.getElementById('ya-split-button'));
}
Параметр paymentType: 'SPLIT' — ключовий. Без нього кнопка працює як звичайний Yandex Pay (повна оплата).
Бекенд. Після того як покупець підтверджує сплит-оплату в інтерфейсі Яндекса, Яндекс відправляє webhook на ваш callbackUrl. Обробник має:
- Верифікувати JWT-токен з заголовка запиту
- Створити замовлення у 1С-Bitrix (
\Bitrix\Sale\Order::create) - Підтвердити отримання через API Яндекса (
POST /api/merchant/v1/orders/{orderId}/capture) - Оновити статус платежу
Обробник платіжної системи для Яндекс Сплит
У 1С-Bitrix створюємо обробник в /local/php_interface/include/sale_payment/yandex_split/.
Клас успадковує \Bitrix\Sale\PaySystem\ServiceHandler і реалізує:
public function initiatePay(
\Bitrix\Sale\Payment $payment,
\Bitrix\Main\Request $request = null
) {
// Рендеримо шаблон з JS-кнопкою Яндекс Сплит
// Передаємо дані корзини в JS
$this->setExtraParams([
'MERCHANT_ID' => $this->getBusinessValue($payment, 'MERCHANT_ID'),
'CART_ITEMS' => $this->getCartItems($payment),
'AMOUNT' => $payment->getSum(),
]);
return $this->showTemplate($payment, 'template');
}
Шаблон template/template.php рендерит кнопку Yandex Pay з параметром SPLIT.
Долями (Dolyame): інтеграція
«Долями» — сервіс від Т-Банка (раніше Tinkoff). API відрізняється від Яндекс Сплит, але принцип той же.
Endpoint: https://partner.dolyame.ru/v1/orders
Створення замовлення:
$response = $this->apiRequest('POST', '/v1/orders', [
'id' => $payment->getField('ORDER_ID'),
'amount' => $payment->getSum(),
'prepaid_amount' => 0,
'items' => $this->formatItems($payment),
'client_info' => [
'first_name' => $order->getPropertyValueByCode('NAME'),
'last_name' => $order->getPropertyValueByCode('LAST_NAME'),
'phone' => $order->getPropertyValueByCode('PHONE'),
'email' => $order->getPropertyValueByCode('EMAIL'),
],
'notification_url' => $this->getCallbackUrl($payment),
'success_url' => $this->getSuccessUrl($payment),
'fail_url' => $this->getFailUrl($payment),
]);
API «Долями» повертає link — URL для редиректу покупця на сторінку підтвердження.
Авторизація: HTTP Basic Auth з login та password, отриманими при реєстрації партнера. Додатково — підпис запиту X509-сертифікатом (видається при підключенні).
Модель статусів сплит-сервісів
Сплит-сервіси простіше кредитних — менше проміжних статусів:
| Статус | Яндекс Сплит | Долями | Дія у Bitrix |
|---|---|---|---|
| Створен | PENDING |
new |
Очікування |
| Підтверджений | CONFIRMED |
approved |
$payment->setPaid('Y') |
| Відхилений | REJECTED |
rejected |
Скасування платежу |
| Скасований | CANCELED |
canceled |
Скасування платежу |
| Повернення | REFUNDED |
refunded |
Повернення у Bitrix |
Ключова відмінність від кредиту: рішення приймається за секунди (немає скорингу в традиційному сенсі), гроші магазин отримує одразу — не після підписання кредитного договору.
Повернення та часткова скасування
Обидва сервіси підтримують часткові повернення. Яндекс Сплит: POST /api/merchant/v1/orders/{orderId}/refund з сумою повернення. Долями: POST /v1/orders/{orderId}/refund.
При частковому поверненні сервіс перераховує графік платежів покупця. Магазину повертається тільки сума повернення (з уже перечислених грошей).
Обробка у 1С-Bitrix через метод refund обробника платіжної системи:
public function refund(\Bitrix\Sale\Payment $payment, $refundAmount)
{
$orderId = $payment->getField('ORDER_ID');
$response = $this->apiRequest('POST', "/v1/orders/{$orderId}/refund", [
'amount' => $refundAmount,
'items' => $this->getRefundItems($payment, $refundAmount)
]);
return $response['status'] === 'success';
}
Мінімальні та максимальні суми
| Сервіс | Мінімум | Максимум | Кіл-во платежів |
|---|---|---|---|
| Яндекс Сплит | 1 000 руб | 150 000 руб | 2–4 |
| Долями | 500 руб | 30 000 руб | 4 |
Суми актуальні на момент написання — перевіряйте в документації, ліміти змінюються. У обробнику платіжної системи реалізуйте перевірку суми замовлення: якщо сума поза діапазоном — не показуйте кнопку сплит-оплати.
Одночасне підключення обох сервісів
Можна й потрібно підключати обидва. На сторінці чекауту показуються дві кнопки: «Оплатити Яндекс Сплит» та «Оплатити Долями». Покупець вибирає той сервіс, картою якого користується. У 1С-Bitrix це дві окремі платіжні системи в модулі sale, кожна зі своїм обробником. Прив'язка до служб доставки та обмеження за сумою налаштовуються стандартними засобами: Магазин → Платіжні системи → Обмеження.







