Как вендинговому автомату принимать оплату Kaspi без терминала?

Обновлено 6 июля 2026 · Решение проблем · Версия в Markdown
Содержание
  1. Как это работает у вас
  2. Что понадобится
  3. Пошаговый сетап
  4. Грабли этого бизнеса
  5. Как это выглядит на практике
  6. Частые вопросы

Как это работает у вас

Флоу простой: пользователь вводит свой номер → получает счёт → оплачивает → приходит вебхук → автомат выдаёт товар.

Покупатель у автомата (наличных и карты нет — есть телефон с Kaspi)
        │
Экран автомата: «Введите номер телефона»
        │
ПО автомата → POST /invoices { phone_number, amount, cart_items/описание }
        │
Покупателю приходит push в Kaspi: счёт с суммой и составом покупки
        │
«Оплатить» в приложении Kaspi
        │
Вебхук invoice.status_changed: paid → контроллер автомата выдаёт товар

Генерация собственного QR «на сумму» на экране автомата — это сценарий официальной «Виртуальной кассы» Kaspi; ApiPay работает по другой механике — счёт на номер покупателя. Для автомата она даже удобнее: не нужен экран высокого разрешения под QR, а покупатель подтверждает оплату в своём телефоне.

Что понадобится

Автомату нужен выход в интернет и доступ к Kaspi API:

Компонент Зачем Где подробнее
ПО автомата с интернетом Ввод номера, вызов API, приём вебхука, команда выдачи ваше/вендора
Номер кассира на каждую точку Каждая организация (ИП/точка) = свой кассир Требования к номеру
API-ключ + вебхук на организацию Ключи и вебхуки настраиваются в каждом кабинете отдельно Ключ и секрет
Каталог/cart_items (при Kaspi ОФД) Чтобы в чеке был состав покупки cart_items и 422
Тариф на организацию Лимит — счетов в день; на лето можно даунгрейдиться тарифы — на apipay.kz

Пошаговый сетап

  1. Подключите первую организацию: регистрация на apipay.kz, номер кассира способом 1 («Настройки → Авторизация Kaspi»), API-ключ и вебхук-секрет.
  2. Прогоните цикл в песочнице: создание счёта → simulate-оплата → вебхук → команда «выдать». Отладьте выдачу до боевых денег.
  3. Экран ввода номера: формат 8XXXXXXXXXX; после ввода автомат вызывает:
curl -X POST https://api.apipay.kz/api/v1/invoices \
  -H "X-API-Key: КЛЮЧ_ТОЧКИ" \
  -H "Content-Type: application/json" \
  -d '{
    "phone_number": "8701XXXXXXX",
    "amount": 500,
    "description": "Автомат №3: кофе американо",
    "external_order_id_idempotency": "vend-3-slot-12-1720180000"
  }'
  1. Выдача строго по вебхуку paid (подпись X-Webhook-Signature по raw body — настройка). Покажите на экране «Ожидаем оплату…» и таймер: у счёта окно 24 часа, но для автомата разумно закрывать сессию через 2–3 минуты и предлагать попробовать снова.
  2. Идемпотентность обязательна: ключ вида автомат-слот-время защитит от двойного счёта при сетевых ретраях контроллера; повтор вернёт 409 с данными уже созданного счёта.
  3. Масштабирование на точки: каждая точка/ИП — отдельная организация со своим кассиром, ключом и вебхуком. Один и тот же URL вебхука можно указать в обоих кабинетах — но настроить его «в одном кабинете сразу на два» нельзя: настройка живёт в каждой организации отдельно.

Грабли этого бизнеса

  1. Страх «забанят за частоту». Снят практикой: частые оплачиваемые счета — нормальный оборот. Ограничение возможно только при массовых НЕоплаченных счетах.
  2. Покупатель ушёл, не оплатив. Счёт живёт 24 часа — он может «догнать» покупателя позже, когда товар уже никто не ждёт. Решение: короткий таймер сессии на автомате и выдача только по вебхуку, привязанному к конкретному счёту.
  3. Выдача по слову «оплатил». У автомата некому проверить — только вебхук paid, ничего другого.
  4. Каталог и скидки. Если нужен состав покупки в чеке (Kaspi ОФД) — cart_items обязателен; при своих ценах/скидках надёжнее передавать price позиции явно и считать скидки на своей стороне.
  5. Один кабинет на все точки — нельзя. Каждая организация подключается отдельно: свой кассир, свои ключи, свой вебхук. Планируйте SIM-карты и тарифы по числу юрлиц/точек.
  6. Сезонность. Автоматы в учебных заведениях летом простаивают — тариф можно понизить на сезон и вернуть осенью.

Как это выглядит на практике

Типичный сценарий для сети вендинговых автоматов с собственным ПО. Часто на старте владельцы хотят выводить на экране автомата собственный QR «на сумму» — как на терминале. Но такой сценарий — это официальная «Виртуальная касса» Kaspi, отдельный продукт банка; у ApiPay механика другая: номер → счёт → оплата → вебхук → выдача. Экран автомата переделывают под ввод номера — и это оказывается удобнее: покупатель подтверждает оплату в своём телефоне, автомату не нужен платёжный экран.

Отдельно снимается частый страх «забанят за частоту запросов»: частые оплачиваемые счета — нормальный оборот, ограничение возможно только при массовых неоплаченных счетах. При этом именно вендинг раньше всего упирается в тонкости каталога и скидок — из этого опыта и выросли рекомендации пункта 4: при своих ценах передавайте price позиции явно и считайте скидки на своей стороне.

Частые вопросы

Почему не QR на экране автомата?

Динамический QR-счёт ApiPay живёт ~5 минут и требует экрана под QR; сценарий «QR на сумму как терминал» — это официальная «Виртуальная касса» Kaspi, отдельный продукт самого банка. Механика ApiPay для автомата — счёт на номер покупателя: проще экран, подтверждение в телефоне покупателя.

Что если покупатель ввёл чужой/несуществующий номер?

Счёт просто не будет оплачен (или вернётся ошибка client_not_found, если номера нет в Kaspi). Автомат ничего не выдаёт без вебхука paid — рисков нет, сессия закроется по таймеру.

Не будет ли проблем из-за сотен счетов в день с одного кассира?

Как правило — нет: оплачиваемые счета это нормальный оборот. Избегайте только лавин неоплаченных счетов (защита — идемпотентность и таймер сессии).

У меня 5 автоматов на 2 ИП — сколько подключений нужно?

По числу организаций: 2 организации = 2 кассира, 2 ключа, 2 вебхука, 2 тарифа. Автоматы одного ИП делят одну организацию; различайте их через external_order_id/описание.

Можно ли принимать и наличные, и Kaspi?

Да, ApiPay не трогает остальную обвязку автомата — это независимый сервис поверх вашего Kaspi Pay; деньги от оплат идут напрямую на Kaspi-счёт вашего ИП.

Интеграция с ИИ

Не настраивайте вручную — поручите ИИ

Скопируйте готовый промпт и вставьте своему ИИ-ассистенту — он подключит приём платежей примерно за 15 минут. Настраивает ИИ, а не вы.

Остались вопросы — напишите нам в WhatsApp: +7 708 516 74 89. Отвечаем быстро, без звонков.

Написать в WhatsApp

Для разработчика. Полная спецификация API — apipay.kz/docs. Эта статья в Markdown — /guides/apipay-dlya-vendinga.md. Справочник фактов для ИИ-агента — apipay.kz/llms.txt.