HandyCafe Docs
owner

Meniul clientului

Meniul clientului este pagina web publică de la handy.cafe/{your-slug}. Clienții o accesează scanând codul QR de la masa lor. Această pagină descrie fluxul complet al clientului, ca să îl puteți explica personalului și să vă planificați lansarea.

Structura URL-ului

Fiecare masă are un URL unic de forma handy.cafe/{cafe-slug}/{table-code}. Codul QR codifică acest URL plus un token cu durată scurtă care dovedește că autocolantul este autentic. Când clientul scanează QR-ul:

  1. Telefonul lui deschide URL-ul în browserul implicit.
  2. Pagina rezolvă slug-ul și codul mesei prin API-ul cloud.
  3. Dacă masa este out_of_order, pagina afișează un mesaj că nu este disponibilă.
  4. Dacă masa este idle, pagina explică faptul că personalul nu a așezat încă clientul și îi cere să solicite ajutor.
  5. Dacă masa este in_use, pagina solicită codul de securitate din 6 cifre.

Verificarea codului de securitate

Codul de securitate asigură că doar clientul așezat la masă poate plasa comenzi. Îl împiedică pe cineva care a văzut QR-ul dintr-o fotografie sau din afara cafenelei să facă comenzi frauduloase.

După ce clientul introduce codul:

  1. API-ul validează codul față de valoarea hash-uită stocată pe masă.
  2. Dacă este valid, se creează o sesiune și este returnat un token.
  3. Token-ul este stocat într-un cookie (hc_menu_session). O variantă de rezervă Bearer token este păstrată și în storage-ul local al dispozitivului. Acest lucru este necesar pe iPhone Safari, care poate bloca cookie-urile third-party în anumite configurații.
  4. Clientul este redirecționat către meniu.

Sesiunea este valabilă 24 de ore de la emitere. Dacă clientul închide browserul și revine pe același dispozitiv, sesiunea tot funcționează și poate reintra fără o nouă verificare.

Limbi

Meniul suportă 24 de limbi: arabă, germană, greacă, engleză, spaniolă, farsi, franceză, hindi, indoneziană, italiană, japoneză, coreeană, malay, poloneză, portugheză, română, rusă, thailandeză, tagalog, turcă, ucraineană, urdu, vietnameză și chineză.

La prima vizită, pagina inspectează antetul Accept-Language din browser și alege cea mai bună potrivire. Clientul poate schimba limba oricând folosind selectorul din partea de sus a meniului. Limba aleasă este reținută pentru sesiune.

Numele produselor, descrierile și ingredientele nu sunt traduse automat; ele apar în limba în care le-ați introdus în editorul de meniu. Etichetele din interfață precum "Add to Cart", "Checkout" și mesajele fluxului de plată sunt localizate complet.

Temă

Meniul suportă o temă deschisă și o temă închisă. Implicitul este adaptat dispozitivului: dacă sistemul de operare al clientului este setat pe modul întunecat, meniul se deschide în modul întunecat. Un comutator de temă din partea de sus îi permite clientului să schimbe aspectul.

Antetul branduit

Antetul din partea de sus a meniului afișează:

Element Sursa
Header Image Încărcată din Settings > Cafenea (opțional)
Logo Încărcat din Settings > Cafenea
Display Name Din profilul afacerii
Address Din profilul afacerii (afișată în subsol)
Phone Din profilul afacerii (afișat în subsol)

Personalizați aceste câmpuri pentru cea mai bună impresie asupra clientului. Clienții recunosc brandul când meniul arată ca semnalistica fizică a locației dvs.

Navigarea prin meniu

Meniul este grupat pe categorii. În interiorul unei categorii, produsele sunt afișate cu miniatură, nume, descriere scurtă și preț.

Atingerea unui produs deschide fișa produsului. Fișa afișează:

  • Fotografia completă.
  • Descrierea în Markdown.
  • Linia cu ingredientele.
  • Indicatorul cu timpul de preparare (doar când Show Prep Time on Menu este activat).
  • Eticheta de unitate, dacă este configurată (de exemplu "250 ml").
  • Selectoarele de variante pentru grupurile de variante atașate produsului.
  • Controlul cantității.
  • Butonul Add to Cart.

