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

Webhook келмей жатыр — себебін қалай табу керек

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

Қысқаша

Алдымен кабинеттегі webhook журналын ашыңыз: біз хабарламаны жібердік пе, сервер қандай жауап қайтарды — бәрі сонда жазулы. Журналда «жіберілді, бірақ жауап жоқ» немесе 401/403 тұрса, мәселе сіздің адресіңізде. Ең жиі кездесетін себеп — webhook адресі авторизациямен жабық: сайтыңыздың басты паролі, IP тізімі, Cloudflare қорғанысы немесе VPN бізді ішке кіргізбейді. Біз кәдімгі сыртқы клиент сияқты келеміз, ешқандай логин-пароль жібермейміз.

Симптом бойынша

Не көріп тұрсызЫқтимал себебіНе істеу керек
Журналда бірде-бір жазба жоқАдрес мүлде қосылмаған немесе бұл оқиға таңдалмағанКабинет → Интеграциялар → адресті және оқиға тізімін тексеріңіз
Журналда «жіберілді», жауап 401/403Адрес авторизациямен жабықДәл сол жолды ашық қалдырыңыз
Жауап 404Адрес жолы қате немесе маршрут тіркелмегенТолық адресті браузерге емес, curl-мен тексеріңіз
Жауап 301/302Басқа жерге қайта бағыттау — біз ұстамаймызСоңғы адресті webhook ретінде жазыңыз
Жауап 500Сіздің өңдеушіңіз құлап жатырӨз журналыңызды қараңыз
Жауап уақыты біткен (timeout)Өңдеу тым ұзақАлдымен 200 қайтарыңыз, жұмысты кейін істеңіз
Хабарлама келеді, бірақ код оны қабылдамайдыҚолтаңба сәйкес келмейдіТөмендегі 5-қадамды қараңыз

Диагностика реті

Ретті бұзбаңыз — әр қадам келесісін мағыналы етеді.

1. Кабинеттегі журналды қараңыз. Интеграциялар бөлімінде әр жіберілім жазылады: оқиға түрі, уақыты, серверіңіздің HTTP жауабы. Егер жазба мүлде болмаса, біз жібермегенбіз — демек счёттың күйі әлі өзгермеген немесе адрес қосылмаған. Егер жазба бар да, жауап сәтсіз болса, мәселе сіздің жағыңызда.

2. Адрес жария қолжетімді ме? Бұл ең жиі кездесетін себеп. Webhook адресі интернеттен кез келген клиент үшін ашық болуы керек. Бізде сіздің паролііңіз, токеніңіз, VPN-іңіз жоқ.

Тексеру: өзіңіздің серверіңізден емес, сырттан сұрау жіберіңіз.

curl -i -X POST https://sizdin-domen.kz/webhooks/qutpay -d '{}'

401, 403, 302 немесе байланыс мүлде орнамаса — біз де дәл солай кіре алмаймыз. Жиі кездесетін кедергілер: сайтқа қойылған басты пароль (basic auth), әкімшілік панельдің қорғанысы, WAF немесе Cloudflare ережесі, IP бойынша ақ тізім, staging орта.

Шешімі — бүкіл сайтты ашу емес, тек осы бір жолды авторизациясыз қалдыру. Қауіпсіздікті қолтаңба тексеруі қамтамасыз етеді, ол пароль орнына жүреді.

3. https па және нақты домен бе? Продакшенде тек https қабылданады, домен нақты болуы керек. IP адрес, уақытша туннель адрестері (ngrok сияқты) қабылданбайды. Сертификат жарамды болсын: мерзімі өткен немесе өзі қол қойған сертификат байланысты үзеді.

4. Қайта бағыттауды алып тастаңыз. Біз 307 және 308 бағыттауларын тек сол адрестің өзіне ұстаймыз — мысалы httphttps немесе соңындағы қиғаш сызық. Басқа домен немесе басқа жолға апаратын бағыттау ұсталмайды. Сондықтан webhook ретінде соңғы, нақты адресті жазыңыз: www болса www-мен, қиғаш сызық керек болса сызығымен.

