# QR «кейінірек көріңіз» деп тұр

> Клиент QR-ды скандағанда қате хабар шықса, көбіне сканерлеу терезесі өтіп кеткен. Терезені Kaspi белгілейді, оны expiresAt өрісінен алыңыз. Басылған QR мен экрандағы QR айырмашылығы.

## Қысқаша

Көп жағдайда мұның себебі бір: **QR-дың сканерлеу терезесі өтіп кеткен**. Әр QR нақты бір счётқа жасалады және қысқа уақыт қана жарамды — шамамен үш минут. Шешімі: **жаңа счёт жасап, жаңа QR көрсету**. Ескі QR-ды жаңарту, ұзарту немесе қайта тірілту мүмкін емес — терезені Kaspi белгілейді, біз оған әсер ете алмаймыз.

## Неге бұлай

QR — тұрақты «дүкеннің QR-ы» емес, нақты бір счётқа жасалған уақытша код. Счёт жасағандағы жауапта `qrUrl`, `qrImageUrl`, `payUrl`, `deepLink` және **`expiresAt`** келеді. Соңғысы — осы QR қашанға дейін жарамды екенін көрсететін өріс.

Терезе өтіп кеткеннен кейін QR-ды скандаған клиент төлем экранын көрмейді: оның орнына «кейінірек көріңіз» немесе соған ұқсас хабар шығады. Бұл клиенттің Kaspi қосымшасының ақауы емес және сіздің баптауыңыздың қатесі де емес.

**Уақытты кодта тұрақты сан қылып жазбаңыз.** Kaspi терезені өзгертуі мүмкін. `expiresAt` өрісін оқып, таймерді содан құрыңыз — сонда кодыңыз өзі бейімделеді.

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

| Не көріп тұрсыз | Ықтимал себебі | Не істеу керек |
|---|---|---|
| Клиент скандады, «кейінірек көріңіз» шықты | Терезе өтіп кеткен | Жаңа счёт жасаңыз |
| QR экранда ұзақ тұрған, содан кейін ғана скандалды | Сол себеп | QR-ды клиент дайын болғанда көрсетіңіз |
| Басылып қабырғада ілулі QR істемей қалды | Счёт QR-ы басуға арналмаған | Төлем сілтемесін қолданыңыз |
| Счёт әлі `pending`, бірақ QR істемейді | Терезе біткен, счёт әлі жабылмаған | Жаңа счёт жасап, ескісін жабыңыз |
| QR мүлде ашылмайды, сурет бос | Счёт жасалмаған, қате қайтарылған | API жауабындағы қате кодын қараңыз |
| Sandbox-та QR нақты төлем қабылдамайды | Тест режимі | [Клиентке төлем келмей жатыр](/kb/payment-not-arriving) |

## Не істеу керек

1. Ескі счётты `POST /api/v1/invoices/{id}/cancel` арқылы жабасыз — сонда клиент кейін оны кездейсоқ төлеп қоймайды
2. Сол сомамен жаңа счёт жасайсыз
3. Жаңа `qrImageUrl` немесе `payUrl` мекенжайын клиентке көрсетесіз

Клиент кассада тұрса, бұл бірнеше секундтық жұмыс. Ыңғайлы болу үшін кассаның экранында «QR-ды жаңарту» батырмасын қойыңыз: ол жаңа счёт жасап, жаңа кодты шығарсын.

## Басылған QR мен экрандағы QR

Бұл екеуін шатастыру — жиі кездесетін қате.

| | Счёттың QR-ы | Төлем сілтемесі |
|---|---|---|
| Не үшін | Нақты бір төлем, нақты сома | Тұрақты мекенжай, қайта-қайта қолдануға |
| Жарамдылығы | Қысқа терезе, `expiresAt` | Сіз тоқтатқанша жұмыс істейді |
| Басуға жарай ма | Жоқ | Иә |
| Сомасы | Счёт жасағанда белгіленеді | Тұрақты немесе ашық сомалы |

Егер сізге қабырғаға ілетін, мәзірге басатын немесе стикерге шығаратын тұрақты QR керек болса, **төлем сілтемесін** қолданыңыз: `qut.kz/p/<slug>`. Сілтеменің QR-ы ескірмейді, өйткені ол счётқа емес, сілтеменің өзіне сілтейді — клиент скандаған сәтте счёт жаңадан жасалады. Ашық сомалы сілтеме де болады: соманы клиент өзі енгізеді.

Экрандағы динамикалық QR офлайн нүктеде дұрыс жұмыс істейді: кассир соманы енгізеді, экранда QR шығады, клиент бірден скандайды.

## Терезеге тап болмау үшін

- **QR-ды соңғы сәтте жасаңыз.** Тапсырыс беттегі формаға кіргенде емес, клиент «Төлеу» батырмасын басқанда счёт жасаңыз.
- **Экранда таймер көрсетіңіз.** `expiresAt` өрісінен қанша уақыт қалғанын есептеп, клиентке көрсетіңіз.
- **Терезе біткенде батырма шығарыңыз.** «QR ескірді, жаңасын жасау» — клиент өзі басады.
- **Клиент жақын жерде болмаса, `phone` счётын таңдаңыз.** Телефонға счёт ұзағырақ тұрады, клиент хабарламаны кейін ашып төлей алады.
- **Электрондық поштамен немесе мессенджермен QR-дың суретін жібермеңіз.** Хат ашылғанша терезе бітіп қалады — оның орнына төлем сілтемесін жіберіңіз.

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

**QR-дың терезесін ұзартуға бола ма?** Жоқ. Терезені Kaspi белгілейді, біз оны өзгерте алмаймыз.

**Нақты неше минут?** Шамамен үш минут, бірақ дәл мәнді `expiresAt` өрісінен алыңыз. Кодта тұрақты сан жазбаңыз.

**Терезе бітсе, счёт бірден `expired` бола ма?** Міндетті емес: QR-дың сканерлеу терезесі мен счёттың жалпы күйі бір нәрсе емес. Счёт әлі `pending` тұрып, QR істемеуі мүмкін. Толығы: [Счёт pending күйінде тұрып қалды](/kb/invoice-stuck-pending).

**Клиент ескі QR-ды скандап төлеп қойса ше?** Терезеден кейін төлем өтпейді. Егер төлем әйтеуір өтіп кетсе, сізге `invoice.paid` оқиғасы `late: true` белгісімен келеді — қызметті беріңіз немесе ақшаны қайтарыңыз.

**Бір счётқа екі рет QR көрсетуге бола ма?** Иә, `qrImageUrl` сол күйі қалады. Бірақ терезе біткен соң ол да жұмыс істемейді.
