Интеграция 1С-Битрикс со сплит-сервисами (Яндекс Сплит, Долями)
Сплит-оплата — это не кредит. Покупатель не берёт в долг у банка, не проходит скоринг на 15 минут и не подписывает кредитный договор. Сумма покупки делится на 2–4 равных платежа, первый — сразу, остальные — автоматическое списание с карты через 2, 4, 6 недель. Для магазина это означает: деньги за товар приходят полностью сразу (или в течение 1–2 дней), а рассрочку покупателю оплачивает сервис. Интеграция Яндекс Сплит и Долями с 1С-Битрикс различается по 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\Sale\Order::create) - Подтвердить получение через API Яндекса (
POST /api/merchant/v1/orders/{orderId}/capture) - Обновить статус платежа
Обработчик платёжной системы для Яндекс Сплит
В 1С-Битрикс создаём обработчик в /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): интеграция
«Долями» — сервис от Т-Банка (ранее Тинькофф). 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-сертификатом (выдаётся при подключении).
Статусная модель сплит-сервисов
Сплит-сервисы проще кредитных — меньше промежуточных статусов:
| Статус | Яндекс Сплит | Долями | Действие в Битрикс |
|---|---|---|---|
| Создан | PENDING |
new |
Ожидание |
| Подтверждён | CONFIRMED |
approved |
$payment->setPaid('Y') |
| Отклонён | REJECTED |
rejected |
Отмена платежа |
| Отменён | CANCELED |
canceled |
Отмена платежа |
| Возврат | REFUNDED |
refunded |
Возврат в Битрикс |
Ключевое отличие от кредита: решение принимается за секунды (нет скоринга в традиционном смысле), а деньги магазин получает сразу — не после подписания кредитного договора.
Возвраты и частичная отмена
Оба сервиса поддерживают частичные возвраты. Яндекс Сплит: POST /api/merchant/v1/orders/{orderId}/refund с суммой возврата. Долями: POST /v1/orders/{orderId}/refund.
При частичном возврате сервис пересчитывает график платежей покупателя. Магазину возвращается только сумма возврата (из уже перечисленных денег).
Обработка в 1С-Битрикс через метод 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С-Битрикс это две отдельные платёжные системы в модуле sale, каждая со своим обработчиком. Привязка к службам доставки и ограничения по сумме настраиваются стандартными средствами: Магазин → Платёжные системы → Ограничения.







