Почему ручная сверка не работает
Обычный путь выглядит так: вы отправили реквизиты или ссылку, клиент пишет «оплатил» и присылает скриншот, вы открываете Kaspi Pay и ищете платёж в истории. Пока заказов пять в день, это терпимо. Дальше начинаются проблемы:
- Платёж не связан с заказом. В истории видны сумма и время. Если два клиента заплатили по 5 000 ₸ за десять минут, кто из них за какой заказ, приходится угадывать.
- Скриншот ничего не доказывает. Это картинка: её можно подделать или прислать старую. Проверка по-прежнему одна: найти деньги в Kaspi Pay.
- Сверять некому. Владелец в дороге, администратор занят клиентом, а заказ ждёт подтверждения. Клиент ждёт тоже.
- Сайт и CRM не знают об оплате. Статус заказа меняют руками, и иногда его забывают поменять.
Как узнавать об оплате автоматически
Нужно, чтобы каждый платёж был привязан к конкретному счёту и чтобы о его оплате сообщала система, а не клиент. Для этого счёт выставляется через сервис, подключённый к вашей кассе Kaspi Pay: счёт на номер, ссылка на оплату или QR. Сервис знает, какой счёт за какой заказ, и следит за его статусом.
В Telegram: «Оплачено» через несколько секунд
Подключите бота в кабинете Aitole. Как только клиент оплатил, приходит сообщение:
- сумма, например «Оплачено 4 990 ₸»;
- касса и способ: счёт на номер или QR;
- кто оплатил: имя владельца номера из Kaspi, если это счёт на номер;
- ваш комментарий к счёту, например «Заказ №1024» или «Маникюр 15:00»;
- время оплаты по Алматы.
Такое же сообщение приходит о возврате. Если клиент оплатил по постоянной ссылке, в сообщении видно, по какой.
В кабинете: статус у каждого счёта
У каждого счёта свой статус, и он меняется сам.
| Статус | Что это значит |
|---|---|
| Ждёт оплаты | Счёт у клиента в Kaspi |
| Оплачен | Деньги на вашем счёте Kaspi Pay |
| Отменён | Клиент отклонил счёт или не подтвердил оплату; если Kaspi сообщил причину, она видна |
| Истёк | Клиент не оплатил вовремя |
Возвраты, полные и частичные, видны в той же операции.
В сайте или CRM: вебхук payment.paid
Если счета выставляет ваша система, она узнаёт об оплате сама. Aitole отправляет на ваш адрес запрос с событием payment.paid в течение нескольких секунд после оплаты. В нём id операции, сумма и касса. Тот же id ваша система получила, когда выставляла счёт, поэтому по нему сразу находится заказ.
- Запрос подписан HMAC-SHA256: проверьте подпись, и чужой запрос не отметит заказ оплаченным.
- Если ваш сервер не ответил, доставка повторится через 1 минуту, 5 минут, 30 минут, 2 часа, 6 часов и 24 часа.
- Все события лежат в журнале
GET /v2/events: если вебхук потерялся, их можно дочитать.
Подробно — в статье о Kaspi Pay API и в справочнике API.
Как это работает изнутри
Aitole подключается к вашей кассе Kaspi Pay через отдельный номер сотрудника с ролью «Кассир». Эта роль выставляет счета и видит их статусы, но выводить деньги не умеет. Каждые несколько секунд сервис спрашивает у Kaspi статусы открытых счетов. Когда счёт оплачен, Aitole отмечает его, пишет в Telegram и отправляет вебхук.
Деньги идут напрямую на ваш Kaspi Pay, Aitole их не касается. Комиссию за приём Kaspi удерживает сам, по вашему договору.
Когда это не подходит
- Клиент платит переводом на карту или по номеру телефона. Такой перевод не привязан ни к какому счёту, поэтому автоматически связать его с заказом нельзя. Чтобы оплата отмечалась сама, клиент должен платить по вашему счёту, ссылке или QR.
- Нужна онлайн-касса и фискальный чек. Уведомление об оплате не заменяет чек. Как быть с чеком, разобрано в статье про чек при оплате Kaspi.
- Номер кассира нужен вам самим. У Kaspi одна активная сессия на номер. Пока номер подключён к Aitole, входить под ним в приложение Kaspi Pay нельзя, иначе приём встанет до повторного входа по SMS. Поэтому нужен отдельный номер.