Коротко
Для каждого поста или дверцы автомата без экрана создаёте постоянную ссылку оплаты (qut.kz/p/<slug>) и клеите её QR. Клиент сканирует и платит. На ваш сервер приходит invoice.paid, в нём metadata.slug, то есть известно, какой это пост или дверца. Сервер говорит модулю этого поста выдать импульсы или включить реле дверцы. Если у автомата есть экран, удобнее схема с новым счётом на каждую продажу: Оплата в вендинговом автомате без терминала.
Qut Pay не продаёт и не устанавливает автоматы, контроллеры и модули. «Железную» часть делаете вы или ваш интегратор.
Какая схема для какого автомата
| Способ управления | Автоматы | Схема |
|---|---|---|
| Есть экран | киоск, фотобудка, зарядная станция, новые кофейные автоматы | Счёт на каждую продажу, QR на экране |
| Импульс (монетоприёмник) | автомойка, пылесос, водомат, массажное кресло, стиральная машина, хватайка | Постоянный QR на каждый пост, импульсный модуль |
| Электрозамок, реле | цветочный автомат, умный холодильник, ячейка хранения, платный туалет, шлагбаум | QR на каждую дверцу, реле |
| Шина MDB | снековые, питьевые, кофейные автоматы | MDB cashless-модуль вызывает API |
| Без «железа» | книжная полка без продавца, магазин на трассе | Один QR, клиент вводит сумму сам |
Полный список автоматов с описанием каждого типа: qut.kz/oplata-kaspi-avtomaty-samoobsluzhivaniya.
Автомойка и водомат: импульс
- В разделе Ссылки кабинета создаёте ссылку на каждый пост:
moika-post-1,moika-post-2. Сумму фиксируете или оставляете клиенту с минимумом и максимумом: Ссылки со свободной суммой. - Печатаете QR и клеите на пост.
- Когда приходит вебхук, сервер находит пост по
invoice.metadata.slugи считает число импульсов:amount / цена одного импульса. - Модуль поста (ESP32 или Raspberry Pi, оптрон или реле) подключается параллельно сигнальному проводу монетоприёмника. Автомат принимает его импульсы как брошенные монеты.
Модуль сам подключается к серверу (MQTT или HTTP-опрос). Поэтому на посту достаточно GSM-модема, постоянный IP не нужен.
Цветочный автомат и ячейки: реле
- Цена постоянная (ячейка хранения, туалет): одна ссылка с фиксированной суммой на каждую дверцу. После оплаты реле этой дверцы включается на несколько секунд.
- Цена меняется (цветы, товары в холодильнике): наклейка ведёт на вашу собственную страницу. Страница показывает цену ячейки и создаёт счёт через
POST /api/v1/invoicesсmetadata: { "cell": 12 }.
Если ячейка пустая, приостановите её ссылку в кабинете кнопкой Остановить.
Магазин без продавца и книжная полка
Создаёте одну ссылку, где клиент сам вводит сумму, и добавляете поле «Комментарий». Каждую оплату видно в кабинете, о ней сообщает Telegram-бот: Ссылки на оплату. Здесь не нужны ни модуль, ни сервер.
Обязательно
- Проверяйте подпись вебхука. Без проверки поддельное «оплачено» запустит пост бесплатно: Безопасность вебхуков.
- Один счёт — один запуск. Вебхук повторяется до 11 раз, обрабатывайте один раз по
invoice.id. - Обрабатывайте позднюю оплату. Если пришло
late: true, выдайте услугу или верните деньги: Поздняя оплата. - Оставьте запасной способ оплаты. Если связь с кассиром Kaspi прервётся, оплата через Kaspi не пойдёт до переподключения: Связь с Kaspi прервалась.
- Ограничения. Число постоянных ссылок зависит от тарифа: Старт — 50, Бизнес — 300, Про — 1 000. Для большего числа автоматов создавайте счета через API со своей страницы. Каждый открытый счёт, даже неоплаченный, входит в месячный лимит тарифа: Какой тариф выбрать.
Частые вопросы
Нужен ли интернет в самом автомате? Связь нужна у модуля или между сервером и автоматом, GSM-модема достаточно. У клиента в телефоне интернет тоже будет.
Клиент на мойке оплатил 300 ₸, как посчитать импульсы? Сервер делит пришедшую сумму на цену одного импульса. Если 1 импульс равен 10 ₸, получится 30 импульсов.
Можно ли одним QR пользоваться многим клиентам? Да. Постоянная ссылка не истекает. Каждый раз при сканировании создаётся новый счёт.
Модуль даёт Qut Pay? Нет. Мы только создаём счёт, следим за оплатой и отправляем вебхук. Модуль делаете вы или ваш интегратор, код можно поручить ИИ-агенту: Поручить интеграцию ИИ-агенту.