Qut Pay Сайт Кабинет Білім базасы Нұсқаулықтар API құжаттамасы ҚАЗРУС
Басты бетБілім базасы → Бизнесіңізге

Мобильді қосымшаға қосу

Жаңартылды: 2026-09-14 · Markdown нұсқасы

Қысқаша

Мобильді қосымша Qut Pay-ге тікелей жүгінбейді. Реті әрқашан төрт буын: қосымша → өз серверіңіз → Qut Pay → Kaspi. Себебі біреу: API кілт тек серверде болуы керек, APK немесе IPA файлдың ішінде емес — жиналған қосымшаны кез келген адам ашып, кілтті шығарып ала алады. Сервер счёт жасап, қосымшаға payUrl немесе deepLink қайтарады, қосымша соны ашады, төлем расталған соң серверге webhook келеді.

Жұмыс схемасы

ҚадамКімНе істейді
1ҚосымшаКлиент «Төлеу» дейді, қосымша өз серверіне сұрау жібереді
2Сіздің серверТапсырысты тексереді, соманы өзі есептейді
3Сіздің серверPOST /api/v1/invoicesX-API-Key осы жерде ғана қолданылады
4Сіздің серверҚосымшаға тек id мен payUrl (немесе deepLink) береді
5ҚосымшаСілтемені ашады — Kaspi қосымшасы ашылады
6КлиентKaspi-де растайды
7Qut PayСіздің серверге invoice.paid жібереді
8Сіздің серверТапсырысты жабады, қосымшаға push немесе күй арқылы хабарлайды

Соманы қосымшадан алмаңыз. Клиент қосымшаның сұрауын өзгертіп, 100 теңге деп жіберуі мүмкін. Сервер соманы тапсырыстың өзінен есептеп шығаруы керек.

API кілт туралы

Бұл осы мақаладағы ең маңызды бөлім.

Қауіпсіздік туралы жалпы: Қосу қауіпсіз бе және сервис қалай құрылған.

Қандай API әдісі қолданылады

Серверде:

POST https://api.qut.kz/api/v1/invoices
X-API-Key: qp_live_…
Idempotency-Key: app-order-8841

{
  "amount": 12900,
  "kind": "qr",
  "description": "Тапсырыс №8841",
  "externalOrderId": "8841",
  "successUrl": "https://menim-app.kz/pay/ok?order=8841",
  "failUrl": "https://menim-app.kz/pay/fail?order=8841",
  "metadata": { "platform": "ios", "user_id": "u_512" }
}

Қосымшаға жауаптың бәрін бермеңіз — тек id мен payUrl (немесе deepLink) жетеді.

Қалғаны: GET /api/v1/invoices/{id} — қосымша қайтып келгенде күйін сұрау, POST /api/v1/invoices/{id}/cancel, POST /api/v1/invoices/{id}/refund.

Клиенттің нөмірін білсеңіз (қосымшада тіркелген болса), kind: "phone" де жарайды: Kaspi-іне push келеді, customer.phone 7XXXXXXXXXX пішімінде, сома бүтін теңге, сипаттама 60 таңба.

payUrl ашылғанда не болады

payUrl сілтемесін қосымшадан ашқанда телефонда Kaspi қосымшасы ашылады да, клиент төлемді сол жерде растайды. Сізге керек екі нәрсе:

1. Клиент қайтып келгенде күйді тексеріңіз. iOS пен Android-та қосымшаға қайта кірген сәтті ұстап (applicationDidBecomeActive, onResume), серверден тапсырыстың күйін сұраңыз. Клиент төлемей де қайтып келуі мүмкін — сондықтан «қайтып келді» деген өздігінен «төледі» дегенді білдірмейді.

2. Ақиқат көзі — webhook. Тапсырысты «төленді» етуді тек серверде, invoice.paid оқиғасы бойынша жасаңыз. Қосымшаның сөзіне сенбеңіз: оны өзгертуге болады.

Екеуін қатар жүргізген дұрыс: webhook — негізгісі, қосымшадағы сұрау — интерфейсті жылдам жаңарту үшін.

successUrl мен failUrl тек http(s) болады. Оларды өз домендеріңізге бағыттап, ол беттерден қосымшаға қайтаратын сілтеме қойған ыңғайлы.

