Приём оплаты в боте выглядит просто ровно до момента, когда два клиента заплатили одинаковую сумму в одну минуту. Дальше начинается то, из-за чего сверку обычно и отдают человеку — а зря.
Что не так со сверкой по сумме
Самая частая реализация: пришло поступление, ищем заказ с такой же суммой примерно в это же время. Работает, пока заказов мало.
Ломается она предсказуемо. Две одинаковые суммы подряд — и платёж привязывается не к тому заказу. Клиент доплатил разницу отдельным переводом — и ни один из двух платежей не совпал с суммой. Оплатили вчерашний заказ сегодня — совпадения по времени нет.
Правильно платёж несёт идентификатор заказа и находит его по нему. Тогда совпадение сумм перестаёт что-либо значить.
Идемпотентность обработчика
Платёжные системы присылают уведомление о поступлении не один раз: при сетевой ошибке, таймауте или неоднозначном ответе оно повторяется. Это нормальное поведение, и код обязан быть к нему готов.
Практически это значит: повторное уведомление об уже обработанном платеже не создаёт второй заказ, не меняет статус дважды и не отправляет клиенту второе сообщение. Проверка делается по идентификатору платежа до любых действий, а не после.
Второе требование — проверка подписи уведомления. Обработчик открыт наружу, и без проверки подлинности он принимает всё, что ему прислали.
Неподтверждённые платежи
Отдельный список, о котором обычно вспоминают после запуска: платежи, по которым уведомление не пришло или пришло с ошибкой. Они не должны исчезать. По каждому остаётся запись, и их видно отдельно — иначе первый же сбой на стороне платёжной системы превращается в разбор по скриншотам.
Что нужно с вашей стороны
Договор на приём платежей у Kaspi — оформляет ваша компания на своё юрлицо, подрядчик сделать это за вас не может. Обычно это самый долгий шаг, поэтому начинать стоит с него, а не с обсуждения сценария бота.
Правило возвратов: кто делает, по какому основанию и в какой срок. Логика закладывается сразу — дописывать её потом дороже.
И место, куда складываются заказы: 1С, CRM или таблица на старте.
Сроки
Базовый цикл — от 500 000 ₸ и 3-4 недели: заказ, оплата, привязка, статусы, уведомления. Интеграция с учётной системой и рассрочка считаются отдельно и подключаются после того, как основное заработало на живых заказах.
Как это устроено целиком — на странице Telegram-бот с оплатой Kaspi.
Смотрите также: разработка Telegram-ботов, конструктор или разработка, бот с оплатой Kaspi, Telegram Mini App, платный доступ в канал.