Қысқаша
Салон мен барбер үшін ең қарапайым жол — кодсыз: әкімші кабинетке кіреді, клиентке счёт шығарады, QR-ды экранда көрсетеді немесе сілтемені WhatsApp-қа жібереді. Бұл толық жеткілікті, ешқандай әзірлеуші керек емес. Ал жазылу жүйеңіз (Altegio сияқты) болса, оны API арқылы қосып, жазылу расталған сәтте депозит счётын автоматты шығаруға болады. Шебер бойынша бөлек есеп керек болса — әр шеберге бөлек API кілт немесе metadata өрісі.
Екі жол — қайсысын таңдау
| Кодсыз | API арқылы | |
|---|---|---|
| Кім істейді | Әкімші қолмен | Жазылу жүйеңіз өздігінен |
| Не керек | Кабинетке кіру ғана | Әзірлеуші, сервер |
| Қашан жарайды | Күніне 30-40 клиентке дейін, депозит сирек | Онлайн жазылу көп, депозит әрдайым |
| Уақыты | Бір счёт — 20 секунд | Бір рет баптайсыз |
Көп салон бірінші жолмен қалады және дұрыс істейді. API-ға өтетін нақты себеп біреу: онлайн жазылу кезінде депозитті адам араласпай алу.
Жұмыс схемасы қадамдап
Депозитпен жұмыс істейтін толық реті:
| Қадам | Кім | Не болады |
|---|---|---|
| 1 | Клиент | Сайттан немесе қосымшадан шеберге жазылады |
| 2 | Жазылу жүйесі | Жазылуды «төлем күтілуде» етеді |
| 3 | Сіздің сервер | POST /api/v1/invoices — депозит сомасына счёт жасайды |
| 4 | Клиент | Сілтемені ашып, Kaspi-де растайды |
| 5 | Qut Pay | Сіздің адреске invoice.paid оқиғасын жібереді |
| 6 | Сіздің сервер | Жазылуды растайды, клиентке хабарлама жібереді |
| 7 | Салонда | Қалған соманы кассада QR арқылы алады |
Егер клиент депозитті 30 минут ішінде төлемесе, жазылуды босатуға болады — оны өзіңіз шешесіз, ол сіздің жүйеңіздің логикасы.
Қандай API әдісі қолданылады
Негізгісі біреу — счёт жасау:
POST https://api.qut.kz/api/v1/invoices
X-API-Key: qp_live_…
Idempotency-Key: booking-48213-deposit
{
"amount": 5000,
"kind": "qr",
"description": "Шаш қию, депозит",
"externalOrderId": "booking-48213",
"customer": { "name": "Айгүл", "phone": "77011234567" },
"metadata": { "master": "aizhan", "service": "haircut", "bookingId": 48213 }
}
Жауапта payUrl (клиентке жіберетін сілтеме), qrImageUrl (экранда көрсететін сурет) және expiresAt келеді.
Idempotency-Key тақырыбын жазылу нөмірінен құраңыз. Сонда жазылу жүйесі бір сұрауды екі рет жіберсе де, екінші счёт жасалмайды — бұрынғысы қайтады.
Клиент Kaspi-де тұрған адам болса, "kind": "phone" қойып, customer.phone бере аласыз: счёт тікелей оның Kaspi қосымшасына келеді, QR көрсетудің қажеті жоқ. Айырмашылығы: QR счёт пен телефонға счёт.
Кодсыз нұсқасы — не істей аласыз
Әзірлеушісіз де мыналардың бәрі бар:
- Кабинеттен қолмен счёт. Сома, сипаттама, клиент нөмірі — 20 секунд.
- Тұрақты төлем сілтемесі. «Депозит 5 000 ₸» деген сілтемені бір рет жасап, оны WhatsApp-та қайта-қайта жібересіз: Төлем сілтемелері.
- Telegram бот.
/invoiceкомандасымен телефоннан счёт шығарасыз,/todayбүгінгі түскен соманы көрсетеді. - Экрандағы QR. Ресепшендегі планшетте счёттың QR-ын ашып қоясыз, клиент сканерлейді.
Толығы: Әзірлеуші жоқ — қалай бастау керек.
Алдын ала депозит
Депозит — жоқ болып қалған клиенттен қорғанудың жалғыз жұмыс істейтін жолы. Бірақ оны дұрыс құру керек:
- Сомасы шағын болсын. Қызметтің 20-30%-ы жеткілікті. Толық соманы алдын ала сұрасаңыз, клиенттің жартысы жазылмай кетеді.
- Шартын алдын ала айтыңыз. «Келмесеңіз депозит қайтарылмайды» немесе «24 сағат бұрын хабарласаңыз қайтарамыз» — қайсысы болса да, төлемге дейін жазылып тұрсын.
- Депозитті қалған сомадан шегеріңіз. Салонда клиенттен қалған соманы ғана алыңыз. Бұл есеп — сіздің жүйеңізде, біздің жағымызда екі счёт екі бөлек төлем болып қалады.
- Сипаттамада көрінсін.
descriptionөрісіне «депозит» деп жазыңыз — клиент Kaspi-де соны көреді.
Келмей қалған клиент
Клиент келмесе, шешім сіздікі:
| Шешім | Не істейсіз |
|---|---|
| Депозит қалады | Ештеңе істемейсіз, ақша Kaspi шотыңызда |
| Толық қайтарасыз | POST /api/v1/invoices/{id}/refund немесе кабинеттен |
| Жартысын қайтарасыз | Сол әдіске amount беріңіз |
| Келесі жазылуға көшіресіз | Жаңа счёт шығармайсыз, ескісін есепке аласыз |
Қайтару
Қайтаруды кабинеттен де, API-дан да жасайсыз:
POST https://api.qut.kz/api/v1/invoices/{id}/refund
{ "amount": 2500, "reason": "24 сағат бұрын хабарлады" }
amount бермесеңіз толық сома қайтарылады. Ішінара қайтарудан кейін счёт partially_refunded күйіне өтеді.
Маңызды: қайтару жауабы белгісіз болып қалатын жағдай бар (refund_unknown). Ондайда бірден қайталамаңыз — алдымен счёттың күйін оқып көріңіз, әйтпесе ақшаны екі рет қайтарып жіберуіңіз мүмкін. Толығы: Қайтару API.
Шебер бойынша бөлек есеп
Екі жолы бар:
1. metadata арқылы. Счёт жасағанда metadata: { "master": "aizhan" } деп жазасыз. Бұл өріс webhook-та қайта келеді және экспортта көрінеді. Ең қарапайымы, бір ұйымда бәрі бірге тұрады.
2. Әр шеберге бөлек API кілт. Кілтті нақты кассирге байлауға да болады: байланған кілттің live счёттары тек сол кассир арқылы жүреді. Бұл бірнеше нүктесі бар салон желісіне ыңғайлы: Нүктелер бойынша бөлек есеп.
Айлық және тәуліктік лимит бүкіл ұйымға ортақ, кілттерге бөлінбейді.
Ерекше ескертулер
- Кассир нөмірі клиентке көрінеді. Счёт туралы хабарламада ол нөмір тұрады. Сондықтан ол нөмір әкімшінің жеке нөмірі емес, салонның жұмыс нөмірі болғаны дұрыс.
- Кассир нөмірімен Kaspi Pay қосымшасына кірмеңіз. Kaspi бір кассирге бір ғана белсенді құрылғы береді, кірсеңіз байланыс үзіледі.
- QR-дың сканерлеу терезесі қысқа — шамамен үш минут, оны Kaspi белгілейді. Клиент ойланып тұрса, жаңа счёт жасаңыз.
- Кеш келген төлем болады. Счёт жабылып кеткен соң ақша келсе,
invoice.paidоқиғасыlate: trueбелгісімен келеді. Қызметті беріңіз немесе ақшаны қайтарыңыз. - Ақша тіке сіздің Kaspi шотыңызға түседі, бізде ұсталмайды.
Жиі қойылатын сұрақтар
Altegio-ға дайын модуль бар ма? Жоқ. Altegio, Bitrix24, amoCRM және басқа жүйелерге дайын плагин жоқ, бірақ бәрі API арқылы қосылады — қажеті бір ғана әдіс. Жалпы схемасы: CRM жүйесіне қосу.
Абонемент сатсам ше — айына бір рет? Ол жазылым. Бірақ жазылым дегеніміз счётты кестеге сай шығару, ақша клиенттің шотынан өздігінен шешілмейді: Жазылымдық бизнеске.
Әр шебер өз телефонынан счёт шығара ала ма? Иә, кабинетке қызметкер ретінде шақырсаңыз немесе Telegram ботын қоссаңыз. Бірақ кассир нөмірі бәріне ортақ, оны әр шеберге бөлек ашудың қажеті жоқ.
Депозитті клиент төлемей кетсе, счёт қалып қоя ма? Счёт expired күйіне өтеді. Сізден ештеңе талап етілмейді, бірақ ол айлық лимит есебіне кіреді.
Салонда касса аппараты бар, оны қалай үйлестіремін? Фискалдық жағын бөлек қараңыз: Фискалды чек.