Қысқаша
429 келсе, алдымен error кодына қараңыз — екі мүлде басқа жағдай бар.
tariff_limit_reached— тарифіңіздің айлық счёт лимиті бітті. Бұл қалыпты бизнес жағдайы: тарифті көтересіз немесе жаңа айды күтесіз.tariff_daily_burst— тәуліктік қорғаныс іске қосылды. Бұл бизнес лимиті емес, ол сіздің кодыңызда цикл бар деген белгі. Тарифті көтеру бұл жерде дұрыс шешім емес, алдымен кодты тексеру керек.
Sandbox счёттары лимитке кірмейді, сондықтан тексеруді qp_test_… кілтпен жалғастыра беруге болады.
Симптом → себеп → шешім
| Симптом | Қате коды | Себебі | Шешімі |
|---|---|---|---|
| Ай ортасында счёттар тоқтады, көлем қалыпты | tariff_limit_reached | Айлық лимит бітті | Тарифті көтеріңіз немесе жаңа айды күтіңіз |
| Айдың басында, бірнеше минутта тоқтады | tariff_daily_burst | Кодта цикл, қайталанып жіберу | Кодты тоқтатыңыз, себебін табыңыз |
| Бір клиентке ондаған бірдей счёт | tariff_daily_burst | Қайталау логикасы идемпотентсіз | Idempotency-Key қосыңыз |
| Сынақ мерзімінде тез тоқтады | tariff_daily_burst | Сынақта тәулігіне 50 счёт | Sandbox-та сынаңыз |
| 429, бірақ коды басқа | rate_limited | Сұрау жиілігі, лимит емес | Retry-After тақырыбын қараңыз |
Қалай ажырату
Жауаптың денесіндегі error өрісі — жалғыз сенімді белгі. HTTP күйі екеуінде де 429, сондықтан тек күй кодына қарап шешім қабылдауға болмайды.
Кабинеттегі Тариф бөлімінде айлық есептің қай жерде тұрғаны көрінеді. Егер ол лимитке жақын болмаса, ал сізде 429 келіп жатса — бұл тәуліктік қорғаныс.
Айлық есеп күнтізбелік ай бойынша, Алматы уақытымен жүреді. Яғни есеп айдың бірінші күні нөлден басталады, тіркелген күнінен емес.
tariff_limit_reached — айлық лимит
Бұл жоспарлы жағдай: бизнесіңіз өсті, тарифтің лимиті таусылды.
| Тариф | Айына счёт |
|---|---|
| Бастау | 800 |
| Бизнес | 4 000 |
| Про | 15 000 |
| Серіктес | шектеусіз |
Не істеу керек:
- Кабинет → Тариф бөліміне барыңыз, ағымдағы есепті қараңыз.
- Тарифті көтеріңіз. Жаңа лимит бірден күшіне енеді, счёттар қайта жүре бастайды.
- Немесе жаңа айды күтіңіз — есеп нөлге түседі.
- Sandbox-та жұмысты жалғастырыңыз — тест счёттары лимитке кірмейді, интеграцияны дамыту тоқтамайды.
Қай тарифті таңдау керектігі: Қай тарифті таңдау керек, толық анықтама: Тарифтер және лимиттер.
Алдын ала болдырмау: айлық есеп 80 пайызға жеткенде тарифті ауыстыруды жоспарлаңыз. Лимит бітіп қалған сәтте сату тоқтайды, ал ол әдетте ең қолайсыз күні болады.
tariff_daily_burst — тәуліктік қорғаныс
Тәуліктік сан — бизнес лимиті емес. Ол циклге түскен интеграциядан қорғау үшін бар: код қателесіп, бір нәрсені қайта-қайта жіберіп жатқанда счёттар да, Kaspi-ге кететін сұраулар да көбейіп кетпеуі үшін.
| Тариф | Тәуліктік қорғаныс |
|---|---|
| Сынақ | 50 |
| Бастау | 200 |
| Бизнес | 1 500 |
| Про | 5 000 |
Бұл қате келсе, бірінші әрекет — тарифті көтеру емес, кодты тексеру. Себебі көбіне мыналардың бірі:
- Қайталау логикасы шектеусіз. Сұрау сәтсіз болғанда код оны тоқтаусыз қайталайды.
- Webhook өңдеуі жаңа счёт жасайды. Келген оқиғаға жауап ретінде тағы счёт жасалып, шексіз тізбек пайда болады.
- Форма екі рет жіберіледі. Батырма бұғатталмаған, клиент екі-үш рет басады.
- Фондық тапсырма қабаттасып кеткен. Бұрынғысы бітпей тұрып, жаңасы қосылған.
- Тест скрипті өндіріс кілтімен жүріп кеткен.
Не істеу керек:
- Интеграцияны тоқтатыңыз. Цикл жүріп тұрса, әр минут сайын қоқыс счёт көбейеді.
- Соңғы бір сағаттағы счёттарды қараңыз. Кабинеттегі Счёттар бөлімінде бірдей сома мен сипаттама қайталанып тұрса, цикл табылды.
Idempotency-Keyқосыңыз. Сол кілтпен қайталасаңыз жаңа счёт жасалмай, бұрынғысы қайтады. Толығы: Идемпоттылық.- Қоқыс счёттарды болдырмаңыз, әсіресе олар клиенттерге кетіп үлгерген болса.
- Қайталауды шектеңіз: ең көбі 3-5 әрекет, өсіп отыратын кідіріспен.
Счёттар қосарланып жатса, шұғыл әрекеттер бөлек сипатталған: Счёттар қосарланып жатыр.
Лимит пен сұрау жиілігін шатастырмаңыз
Үшінші түрлі 429 бар — rate_limited немесе request_rate_limited. Бұл счёт санына емес, сұрау жиілігіне қатысты: тым жиі сұрап жатырсыз. Мұнда Retry-After тақырыбын оқып, көрсетілген уақыттан кейін қайталаңыз. Толығы: Сұрау жиілігінің шектеулері.
| Код | Не туралы | Бірінші әрекет |
|---|---|---|
tariff_limit_reached | Айлық счёт саны | Тарифті көтеру |
tariff_daily_burst | Тәуліктегі счёт саны | Кодты тексеру |
rate_limited | Сұрау жиілігі | Retry-After бойынша күту |
tariff_inactive | Тариф төленбеген немесе сынақ бітті | Кабинет → Тариф |
Жиі қойылатын сұрақтар
Тарифті көтерсем, тәуліктік қорғаныс та көтеріле ме? Иә, әр тарифтің өз тәуліктік саны бар. Бірақ tariff_daily_burst келген кезде тарифті көтеру — себепті емес, салдарды жасыру.
Sandbox счёттары лимитке кіре ме? Жоқ. qp_test_… кілтпен жасалған счёттар айлық лимитке де, тәуліктік қорғанысқа да әсер етпейді. Сондықтан интеграцияны сынау лимитті жеп қоймайды.
Лимитке жеткен кезде бұрынғы счёттарға не болады? Ештеңе. Ашық счёттар төлене береді, webhook-тар келе береді, қайтару істейді. Шектелетіні — тек жаңа счёт жасау.
Айлық есеп қашан нөлге түседі? Күнтізбелік айдың басында, Алматы уақытымен. Тіркелген күніңізден емес.
Сынақ мерзімінде лимит қандай? 7 күн, тәулігіне 50 счёт. Сынақ бірінші нақты (live) счёттан басталады, тіркелген күннен емес. Sandbox сынақты бастамайды: Сынақ мерзімі.
Болдырылған және мерзімі өткен счёттар лимитке кіре ме? Есеп жасалған счёттар бойынша жүреді. Сондықтан циклге түскен интеграция лимитті ешкім төлемесе де жеп қояды — бұл тағы бір себеп, неге идемпоттылық керек.