Мы часто сталкиваемся с запросами от интернет-магазинов из Казахстана: как подключить Kaspi Pay к сайту на 1С-Битрикс? Стандартные платёжные модули не учитывают специфику Kaspi eCommerce API Официальная документация Kaspi eCommerce API — приходится писать собственную интеграцию. Без готового решения — ручная обработка заказов, ошибки при неверном формате телефона, отсутствие верификации callback (риск мошенничества). Наш подход — собрать всё под ключ за 3-5 дней, с обучением и документацией.
Kaspi Pay — платёжный инструмент экосистемы Kaspi Bank, широко распространённый в Казахстане. Покупатель сканирует QR-код или вводит номер телефона, подтверждает оплату в приложении Kaspi. Для интернет-магазинов это один из наиболее конверсионных методов оплаты — Kaspi Pay даёт конверсию в 2-3 раза выше, чем классическая оплата картой, а комиссия составляет всего 1.5–2.5%. В результате магазины экономят до 30% на комиссиях по сравнению с обычным эквайрингом.
Как работает Kaspi eCommerce API?
Kaspi предоставляет несколько методов для интернет-магазинов:
- QR-оплата — генерируется QR-код со счётом. Покупатель сканирует через Kaspi.kz app. Используется как на сайте, так и в офлайн-точках.
- Kaspi Pay по ссылке — ссылка ведёт на форму подтверждения в браузере или открывает приложение Kaspi.
- Kaspi eCommerce API — для интернет-магазинов, прямая интеграция через API.
Для интеграции с Битрикс стандартный подход — eCommerce API или платёжная ссылка. Авторизация через Bearer токен. Базовый URL: https://api.kaspi.kz/payment/
$token = $this->getBusinessValue($payment, 'KASPI_TOKEN'); $orderId = $payment->getOrder()->getId(); $amount = $payment->getSum(); // в тенге (KZT) // Создание платежа $payload = [ 'device' => [ 'platformType' => 'WEB', 'id' => md5($orderId), ], 'amount' => [ 'value' => $amount, 'currency' => 'KZT', ], 'externalId' => (string)$orderId, 'description' => 'Оплата заказа №' . $orderId, 'paymentType' => 'ECOM', 'customer' => [ 'phone' => $phone, // телефон покупателя в формате +77XXXXXXXXX ], 'redirectUrl' => $returnUrl, 'callbackUrl' => $callbackUrl, ]; $ch = curl_init('https://api.kaspi.kz/payment/api/v1/payments/create'); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', 'Authorization: Bearer ' . $token, ]); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = json_decode(curl_exec($ch), true); curl_close($ch); // $response['data']['paymentLink'] — ссылка для редиректа // $response['data']['paymentId'] — ID платежа для проверки статуса Почему верификация callback критична?
Без верификации злоумышленник может отправить поддельный callback с статусом COMPLETED. Kaspi отправляет POST на callbackUrl при изменении статуса платежа. Всегда делайте дополнительный GET-запрос к API для подтверждения статуса.
$rawBody = file_get_contents('php://input'); $data = json_decode($rawBody, true); $paymentId = $data['data']['paymentId']; $externalId = $data['data']['externalId']; // наш orderId $status = $data['data']['status']; // 'COMPLETED', 'FAILED', 'EXPIRED' // Верификация через заголовок подписи или дополнительный запрос статуса if ($status === 'COMPLETED') { // Подтвердить через отдельный GET-запрос для защиты от фальшивых уведомлений $verification = $this->httpGet( 'https://api.kaspi.kz/payment/api/v1/payments/' . $paymentId, [], ['Authorization: Bearer ' . $token] ); if ($verification['data']['status'] === 'COMPLETED') { $order = \Bitrix\Sale\Order::loadByAccountNumber($externalId); // setPaid('Y'), save() } } http_response_code(200); echo json_encode(['status' => 'OK']); Важно: всегда верифицируйте статус через дополнительный GET-запрос к API. Принимать статус только из тела callback без проверки — риск мошенничества.
QR-код на странице заказа
Альтернативный UX для мобильных пользователей — QR-код прямо на странице оформления:
// Получить QR-код для оплаты $qrResponse = $this->httpPost('https://api.kaspi.kz/payment/api/v1/payments/qr', $payload, $headers); $qrBase64 = $qrResponse['data']['qrCode']; // base64 PNG изображение echo '<img src="data:image/png;base64,' . $qrBase64 . '" alt="Kaspi Pay QR">'; echo '<p>Отсканируйте QR в приложении Kaspi</p>'; Дополнительно — реализуйте polling или WebSocket для автообновления статуса на странице без перезагрузки.
Типичные ошибки при интеграции
- Неверный формат телефона — передача номера без кода страны или с лишними символами. Kaspi требует формат +77XXXXXXXXX. Проверяйте перед отправкой.
- Отсутствие верификации callback — многие разработчики принимают статус из тела POST без дополнительной проверки. Это позволяет злоумышленникам сфабриковать успешный платёж.
- Игнорирование polling для QR — если не реализовать периодическую проверку статуса, пользователь останется на странице с QR после оплаты, не видя изменения заказа.
Особенности казахстанского рынка
- Валюта — тенге (KZT). Суммы без копеек (целые числа).
- Телефоны в формате +77XXXXXXXXX (уточняйте у Kaspi).
- Kaspi Pay популярен для оплат от 5 000 до 500 000 KZT — основная аудитория.
- Kaspi Red — рассрочка, требует отдельной настройки мерчанта. Мы включаем её по запросу.
Что входит в работу
| Деливерабли | Описание |
|---|---|
| Документация callback | Схема верификации, примеры payload |
| Логи платежей | Запись статусов в журнал Битрикс |
| Доработка админки | Просмотр платежей, ручная верификация |
| Обучение | Инструкция для менеджеров (Kaspi Red, возвраты) |
| Поддержка | 14 дней после релиза, фиксация багов |
Процесс работы
- Аналитика — регистрация мерчанта, настройка webhook, тестовые ключи.
- Проектирование — выбор методов (QR, API, ссылка), схема callback-верификации.
- Реализация — создание платёжного модуля для Битрикс, с учётом инфоблоков и ORM.
- Тестирование — на тестовой среде Kaspi, проверка callback, возвраты.
- Деплой и обучение — перенос на прод, настройка прав доступа, документация.
Сроки и опыт
Ориентировочные сроки — от 3 до 5 рабочих дней в зависимости от сложности. У нас 5+ лет опыта интеграций Kaspi Pay, 50+ проектов на 1С-Битрикс. Оценим ваш проект за 1 день — просто свяжитесь с нами.
| Задача | Срок |
|---|---|
| Создание платежа + редирект + callback | 2–3 дня |
| QR-код на странице + polling статуса | +1–2 дня |
| Тестирование на тестовой среде | 0.5–1 день |
Получите консультацию по интеграции — мы поможем выбрать оптимальный метод и избежать типовых ошибок (неверный формат телефона, отсутствие верификации). Закажите интеграцию Kaspi Pay под ключ.







