[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80183":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":14,"stars7d":14,"stars30d":15,"stars90d":13,"forks30d":13,"starsTrendScore":16,"compositeScore":17,"rankGlobal":8,"rankLanguage":8,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":8,"pushedAt":8,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":13,"starSnapshotCount":13,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},80183,"kaspi-pos-automation","tapter-dev\u002Fkaspi-pos-automation","tapter-dev",null,"JavaScript",99,40,3,0,4,11,12,52.94,"MIT License",false,"main",true,[],"2026-06-12 04:01:27","# Kaspi POS Automation\n\nАвтоматизация платежей для POS-систем через Kaspi Pay API. Проект предоставляет серверное приложение и веб-интерфейс для создания счетов, генерации QR-кодов, просмотра истории транзакций и оформления возвратов.\n\n## Архитектура\n\n```\n┌──────────────┐       ┌──────────────────┐       ┌──────────────────┐\n│  Web UI      │◄─────►│  Express Server   │◄─────►│  Kaspi Pay API   │\n│  (public\u002F)   │       │  (server.js)      │       │  (entrance\u002F      │\n│              │       │                   │       │   mtoken\u002Fqrpay)  │\n└──────────────┘       └──────────────────┘       └──────────────────┘\n                              │\n                    ┌─────────┴─────────┐\n                    │   src\u002F            │\n                    │  ├─ config.js     │  Keypair, device, constants\n                    │  ├─ crypto.js     │  ECDH, ECDSA, TOTP, AES\n                    │  ├─ helpers.js    │  Fetch wrapper, headers\n                    │  ├─ session.js    │  Stateless session factory\n                    │  ├─ logger.js     │  File & console logging\n                    │  ├─ polling.js    │  Payment status polling\n                    │  ├─ webhookStore  │  Webhook management\n                    │  └─ routes\u002F       │  API route handlers\n                    │     ├─ auth.js    │  SMS auth (3-step)\n                    │     ├─ invoice.js │  Invoice creation\n                    │     ├─ qr.js      │  QR code generation\n                    │     ├─ history.js │  Transaction history\n                    │     ├─ refund.js  │  Refund processing\n                    │     └─ session.js │  Session management\n                    └───────────────────┘\n```\n\nСервер **stateless после авторизации** — данные сессии (зашифрованный `vtokenSecret`, `tokenSN`, `profileId`) хранятся на стороне клиента и передаются через заголовки.\n\n### Webhooks\n\nСервер автоматически отслеживает статусы созданных QR- и invoice-платежей (polling каждые 3 сек.) и отправляет HTTP POST-уведомления на указанные URL при изменении статуса.\n\n- 📡 **События:** `payment.success` · `payment.failed` · `payment.expired`\n- ⚙️ **Настройка:** файл `webhooks.json` (см. [`webhooks.example.json`](.\u002Fwebhooks.example.json))\n- 🔐 **Подпись:** HMAC SHA-256\n- 🔄 **Retry:** до 3 попыток с нарастающей задержкой\n\n> 📖 Подробнее — в [документации API](.\u002Fdocs\u002FAPI.md#webhooks--уведомления).\n\n## Требования\n\n- Node.js ≥ 20.6\n\n## Быстрый старт\n\n```bash\n# 1. Клонировать репозиторий\ngit clone https:\u002F\u002Fgithub.com\u002Ftapter-dev\u002Fkaspi-pos-automation.git\ncd kaspi-pos-automation\n\n# 2. Установить зависимости\nnpm install\n\n# 3. Создать .env с ключом шифрования\necho \"TOKEN_SECRET_KEY=$(openssl rand -hex 32)\" > .env\n\n# 4. (Опционально) Настроить вебхуки\ncp webhooks.example.json webhooks.json\n# Отредактируйте webhooks.json под свои нужды\n\n# 5. Запустить сервер\nnpm start\n```\n\nПри первом запуске автоматически генерируются `keypair.json` и `device.json`.\n\n## Переменные окружения\n\n| Переменная         | Описание                                 | Обязательная |\n| ------------------ | ---------------------------------------- | ------------ |\n| `TOKEN_SECRET_KEY` | 64-символьная hex-строка для AES-256-GCM | Да           |\n| `PORT`             | Порт сервера (по умолчанию `3000`)       | Нет          |\n\n## Ротация ключей\n\n```bash\nnpm run regen:keypair   # Перегенерация ECDSA-ключей\nnpm run regen:device    # Перегенерация идентификатора устройства\n```\n\nСтарые файлы сохраняются как `.bak`. После ротации существующие сессии становятся недействительными.\n\n## Демо-интерфейс (`public\u002F`)\n\nВ папке `public\u002F` находится встроенный веб-интерфейс (SPA), который запускается автоматически вместе с сервером и доступен по адресу `http:\u002F\u002Flocalhost:3000`.\n\n**Возможности интерфейса:**\n\n- 🔐 **Авторизация** — вход по номеру телефона кассира Kaspi Pay через 3-шаговый SMS-flow (ввод номера → OTP-код → завершение)\n- 🧾 **Выставление счёта** — создание счёта по номеру телефона клиента с указанием суммы и комментария\n- 📱 **QR-оплата** — генерация QR-кода для оплаты с отслеживанием статуса в реальном времени\n- 📋 **История операций** — просмотр списка транзакций с детализацией\n- 💰 **Продажи и возвраты** — статистика продаж и оформление возвратов\n\n**Файлы:**\n\n| Файл | Описание |\n| --- | --- |\n| `public\u002Findex.html` | HTML-разметка и стили интерфейса |\n| `public\u002Fapp.js` | Клиентская логика (API-вызовы, управление состоянием) |\n\n> Интерфейс предназначен для демонстрации и тестирования API. Для продакшена рекомендуется использовать собственный фронтенд.\n\n## API документация\n\nПодробная документация по всем эндпоинтам API: [`docs\u002FAPI.md`](.\u002Fdocs\u002FAPI.md).\n\n📗 Документация также доступна на казахском языке: [`README.kk.md`](.\u002FREADME.kk.md) | [`docs\u002FAPI.kk.md`](.\u002Fdocs\u002FAPI.kk.md)\n\n## Разработка\n\n```bash\n# Линтинг\nnpm run lint\n\n# Форматирование\nnpm run format\n\n# Тесты\nnpm test\n```\n\n## Лицензия\n\nЭтот проект распространяется под лицензией [MIT](.\u002FLICENSE).\n\n## Участие в проекте\n\nМы приветствуем вклад сообщества! Пожалуйста, ознакомьтесь с [CONTRIBUTING.md](.\u002FCONTRIBUTING.md) перед созданием pull request.\n","Kaspi POS Automation 是一个通过 Kaspi Pay API 实现POS系统支付自动化的项目。它提供了一个基于Express的服务器应用程序和一个Web界面，用于创建账单、生成二维码、查看交易历史记录以及处理退款。该项目使用了多种加密技术（如ECDH、ECDSA、TOTP、AES）确保数据安全，并支持无状态会话管理以提高性能。此外，还具备Webhook功能，可以自动跟踪支付状态变化并通过HTTP POST通知指定URL。此工具适用于需要集成Kaspi Pay服务的各种商业场景中，尤其是那些希望简化收银流程并增强客户体验的企业或个人开发者。要求Node.js版本不低于20.6。",2,"2026-06-11 03:59:35","CREATED_QUERY"]