Kaspi POS Automation
Открытый Node.js-сервер для приёма платежей Kaspi Pay: счета, QR-оплата, история операций, возвраты и вебхуки.
MIT, от команды Tapter.

Open-source проект для интеграции Kaspi Pay.

Express-сервер + готовый веб-интерфейс: авторизация кассира по SMS, выставление счетов, QR-оплата, история операций и возвраты.


Сервер stateless после авторизации, лицензия MIT.

Что умеет
  • Авторизация — вход кассира Kaspi Pay по номеру телефона, 3-шаговый SMS-flow
  • Счета — выставление счёта клиенту по номеру телефона
  • QR-оплата — генерация QR и отслеживание статуса в реальном времени
  • Единый QR — приём платежей из приложений других банков
  • История и возвраты — список транзакций, статистика продаж, оформление возвратов
  • Вебхуки — POST-уведомления при смене статуса, подпись HMAC SHA-256, до 3 повторов
Быстрый старт

Нужен Node.js ≥ 20.6.

1. git clone репозитория
2. npm install
3. создать .env с ключом TOKEN_SECRET_KEY (64 hex-символа)
4. npm start — интерфейс поднимется на localhost:3000

Ключи keypair.json и device.json сгенерируются при первом запуске.

Частые вопросы
Чем это отличается от обычного Kaspi QR?
Здесь всё то же самое, но программно: касса сама создаёт счёт или QR, сама узнаёт об оплате через вебхук и сама может оформить возврат. Кассиру не нужно вручную открывать приложение.
Как принимать оплату из приложений других банков?
При создании QR через /api/qr/create возвращаются два поля. Для Единого QR генерируйте код из QrOriginalToken (ссылка вида qr.kaspi.kz), а не из QrToken — последний работает только внутри Kaspi.
Можно ли использовать демо-интерфейс в продакшене?
Папка public/ сделана для демонстрации и тестирования API. Для боевой кассы лучше написать свой фронтенд поверх тех же эндпоинтов.
Что за переменные APP_*?
Это параметры клиента Kaspi Pay. API валидирует их и может отклонить запрос с неизвестными значениями, поэтому при выходе новой версии приложения их стоит обновить.
Какая лицензия?
MIT. Пул-реквесты приветствуются — перед отправкой посмотрите CONTRIBUTING.md в репозитории.