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

Екі рет қайтарып жіберуден қалай сақтану керек

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

Қысқаша

Қайтару сұрауы refund_unknown (502) немесе refund_pending_unknown (409) қайтарса, бұл «қайтару өтпеді» дегенді білдірмейді — бұл нәтижесі әлі белгісіз дегенді білдіреді. Сол сәтте қайталап жіберсеңіз, бірінші қайтару шын мәнінде өтіп кеткен болса, клиентке ақша екі рет барады. Дұрыс әрекет біреу: қайталамаңыз, GET /api/v1/invoices/{id} арқылы счёттың күйін оқып, нәтижені содан біліңіз.

Неге «белгісіз» деген жауап болады

Қайтару — бірнеше жүйеден өтетін әрекет. Сұрау Kaspi-ге жетіп, ол әрекетті орындап та қойып, бірақ жауабы бізге жетпей қалуы мүмкін. Сол кезде біз сізге адал жауап береміз: нәтижесі белгісіз.

КодHTTPМағынасы
refund_unknown502Kaspi жауап бермеді, қайтару өтті ме, жоқ па — белгісіз
refund_pending_unknown409Алдыңғы қайтарудың нәтижесі әлі белгісіз, жаңасын қабылдамаймыз
refund_failed502Kaspi қайтаруды орындамады. Бұл — нақты «өтпеді»
refund_state_conflict409Қайтару күйі күткеннен басқа, күйді қайта оқу керек

refund_failed пен refund_unknown арасындағы айырмашылық осы мақаланың негізі. Біріншісі — нақты сәтсіздік, оны түзетіп қайталауға болады. Екіншісі — белгісіздік, оны қайталауға болмайды.

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

Дұрыс әрекет реті

  1. Қайталамаңыз. Автоматты қайталау логикаңыз болса, қайтару сұрауын одан алып тастаңыз.
  2. Біраз күтіңіз — бірнеше секунд.
  3. GET /api/v1/invoices/{id} жіберіңіз. Жауапта счёттың күйі және оның қайтарулары болады.
  4. Күйге қарап шешіңіз:
Счёттың күйіНені білдіредіНе істеу керек
refundedТолық қайтарылғанБітті. Қайталамаңыз
partially_refundedБір бөлігі қайтарылғанҚайтарылған соманы есептеп, жеткіліксіз болса ғана айырмасын жіберіңіз
paidҚайтару өтпегенЕнді ғана қайталауға болады
  1. Нәтижені өз журналыңызға жазыңыз — келесі жолы қайта сұрамау үшін.

Егер бірнеше рет сұрағанда да күй анық болмай тұрса, күте тұрыңыз және қолдауға жазыңыз. Бұл жағдайда «бір рет қана қайталап көрейін» деген қауіпті.

Webhook арқылы да біле аласыз

Қайтару әрекетінің нәтижесі оқиға түрінде де келеді: refund.done, refund.failed, refund.unknown, ал счёттың күйі өзгергенде invoice.refunded немесе invoice.partially_refunded.

Яғни refund_unknown алған соң екі жол бар: күйді өзіңіз сұрау немесе оқиғаны күту. Ең сенімдісі — екеуін қатар жүргізу, бірақ екеуінің де нәтижесін бір орында, идемпотентті түрде өңдеу.

Идемпоттылық

Екі рет қайтарудан қорғайтын басты нәрсе — қайталанбайтындықты өз жағыңызда қамтамасыз ету.

Ішінара қайтару есебі

Ішінара қайтару кезінде санақ адасу оңай. Ереже қарапайым: қайтарылған сомалардың қосындысы төленген сомадан аспауы керек. Артық жіберсеңіз invalid_refund_amount (422) аласыз — бұл жақсы, бірақ оған сүйенбеңіз, өзіңіз есептеңіз.

Мысалы: 10 000 ₸ төленген счёт. 3 000 ₸ қайтардыңыз — счёт partially_refunded болады, қалғаны 7 000 ₸. Екінші рет 3 000 ₸ жіберсеңіз, ол бірінші қайтаруды қайталау емес, жаңа қайтару: барлығы 6 000 ₸ болады. Сондықтан «қайталап жіберейін» деген ой ішінара қайтаруда ең қауіпті.

Есепті әрқашан GET /api/v1/invoices/{id} жауабындағы қайтарулар тізімінен жүргізіңіз, өз болжамыңызбен емес.

Журнал нені жазуы керек

Даулы жағдайда сізді осы құтқарады.

Кілттің өзін журналға жазбаңыз. Тақырыптарды тіркегенде X-API-Key мәнін сүзіп тастаңыз.

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

refund_unknown алдым, күйі paid болып тұр. Қайталауға бола ма? Иә. Күй paid болса, қайтару өтпеген, қайталауға болады.

refund_pending_unknown қанша тұрады? Алдыңғы қайтарудың тағдыры анықталғанша. Бірнеше секунд күтіп, счёттың күйін қайта оқыңыз.

Екі рет қайтарып жіберсем, кері қайтаруға бола ма? Жоқ, қайтаруды «болдырмау» деген әрекет жоқ. Клиентпен тікелей сөйлесіп, артық сомадан жаңа счёт шығару керек болады.

Қайтарудың идемпоттылық кілті бар ма? Счёт жасауда Idempotency-Key тақырыбы бар. Қайтаруда қорғаныс басқаша жұмыс істейді: алдыңғы қайтарудың нәтижесі белгісіз болса, жаңасы қабылданбайды (refund_pending_unknown). Өз жағыңыздағы журнал мен құлып — бәрібір міндетті.

Қайтару ақшасы қайдан алынады? Kaspi шотыңыздан. Ақша бізде тұрмайды: Ақша қашан және қайда түседі.

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

Төлем баяу расталады — неге және не істеу керекКлиент төледі, бірақ счёт бірден paid болмайды. Мұнда тексеру жиілігі жасына қарай қалай өзгеретіні, іс жүзіндегі уақыт және кідіріске сезімтал сценарийде не істеу керегі жазылған.Webhook келмей жатыр — себебін қалай табу керекСчёт төленді, бірақ сіздің серверіңізге хабарлама жетпеді. Диагностиканы қай жерден бастау керек, ең жиі кездесетін себеп қайсы және оны бір сынаумен қалай анықтауға болады.Ақша қашан және қайда түседіКлиент төлеген сәтте ақша тіке сіздің Kaspi Pay шотыңызға түседі — бізде ұсталмайды. Қызмет ақысы төлем сомасынан емес, айлық жазылым. Есеп айырысу мен сверка қалай жүреді.API кілт сыртқа шығып кетті — шұғыл не істеу керекКілт репозиторийге, чатқа немесе бөтен қолға түссе, бірінші минутта не істеу керек: жою, жаңасын жасау, соңғы счёттарды тексеру. Кілтпен не істеуге болатыны және алдын алу ережелері.

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

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