App Store мен Play Market ережесі

Бұл техникалық емес, дүкендік шектеу, бірақ модерациядан өтуіңіз соған байланысты.

Не сатыладыСыртқы төлем
Цифрлық тауар: жазылым, премиум қолжетімділік, ойын монетасы, қосымша ішіндегі мазмұнРұқсат емес — дүкеннің өз төлемін қолдану керек
Нақты тауар: киім, тағам, кітап, дүкеннен сатып алуРұқсат
Жеткізу, курьер, таксиРұқсат
Қызмет ақысы: жөндеу, консультация, оқу, салонРұқсат
Брондау: үстел, нөмір, билет, уақытРұқсат

Яғни Qut Pay арқылы төлемді нақты тауар мен қызметке қосуға болады, ал қосымшаның ішіндегі цифрлық мазмұнға болмайды. Дүкендердің ережелері өзгеріп отырады — жариялар алдында ағымдағы редакциясын өзіңіз тексеріп алыңыз.

Ерекше ескертулер

Жиі қойылатын сұрақтар

Серверім жоқ, тек қосымша. Қалай болады? Онда алдымен шағын сервер керек — оның бар жұмысы счёт жасау және webhook қабылдау. Бұл бірнеше эндпоинт қана. Сервер болмаса, кілт міндетті түрде қосымшаның ішіне түседі, ал бұл жарамайды.

Кілтті обфускация жасап қойсам ше? Жарамайды. Обфускация кілтті жасырмайды, тек іздеуді қиындатады. Жиналған қосымшаның трафигін көру де жеткілікті.

Қосымшада QR суретін көрсетуім керек пе? Бір телефонда QR-ды сканерлеу ыңғайсыз. payUrl немесе deepLink арқылы Kaspi-ді ашқан дұрыс. QR — басқа адамның телефонынан төлейтін жағдайға.

Клиент төлеп, қосымша жабылып қалса? Ештеңе жоғалмайды. Ақша Kaspi-де өтеді, webhook серверге келеді, тапсырыс жабылады. Клиент қосымшаны қайта ашқанда дайын күйді көреді.

Веб-нұсқасы да бар, екеуіне бір кілт бола ма? Болады, бірақ бөлек кілт жасаған ыңғайлырақ: біреуі шығып кетсе, тек соны жойып, екіншісін тимей қалдырасыз.

Байланысты мақалалар

Интернет-дүкенге Kaspi төлемін қосуСебеттен «төленді» күйіне дейінгі толық схема: счёт, төлем беті, webhook. Tilda, WooCommerce, OpenCart және өзі жазылған сайт үшін кодсыз жол мен API жолы.Telegram ботында тауар сатуБот → сіздің сервер → счёт → клиентке push немесе сілтеме → webhook → тауарды беру. Төленбеген счёттардың жиналуынан қорғану, бірнеше бренд, Python пен Node мысалы.API 401 қайтарады — кілт қабылданбай жатыр401 unauthorized дегені — сұрауыңызда жарамды API кілт жоқ. Себептері, тексеру реті және жұмыс істейтін curl мысалы. Көбіне тақырып атауы немесе Bearer префиксі кінәлі.Webhook келмей жатыр — себебін қалай табу керекСчёт төленді, бірақ сіздің серверіңізге хабарлама жетпеді. Диагностиканы қай жерден бастау керек, ең жиі кездесетін себеп қайсы және оны бір сынаумен қалай анықтауға болады.Қосу қауіпсіз бе және сервис қалай құрылғанСервис Kaspi Pay-дегі шектеулі «Кассир» рөлі арқылы жұмыс істейді: счёт шығарады, күйін көреді, өз счёттары бойынша қайтару жасайды. Ақшаға қол жеткізе алмайды. Нені сақтаймыз және қалай ажыратасыз.

Сұрағыңыз қалды ма? WhatsApp +77788813333 · kazprose@gmail.com
Кабинеттен де жазуға болады: Қолдау.

Qut Pay — тәуелсіз сервис, «Kaspi Bank» АҚ-мен аффилирленбеген. Kaspi және Kaspi Pay — құқық иесінің тауар белгілері.