Қысқаша
Жазылым — бұл счётты кестеге сай автоматты шығару. Ақша клиенттің шотынан өздігінен алынбайды: әр төлемді клиент Kaspi-де өзі растайды. Сондықтан «жазылым істемей жатыр» дегеннің екі мағынасы бар — счёт мүлде шықпады ма, әлде счёт шықты, бірақ клиент төлемеді ме. Алдымен lastRunStatus пен lastError өрістерін оқыңыз: жауап әдетте сол екеуінде.
Симптом → себеп → шешім
| Симптом | Себебі | Шешімі |
|---|---|---|
| Счёт мүлде шықпады | Жазылым paused немесе closed | Күйін қараңыз, қажет болса resume жасаңыз |
| Уақыты келді, счёт жоқ | Келесі кезек басқа уақытқа белгіленген | Келесі кезек өрісін тексеріңіз |
| Счёт кешігіп шықты | Қайталау сатысы жүріп жатыр | retryDelaysMin мәндерін қараңыз |
| Бір кезек мүлде өткізіліп жіберілді | misfirePolicy: skip | Саясатты run_once етіп қойыңыз |
lastError Kaspi байланысын көрсетеді | Кассир сессиясы үзілген | Қайта байланыстырыңыз: Кассир қосылмай жатыр |
lastError тариф лимитін көрсетеді | Айлық лимит бітті | Лимитке жеттім |
| Счёттар шығып жатыр, ақша жоқ | Клиенттер төлемей жатыр | Бұл қате емес, төлем клиенттің қолында |
Алдымен нені оқу керек
Жазылымның өзінде диагностикаға арналған үш өріс бар:
| Өріс | Не көрсетеді |
|---|---|
lastRunStatus | Соңғы кезектің нәтижесі |
lastError | Сәтсіз болса, нақты қате коды |
failedRuns | Қатарынан сәтсіз болған кезектер саны |
lastError ішіндегі код қалған бәрін айтып береді. Мысалы kaspi_session_expired — кассир мәселесі, tariff_limit_reached — тариф мәселесі, invalid_phone — клиент деректері.
Алты тексеру
1. Жазылымның күйі
Үш күй бар: active, paused, closed.
paused— уақытша тоқтатылған. Кезектер жүрмейді.POST /subscriptions/{id}/resumeарқылы қайта қосасыз.closed— аяқталған немесе тоқтатылған. Мұны қайта қосуға болмайды, жаңа жазылым жасайсыз (subscription_closed).
Жазылым өздігінен closed болуы мүмкін: ең көп орындалу саны бітсе.
2. Келесі кезектің уақыты
Кестеде екі параметр бар: аралық (day, week, month) және кратность every. Мысалы month + every: 2 — екі айда бір рет.
Жиі кездесетін шатасу: жазылым жасалған сәтте бірден счёт шығады деп күту. Кесте бірінші кезектің уақытынан басталады, ол бүгін болмауы мүмкін. Келесі кезек уақытын жазылым карточкасынан немесе GET /subscriptions/{id} жауабынан қараңыз.
3. Қайталау сатысы
Кезек сәтсіз болса, жазылым бірден тоқтамайды — қайталау сатысы бойынша тағы тырысады. Әдепкі мәні retryDelaysMin: [15, 60, 360] минут: 15 минуттан кейін, сосын бір сағаттан, сосын алты сағаттан кейін. Ең көбі 5 мән қоюға болады.
Саты біткенше счёт шықпағандай көрінеді. Сол уақытта lastError толып тұрады — себебін содан оқыңыз.
Саты аяқталғанда сол кезек тасталады, бірақ кесте жалғасады: келесі жоспарлы кезек өз уақытында жүреді. failedRuns санауышы өседі.
4. Өткізіп алу саясаты
Кезек уақыты келгенде жүйе қандай да бір себеппен оны өткізіп алса, misfirePolicy не істеу керегін шешеді:
| Мән | Не болады |
|---|---|
run_once (әдепкі) | Өткізіп алынған кезек бір рет кейін орындалады |
skip | Өткізіп алынған кезек мүлде орындалмайды |
misfireAfterMin — қанша минуттан кейін кезек «өткізіп алынды» деп саналады, әдепкі мәні 1440 (бір тәулік).
Егер сізде skip қойылған болса, өткізіп алынған счёт мүлде шықпайды — бұл қате емес, сіз солай бапталған.
Өткізіп алынғанды қолмен жіберу керек болса: POST /subscriptions/{id}/resume денесінде { "catchUp": true }.
5. Кассир белсенді ме
Жазылым қай кассир арқылы жасалғанын есте сақтайды. Сол кассирдің Kaspi байланысы үзілген болса, кезек счёт жасай алмайды.
Бұл жиі кездесетін жағдай: кассир нөмірімен біреу Kaspi Pay қосымшасына кіреді, сессия үзіледі, ал жазылым тыныш тұрып, lastError ішіне қате жазып отырады. Тексеру: кабинет → Kaspi бөлімінде байланыс белсенді ме. Толығы: Кассир қосылмай жатыр.
6. Тариф лимиті
Айлық лимит біткенде жазылым да жаңа счёт жасай алмайды — ол кәдімгі счёт сияқты есептеледі. lastError ішінде tariff_limit_reached тұрады.
Жазылымдар көп болса, олардың айлық көлемін тариф таңдаған кезде алдын ала есептеңіз: Қай тарифті таңдау керек.
Жиі шатасатын нәрсе
Жазылым клиенттің шотынан ақшаны өзі алмайды. Ол тек счёт шығарады, клиент оны Kaspi-де көреді де, төлеуді өзі растайды. Сондықтан:
- Счёт шығып, клиент төлемесе — жазылым дұрыс жұмыс істеп тұр
- Төлемеген клиентті қайталау сатысы құтқармайды: саты счёт жасалмаған жағдайға арналған, төленбеген жағдайға емес
- Төленбеген жазылым үшін өз жағыңыздан еске салу керек
Толығы: Жазылымдық бизнеске.
Жиі қойылатын сұрақтар
Жазылымды тоқтатсам, ашық счёттар жойыла ма? Жоқ. Бұрын шыққан счёттар өз бетінше өмір сүреді: төленеді, болдырылады немесе мерзімі өтеді.
Қайталау сатысын өзгертуге бола ма? Иә, retryDelaysMin өрісі арқылы, ең көбі 5 мән. Әдепкісі [15, 60, 360] минут.
Өткізіп алынған кезекті қолмен жіберуге бола ма? Иә: POST /subscriptions/{id}/resume денесінде { "catchUp": true }.
closed жазылымды қайта қосуға бола ма? Жоқ, subscription_closed қатесі келеді. Жаңа жазылым жасаңыз.
Жазылым қай кассир арқылы жүретінін ауыстыруға бола ма? Жазылым жасалған кездегі кассирді есте сақтайды. Кассир ауысатын болса, жаңа жазылым жасаған дұрыс.
Барлық өрістердің толық сипаттамасы қайда? Жазылым API бетінде.