Разбираем варианты онлайн-платежей Kaspi Pay через xpayment: QR, deeplink, платежная ссылка и удаленный счет по номеру телефона.
В xpayment есть два практических способа встроить онлайн-платежи Kaspi Pay в IT-продукт: создать QR/deeplink через платежную ссылку или отправить удаленный платеж по номеру телефона клиента. Оба сценария полезны, но решают разные UX-задачи.
xpayment.kz дает API-слой: ваш продукт создает платеж, xpayment связывает его с Kaspi Pay, а затем отправляет webhook, когда статус меняется. Эта статья нужна не для копирования API-примеров, а для выбора правильного пользовательского пути.
| Ситуация | Что выбрать | Почему |
|---|---|---|
| Покупатель на desktop или ноутбуке | QR | Ему удобно отсканировать QR телефоном |
| Покупатель уже на смартфоне | Deeplink или кнопка оплаты | Сканировать QR с того же телефона неудобно |
| Вы знаете Kaspi-номер клиента | Удаленная оплата по телефону | Клиент получает запрос на оплату в Kaspi |
| CRM выставляет счет постоянному клиенту | Удаленная оплата по телефону | Менеджер или система уже знает номер клиента |
| Telegram-бот продает цифровой товар | Deeplink или телефонный платеж | Зависит от того, собрал ли бот телефон |
| n8n автоматизирует счета | Оба варианта | Link подходит для сообщений, phone payment - для CRM-клиентов |
На странице Kaspi Pay Kaspi описывает несколько способов приема оплаты: мобильный POS с QR для каждой покупки, QR на кассе, удаленную оплату и ссылку для оплаты.
Для IT-интеграции через xpayment эти способы превращаются в две API-модели:
Используйте поток payment link, когда клиент сам открывает оплату. Это правильный выбор для checkout, бота, лендинга, сообщения или любого self-service сценария.
Внутри одного и того же потока вы можете дать пользователю два варианта входа:
Полные API-примеры вынесены в отдельный технический материал: Платёжные ссылки через POST /payments/link.
QR хорошо подходит, когда покупатель видит заказ на большом экране:
Покупатель сканирует QR телефоном, открывает Kaspi и подтверждает платеж.
Deeplink лучше, когда покупатель уже находится на телефоне:
Если пользователь открывает заказ на смартфоне, просить его сканировать QR с того же экрана бессмысленно. В таком сценарии нужна кнопка или ссылка.
Используйте поток удаленной оплаты, когда ваш продукт уже знает номер телефона клиента. Тогда система или менеджер может не ждать, пока клиент сам откроет checkout, а отправить счет прямо в Kaspi Pay.
Kaspi Guide описывает ручной сценарий удаленной оплаты так: кассир или руководитель выбирает удаленную оплату, вводит номер клиента и сумму, затем отправляет счет. Источник: Как выставить счет на оплату удаленно?
Через xpayment эта логика становится API-вызовом: вместо ручного ввода в приложении ваш backend или n8n workflow отправляет запрос автоматически.
Полная реализация вынесена в отдельную статью: Приём удалённых платежей через POST /payments.
Оплата по телефону подходит, когда номер уже есть в системе:
В Kaspi Pay есть ручной сценарий Ссылка для оплаты: ссылку можно скопировать и отправить покупателю или разместить на сайте/в социальных сетях. Kaspi описывает такие сценарии в справке по ссылкам для оплаты: Как сгенерировать ссылку для оплаты?
В xpayment похожая продуктовая идея используется в API-сценарии POST /v1/payments/link: система создает ссылку программно, привязывает ее к вашему merchant_order_id, а результат платежа возвращает через webhook.
| Продукт | Лучший способ | Почему |
|---|---|---|
| Online shop checkout на desktop | QR/payment link | Покупатель сканирует экран телефоном |
| Mobile checkout | Deeplink | Покупатель уже на телефоне |
| Telegram-бот без номера телефона | Deeplink | Бот отправляет кнопку оплаты |
| Telegram-бот с номером телефона | Phone payment | Можно отправить запрос в Kaspi |
| CRM для менеджеров | Phone payment | Номер клиента обычно уже есть |
| Доставка с финальной суммой | Phone payment | Сумма может появиться после сборки заказа |
| SaaS подписка | Phone payment или link | Зависит от того, есть ли номер клиента |
| n8n workflow | Оба | HTTP Request node может вызвать любой endpoint |
Удобное правило такое:
Нельзя менять заказ на оплачен сразу после создания платежа. Создание платежа означает только то, что клиенту показан или отправлен способ оплаты. Завершение подтверждает webhook payment.completed.
Технический разбор webhook-модели вынесен отдельно: Вебхуки: как xpayment уведомляет ваш сервер о платежах.
Если checkout открыт на смартфоне, лучше показывать кнопку оплаты, а не QR.
Если вы отправляете запрос по номеру телефона, пользователь должен понимать, зачем он оставляет номер и что получит запрос на оплату.
merchant_order_idБез внутреннего ID заказа сложнее связать платеж, webhook и заказ в вашей системе.
Если backend повторит запрос из-за таймаута, можно случайно создать дубль. Для phone payment используйте X-Idempotency-Key.
Скриншот не подтверждает платеж. Подтверждение - это webhook или проверка статуса через API.