Мы часто сталкиваемся с запросами от интернет-магазинов из Казахстана: как подключить 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 под ключ.







