☰ Мәзір · Киосктер мен сканерлер
Киосктер мен сканерлер
Кассасыз құрылғылар: кіреберістегі сканер, қонақтар тіркелетін планшет, сыйлық беретін сөрелік сканер.
Әр құрылғыға тек devices:write құқығы бар бөлек кілт беріңіз. Ол карталарды сканерлей алады, келулерді тіркейді, қонақтарды тіркейді және сыйлық береді, бірақ қатысушылар тізімін ала алмайды және чек жібере алмайды. Планшет ұрланса, тек сол кілтті кері қайтарыңыз.
Кез келген кодты сканерлеу
Сканер не берсе, соны өзгертпестен POST /v1/scans эндпоинтіне жіберіңіз. Әртүрлі пішімдерді өзіміз өңдейміз: карта нөмірі, карта QR-ы, ]C1 символика префиксі бар Code 128, пернетақта эмуляциясы режиміндегі сканердің соңғы Enter не Tab таңбасы, карта бетінің сілтемесі немесе киоскте терілген телефон нөмірі.
curl https://loyaltyfy.io/api/v1/scans \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{ "code": "]C14285324286429\r", "device_id": "door-1" }'{
"object": "scan",
"matched": true,
"matched_by": "4285324286429",
"device_id": "door-1",
"mechanic": "stamps",
"member": {
"object": "member",
"card_number": "4285324286429",
"first_name": "Ana",
"stamps": { "current": 1, "required": 5, "rewards_available": 0 },
...
},
"actions": [
{ "type": "visit", "method": "POST", "path": "/v1/visits" },
{ "type": "transaction", "method": "POST", "path": "/v1/transactions" }
]
}actions бұл құрылғы осы қонақ үшін келесі не істей алатынын тізімдейді. Сондықтан экран бағдарлама ережелерін білмей-ақ дұрыс батырмаларды көрсете алады. Қонақты сыйлық күтіп тұрса, шақыру жолы көрсетілген redeem_reward әрекеті пайда болады.
"actions": [
{ "type": "visit", "method": "POST", "path": "/v1/visits" },
{ "type": "transaction", "method": "POST", "path": "/v1/transactions" },
{
"type": "redeem_reward",
"method": "POST",
"path": "/v1/members/4285324286429/rewards/redeem",
"available": 1
}
]Чексіз келуге штамп қою
Штамп және келу бағдарламаларына келуді белгілеу жеткілікті: спортзал есігі, көлік жуу орны, кассасыз кофе сөресі. POST /v1/visits бағдарламаның әр келуге беретін сыйақысын береді. Әр келуге бірегей external_id жіберіңіз (мысалы, құрылғы атауы мен санауыш). Қайталанғаны еленбейді.
curl https://loyaltyfy.io/api/v1/visits \
-H "Authorization: Bearer sk_test_..." \
-H "Content-Type: application/json" \
-d '{
"external_id": "door-1-2026-10-06-0042",
"member": "4285324286429",
"device_id": "door-1"
}'{
"object": "visit",
"id": "feb2ad75-ac7b-4bb6-8b64-192323b7f6ea",
"external_id": "door-1-2026-10-06-0042",
"status": "completed",
"amount": 0,
"stamps_earned": 1,
"reward_unlocked": false,
"register_id": "door-1",
"livemode": false,
"created_at": "2026-10-06T18:17:28.209+00:00",
"member": {
"object": "member",
"card_number": "4285324286429",
"stamps": { "current": 2, "required": 5, "rewards_available": 0 },
...
},
...
}400 visit_not_supported арқылы қабылданбайды. Мұндай қатысушыларға сканерлеудің actions тізімі ешқашан visit ұсынбайды.Қонақ қатарынан екі рет сканерлегенде штамп екі рет қойылмауы үшін external_id мәнін қатысушы мен уақыт аралығынан құрастырыңыз, мысалы door-1-4285324286429-2026-10-06T18: сағатына ең көбі бір штамп.
Тіркеу киоскі
Кіреберістегі планшет телефон мен атты сұрайды, жеке деректер шарттарын көрсетеді және қонақ келіскеннен кейін ғана consent: true мәнімен POST /v1/members шақырады. Содан кейін wallet.apple_url немесе wallet.google_url сілтемесін QR ретінде көрсетіңіз: қонақ оны сканерлейді, карта бірден Wallet ішіне түседі.
curl https://loyaltyfy.io/api/v1/members \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: kiosk-3-0193" \
-d '{ "phone": "+306912345678", "first_name": "Eleni", "language": "el", "consent": true }'
# show response.wallet.apple_url or google_url as a QR on the kiosk screenТелефон бұрын тіркелген болса, шақыру бар қатысушыны 200 кодымен қайтарады. Сондықтан картасын жоғалтқан қонақ оны жай қайта алады.