5. Қолтаңба тексеруін тексеріңіз. Кейде хабарлама жетеді, бірақ өңдеуші оны қабылдамай тастайды. Қолтаңба HMAC-SHA256(secret, timestamp + "." + rawBody) түрінде есептеледі, hex, sha256= префиксімен. Ең жиі қате — денені JSON-ға айналдырып, сосын қайта мәтінге түрлендіріп тексеру. Өзгертілмеген байт күйіндегі денені қолданыңыз.

6. Сервер 2xx қайтарады ма? Біз 2xx-тен басқасының бәрін сәтсіз деп есептейміз. Өңдеу ұзаққа созылатын болса, алдымен 200 қайтарып, жұмысты фонда істеңіз.

Қайталау

2xx емес жауап берсеңіз немесе жауап мүлде келмесе, біз хабарламаны 11 рет қайталаймыз. Аралық 10 секундтан басталып, бір сағатқа дейін өседі. Яғни серверіңіз бір сағатқа құласа да, қалпына келгенде хабарлама жетеді — қолмен ештеңе істеудің қажеті жоқ.

Бірақ осы себепті өңдеуіңіз идемпотентті болуы керек: бір оқиға бірнеше рет келуі мүмкін. (invoice.id, status) жұбын кілт ретінде алып, бұрын өңдегеніңізді екінші рет өңдемеңіз.

webhook.site арқылы сынау

Мәселе бізде ме, сізде ме — екі минутта анықтауға болады.

  1. webhook.site ашасыз, ол сізге уақытша адрес береді
  2. Кабинет → Интеграциялар → сол адресті webhook ретінде қосасыз
  3. Sandbox режимінде счёт жасап, төлемді симуляциялайсыз
  4. webhook.site бетінде хабарлама пайда болды ма?

Пайда болса — біз дұрыс жіберіп тұрмыз, мәселе сіздің серверіңізде: адрес жабық, маршрут жоқ немесе код қате. Пайда болмаса — адрес тізімін, оқиға таңдауын тексеріп, қолдауға жазыңыз.

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

Жиі жіберілетін қателер

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

Webhook орнына күйді өзім сұрасам бола ма? Болады, бірақ екеуін қатар жүргізген дұрыс: webhook жылдам, сұрау сенімді.

Хабарлама бірнеше рет келді — бұл қате ме? Жоқ, бұл қалыпты. Қайталау механизмі осылай жұмыс істейді. Өңдеуіңіз идемпотентті болса, зияны жоқ.

Құпияны жоғалтып алдым, көру мүмкін бе? Жоқ, құпия бір рет қана көрсетіледі. Кабинеттен жаңасын жасаңыз да, кодтағы мәнді жаңартыңыз.

Сервер уақытша құлап тұрса, төлемдер жоғала ма? Жоқ. Қайталау бір сағатқа дейін созылады, ал счёттардың күйі бізде сақталады — кез келген уақытта API арқылы оқи аласыз.

Webhook қанша уақыт ішінде келеді? Клиент төлегеннен кейін әдетте бес секунд ішінде. Кешігу болса: Счёт pending күйінде тұрып қалды.

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

Клиентке төлем келмей жатырСчёт жасалды, бірақ клиенттің телефонына ештеңе келмеді немесе QR ашылмайды. Ең жиі себебі — тест режимі қосулы қалып қойған. Алты қадамдық тексеру реті.Счёт pending күйінде тұрып қалдыPending — қате емес, қалыпты күй: счёт шығарылған, клиент әлі төлемеген. Қанша тұрады, қашан expired болады, біз оны қалай тексереміз және шынымен қашан алаңдау керек.Счёттар қосарланып жатырБір тапсырысқа бірнеше счёт шығып жатса, алдымен ағынды тоқтату керек: API кілтті жойсаңыз, интеграция сол сәтте тоқтайды. Сосын себебін тауып, идемпоттылық қосасыз.QR «кейінірек көріңіз» деп тұрКлиент QR-ды скандағанда қате хабар шықса, көбіне сканерлеу терезесі өтіп кеткен. Терезені Kaspi белгілейді, оны expiresAt өрісінен алыңыз. Басылған QR мен экрандағы QR айырмашылығы.

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

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