Kaspi Pay для Telegram-бота: автоматизация оплаты через webhook за 1 час
Как подключить Kaspi Pay webhook к Telegram-боту через AiPay API: пошаговая инструкция с кодом на Python. Автоматическое подтверждение оплаты без ручной проверки.
Клиент заплатил в 2 ночи. Товар получил утром. Он уже написал в поддержку
Представьте: ваш Telegram-бот продаёт онлайн-курс. Клиент решает купить в 2:17 ночи — в Казахстане это обычная история, особенно у аудитории 25–35 лет. Он переводит деньги через Kaspi, получает сообщение «Оплата получена, ожидайте подтверждения» и ложится спать.
Утром — ни курса, ни доступа. Он пишет в поддержку. Вы просыпаетесь, видите десять непрочитанных, вручную проверяете выписку, отправляете доступ. Клиент уже раздражён. Вы уже устали — и рабочий день ещё не начался.
Это не баг вашего бота. Это архитектурная проблема: Kaspi Pay не даёт публичного webhook API. Нет события «платёж прошёл» — нет автоматики. Каждый платёж требует ручной проверки или самописных костылей вроде парсинга SMS или email-уведомлений.
AiPay закрывает именно этот пробел. Ниже — как это работает и как подключить за один час.
Почему Kaspi Pay и Telegram-бот — сложная пара без middleware
Kaspi — крупнейшая платёжная платформа Казахстана: 14,7 миллиона активных пользователей в месяц, 737 000 активных торговцев, 75% рынка цифровых платежей страны. Игнорировать её невозможно: если ваша аудитория в Казахстане, Kaspi — это не один из вариантов, это основной способ оплаты.
Telegram-боты в Казахстане переживают настоящий бум. Боты для доставки еды, продажи цифровых продуктов, подписок, инфобизнеса — всё это строится на Telegram, потому что аудитория там уже есть, а барьер входа низкий.
Проблема в стыке этих двух инструментов.
Стандартный сценарий Kaspi Pay для бизнеса выглядит так: клиент сканирует QR-код или переводит по номеру телефона, деньги приходят, менеджер видит уведомление в приложении или на почте. Для офлайн-магазина это работает. Для Telegram-бота, который должен реагировать мгновенно — нет.
Kaspi не предоставляет публичный REST API с webhook-событиями для внешних разработчиков. Это означает, что ваш бот не может напрямую подписаться на событие «платёж по счёту #12345 прошёл». Разработчики обходят это по-разному:
- Ручная проверка выписки (не масштабируется)
- Парсинг email/SMS-уведомлений от Kaspi (хрупко, ломается при смене формата)
- Периодический polling через неофициальные методы (нарушает ToS, нестабильно)
Ни один из этих подходов не подходит для продакшена с реальной нагрузкой.
Как AiPay решает задачу: полный поток за 5 шагов
AiPay — это middleware-слой между вашим Telegram-ботом и Kaspi Pay. Он берёт на себя всё взаимодействие с Kaspi и возвращает вашему боту чистые webhook-события.
Поток выглядит так:
- Клиент в боте нажимает «Оплатить»
- Ваш бот делает POST-запрос к AiPay API с номером телефона клиента и суммой
- AiPay создаёт счёт в Kaspi Pay — клиент получает push-уведомление в приложении Kaspi
- Клиент нажимает одну кнопку в Kaspi и платит — не выходя из Telegram-сессии
- AiPay получает подтверждение от Kaspi и немедленно стреляет webhook на ваш эндпоинт
- Ваш бот получает webhook, проверяет HMAC-подпись и выдаёт клиенту то, за что он заплатил
Весь цикл — от нажатия «Оплатить» до получения товара — занимает 20–40 секунд при нормальной скорости клиента. Ночью, в 2 часа, без единого вашего действия.
Дополнительно AiPay автоматически выписывает фискальный чек — это снимает отдельную головную боль для бизнеса, работающего легально в РК.
Пошаговая инструкция по интеграции
Шаг 1. Регистрация и получение API-ключа
Зайдите на aipay.kz, зарегистрируйтесь и активируйте бесплатный 7-дневный пробный период. После регистрации в личном кабинете вы найдёте:
API_KEY— для аутентификации запросовWEBHOOK_SECRET— для проверки HMAC-подписи входящих webhook-событий- Эндпоинт:
https://api.aipay.kz/v1
Шаг 2. Настройка webhook-эндпоинта в вашем боте
Прежде чем делать первый API-запрос, поднимите эндпоинт, который будет принимать события от AiPay. Это может быть любой публично доступный URL — Flask, FastAPI, Express, что угодно.
Минимальные требования к эндпоинту:
- Принимает POST-запросы
- Возвращает HTTP 200 в течение 5 секунд
- Проверяет HMAC-подпись заголовка
X-AiPay-Signature
Шаг 3. Создание счёта через API
Когда клиент в боте инициирует оплату, ваш бэкенд делает один POST-запрос:
POST https://api.aipay.kz/v1/invoices
Тело запроса:
{
"phone": "77001234567",
"amount": 4900,
"description": "Курс «Python для начинающих» — доступ на 12 месяцев",
"external_id": "order_telegram_98765"
}
external_id — ваш внутренний идентификатор заказа. По нему вы будете матчить входящий webhook с конкретным клиентом в вашей базе.
Шаг 4. Обработка webhook-события
AiPay пришлёт POST на ваш эндпоинт в момент изменения статуса счёта. Возможные статусы: paid, expired, error.
Тело события:
{
"event": "invoice.paid",
"invoice_id": "inv_abc123",
"external_id": "order_telegram_98765",
"amount": 4900,
"paid_at": "2026-03-27T02:17:43Z"
}
Шаг 5. Проверка подписи и выдача товара
Перед тем как что-то выдавать, обязательно проверьте HMAC-подпись. AiPay подписывает каждый webhook-запрос — это защита от поддельных событий.
Алгоритм: HMAC-SHA256(raw_request_body, WEBHOOK_SECRET)
Подпись передаётся в заголовке X-AiPay-Signature. Если подписи совпадают — обрабатываете событие и выдаёте клиенту доступ.
Пример кода на Python
Ниже — минимальная рабочая реализация на Python с использованием httpx для API-запросов и FastAPI для обработки webhook.
import hmac
import hashlib
import httpx
from fastapi import FastAPI, Request, HTTPException
app = FastAPI()
AIPAY_API_KEY = "your_api_key_here"
WEBHOOK_SECRET = "your_webhook_secret_here"
AIPAY_BASE_URL = "https://api.aipay.kz/v1"
async def create_invoice(phone: str, amount: int, external_id: str) -> dict:
"""Создаём счёт в Kaspi Pay через AiPay API."""
async with httpx.AsyncClient() as client:
response = await client.post(
f"{AIPAY_BASE_URL}/invoices",
headers={"Authorization": f"Bearer {AIPAY_API_KEY}"},
json={
"phone": phone,
"amount": amount,
"description": "Оплата через Telegram-бот",
"external_id": external_id,
},
)
response.raise_for_status()
return response.json()
@app.post("/webhook/aipay")
async def handle_aipay_webhook(request: Request):
"""Принимаем и верифицируем webhook-событие от AiPay."""
body = await request.body()
signature = request.headers.get("X-AiPay-Signature", "")
# Проверка HMAC-подписи
expected = hmac.new(
WEBHOOK_SECRET.encode(),
body,
hashlib.sha256
).hexdigest()
if not hmac.compare_digest(expected, signature):
raise HTTPException(status_code=403, detail="Invalid signature")
payload = await request.json()
if payload.get("event") == "invoice.paid":
external_id = payload["external_id"]
# Здесь: найти заказ по external_id и выдать товар/доступ
await fulfill_order(external_id)
return {"status": "ok"}
async def fulfill_order(external_id: str):
"""Выдача товара клиенту — ваша бизнес-логика."""
# Отправить сообщение в Telegram, открыть доступ, и т.д.
pass
Полную документацию API и описание всех параметров смотрите на странице для разработчиков.
Реальные сценарии использования
Цифровые продукты и инфобизнес
Курсы, PDF-гайды, шаблоны, доступ к закрытым каналам — всё, что можно выдать автоматически после оплаты. Это идеальный сценарий для AiPay: бот принимает деньги, webhook подтверждает, бот выдаёт ссылку или открывает доступ. Ноль ручного труда.
Именно так работают боты PulseAI и STIKER.AI — оба уже интегрированы с AiPay и обрабатывают платежи полностью автоматически.
Подписочные модели
Ежемесячные подписки на сервисы, закрытые комьюнити, рассылки. Бот отслеживает дату следующего платежа, напоминает клиенту, принимает оплату и продлевает доступ — всё в рамках одного Telegram-чата.
Доставка еды и локальный бизнес
Боты для заказа еды в Казахстане — отдельная большая история. Клиент формирует заказ прямо в боте, платит через Kaspi одним тапом, кухня получает уведомление. Никакого «позвоните для подтверждения оплаты».
Ночные и выходные заказы
Это отдельное преимущество, которое сложно переоценить. Заказ в 2 ночи в пятницу — не проблема. Webhook приходит немедленно, бот выдаёт товар, клиент доволен. Вы видите это утром в дашборде как уже выполненный заказ.
Попробуйте AiPay бесплатно — 7 дней без ограничений
Если вы строите или уже запустили Telegram-бота с продажами в Казахстане, тестовый период — это час работы вашего разработчика и ноль риска. Подключите, прогоните тестовый платёж, убедитесь что webhook работает. Стоимость после пробного периода — ₸25 000 в месяц за терминал.
Написать нам с вопросами по интеграции →
Часто задаваемые вопросы
Нужно ли клиенту что-то устанавливать или регистрироваться дополнительно?
Нет. Клиент использует то приложение Kaspi, которое у него уже есть. После того как ваш бот создаёт счёт, клиент получает стандартное push-уведомление от Kaspi. Нажимает одну кнопку — платёж прошёл.
Kaspi Pay API — это официальная интеграция?
AiPay работает с Kaspi через официальные партнёрские механизмы. Это не парсинг и не обход систем безопасности — это легальный middleware, который получает события от Kaspi и транслирует их в формате webhook вашему приложению.
Как убедиться, что webhook не поддельный?
AiPay подписывает каждый запрос через HMAC-SHA256 с вашим персональным WEBHOOK_SECRET. Алгоритм проверки показан в примере кода выше. Если подпись не совпадает — запрос нужно отклонить с кодом 403. Это стандартная практика для webhook-безопасности.
Итоги
- Kaspi Pay — обязательный инструмент для бизнеса в Казахстане, но нативного webhook API у него нет
- AiPay добавляет этот слой: POST-запрос создаёт счёт, webhook сообщает о результате
- Интеграция занимает около часа при наличии работающего Telegram-бота
- Работает для цифровых продуктов, подписок, доставки еды и любого другого бота с монетизацией
- Автоматическая выдача товара 24/7, включая 2 часа ночи в пятницу
- Фискальные чеки выписываются автоматически
- Пробный период 7 дней, затем ₸25 000/месяц за терминал
Если остались вопросы по интеграции или нужна помощь с архитектурой — напишите нам, разберёмся.
Готовы автоматизировать Kaspi Pay?
Подключитесь за 1 час. 7 дней бесплатно.
Попробовать AiPay бесплатно