Grupurile de variante obligatorii blochează butonul Add to Cart până când clientul selectează o opțiune.

Coșul

Pictograma coșului este plasată într-o locație persistentă, astfel încât clienții să poată ajunge la el de oriunde. Conținutul coșului persistă în timpul navigării în site; trecerea din coș în meniu și înapoi nu pierde articolele.

Coșul îi permite clientului să:

  • Ajusteze cantitatea pe linie.
  • stearga o linie.
  • Adauge o notă opțională.
  • Introducă un număr de telefon (opțional).

Subtotalul, TVA-ul și totalul sunt afișate în timp real.

Plasarea comenzii

Pasul Checkout oferă una sau două metode de plată, în funcție de configurare:

Cash

Dacă plata online este dezactivată în setări, este afișată doar opțiunea Cash. Clientul confirmă comanda și aceasta este trimisă imediat. Clientul plătește casierul când comanda ajunge.

Online (Stripe Checkout)

Dacă plata online este activată, Online apare ca opțiune. La trimitere:

  1. Comanda este creată în stare pending.
  2. Este returnat un client secret de Stripe Checkout.
  3. Interfața Stripe incorporată se deschide inline. Clientul introduce detaliile cardului.
  4. La autorizare reușită, Stripe confirmă debitarea și comanda trece în paid.
  5. Clientul vede pagina de succes.

Plățile eșuate sau abandonate lasă comanda în stare pending. Se poate face o a doua încercare din aceeași sesiune sau personalul poate anula comanda din panoul Orders.

Pagina de succes

După o trimitere reușită, clientul ajunge pe o pagină de bon care afișează:

  • Numărul și ora comenzii.
  • Fiecare linie cu cantitatea, variantele și totalul liniei.
  • Subtotalul, TVA-ul și totalul general.
  • Metoda de plată.
  • Iconița stării plății (pending pentru cash; paid pentru online).
  • Un CTA "Place Another Order" care îl întoarce la meniu cu sesiunea intactă.
  • Un link "Back to Menu".

Polling pentru starea comenzii

După trimitere, vizualizarea clientului asupra comenzii interoghează endpoint-ul de stare pentru a reflecta actualizările din bucătărie. Dacă personalul mută un articol din preparing în ready, clientul vede cum insigna de pe linie se actualizează automat în câteva secunde.

Acest lucru este util pentru ridicarea de la tejghea în regim self-service. Clientul se poate relaxa la masă până când meniul îi spune că comanda este gata.

Ce nu pot face clienții

  • Clienții nu pot răsfoi meniul fără codul de securitate. Pasul de verificare este întotdeauna obligatoriu.
  • Clienții nu pot plasa comenzi pentru mese care sunt idle sau out_of_order.
  • Clienții nu pot edita sau anula o comandă după ce a fost trimisă. Anularea este o acțiune de personal din panoul Orders.

Sfaturi pentru o experiență curată a clientului

  • Imprimați autocolantele QR cu numele cafenelei și o instrucțiune clară, precum "Scanați pentru a comanda. Cereți codul personalului." Altfel, clienții ratează uneori pasul de verificare.
  • Păstrați numele categoriilor și ale produselor scurte. Denumirile lungi se rup pe mobil și împing imaginile sub pliul ecranului.
  • Încărcați cel puțin o fotografie pentru fiecare produs. Meniurile bogate în imagini convertesc mai bine decât cele bazate doar pe text.
  • Activați Show Prep Time on Menu abia după ce estimarea dinamică a fost antrenată. În primele 30 de zile, valoarea statică poate fi prea generoasă sau prea strânsă, iar clienții observă asta.
  • Testați singur fluxul complet de pe telefon înainte de a deschide pentru clienți. Scanați un QR real, introduceți codul, plasați o comandă de test și verificați că apare în panoul dvs.