Thực đơn Khách hàng
Thực đơn khách hàng là trang web công khai tại handy.cafe/{your-slug}. Khách truy cập bằng cách quét mã QR trên bàn. Trang này mô tả toàn bộ luồng khách hàng để bạn có thể giải thích cho nhân viên và lập kế hoạch triển khai.
Cấu trúc URL
Mỗi bàn có một URL duy nhất theo dạng handy.cafe/{cafe-slug}/{table-code}. Mã QR mã hóa URL này cùng với một token tồn tại ngắn để chứng minh sticker là hợp lệ. Khi khách quét QR:
- Điện thoại của họ mở URL trong trình duyệt mặc định.
- Trang giải mã slug và mã bàn qua cloud API.
- Nếu bàn ở trạng thái
out_of_order, trang sẽ hiển thị thông báo không khả dụng. - Nếu bàn ở trạng thái
idle, trang sẽ giải thích rằng nhân viên chưa cho khách ngồi bàn và yêu cầu gọi hỗ trợ. - Nếu bàn ở trạng thái
in_use, trang sẽ yêu cầu mã bảo mật 6 chữ số.
Xác minh Mã Bảo mật
Mã bảo mật đảm bảo chỉ khách đang ngồi tại bàn mới có thể đặt món. Nó ngăn người nào đó nhìn thấy mã QR từ ảnh hoặc từ bên ngoài quán đặt đơn gian lận.
Sau khi khách nhập mã:
- API xác thực mã với giá trị băm đã lưu trên bàn.
- Nếu hợp lệ, một session sẽ được tạo và token được trả về.
- Token được lưu trong cookie (
hc_menu_session). Một cơ chế dự phòng Bearer token cũng được lưu trong local storage của thiết bị. Điều này cần thiết trên iPhone Safari, vốn có thể chặn cookie bên thứ ba trong một số cấu hình. - Khách được chuyển đến thực đơn.
Session có hiệu lực trong 24 giờ kể từ lúc cấp. Nếu khách đóng trình duyệt và quay lại trên cùng thiết bị, session vẫn hoạt động và họ có thể vào lại mà không cần xác minh lại.
Ngôn ngữ
Thực đơn hỗ trợ 24 ngôn ngữ: Ả Rập, Đức, Hy Lạp, Anh, Tây Ban Nha, Farsi, Pháp, Hindi, Indonesia, Ý, Nhật, Hàn, Mã Lai, Ba Lan, Bồ Đào Nha, Romania, Nga, Thái, Tagalog, Thổ Nhĩ Kỳ, Ukraine, Urdu, Việt và Trung.
Ở lần truy cập đầu tiên, trang sẽ xem header Accept-Language của trình duyệt và chọn ngôn ngữ khớp tốt nhất. Khách có thể đổi ngôn ngữ bất kỳ lúc nào bằng bộ chọn ở đầu thực đơn. Ngôn ngữ đã chọn sẽ được nhớ cho session.
Tên sản phẩm, mô tả và thành phần không được dịch tự động; chúng sẽ hiển thị bằng đúng ngôn ngữ bạn đã nhập trong trình chỉnh sửa thực đơn. Các nhãn giao diện như "Add to Cart", "Checkout" và thông báo trong luồng thanh toán đều được bản địa hóa đầy đủ.
Giao diện
Thực đơn hỗ trợ cả giao diện sáng và tối. Mặc định sẽ theo thiết bị: nếu hệ điều hành của khách đang đặt chế độ tối, thực đơn sẽ mở ở chế độ tối. Một nút chuyển giao diện ở phía trên cho phép khách đổi.
Phần đầu có thương hiệu
Phần đầu ở trên cùng của thực đơn hiển thị:
| Thành phần | Nguồn |
|---|---|
| Ảnh tiêu đề | Tải từ Cài đặt > Căn-tin (tùy chọn) |
| Logo | Tải từ Cài đặt > Căn-tin |
| Tên hiển thị | Từ hồ sơ kinh doanh của bạn |
| Địa chỉ | Từ hồ sơ kinh doanh của bạn (hiển thị ở chân trang) |
| Điện thoại | Từ hồ sơ kinh doanh của bạn (hiển thị ở chân trang) |
Hãy tùy chỉnh các trường này để tạo ấn tượng tốt nhất cho khách. Khách sẽ nhận ra thương hiệu khi thực đơn trông giống như biển hiệu vật lý của địa điểm.
Duyệt Thực đơn
Thực đơn được nhóm theo danh mục. Trong từng danh mục, sản phẩm được hiển thị với ảnh thu nhỏ, tên, mô tả ngắn và giá.
Chạm vào sản phẩm sẽ mở bảng chi tiết. Bảng này hiển thị:
- Ảnh đầy đủ.
- Mô tả Markdown.
- Dòng thành phần.
- Chip thời gian chuẩn bị, chỉ hiện khi bật Show Prep Time on Menu.
- Nhãn đơn vị nếu đã cấu hình, ví dụ "250 ml".
- Bộ chọn biến thể cho mọi nhóm biến thể gắn với sản phẩm.
- Bộ tăng giảm số lượng.
- Nút Add to Cart.
Các nhóm biến thể bắt buộc sẽ chặn nút Add to Cart cho đến khi khách chọn xong một tùy chọn.
Giỏ hàng
Biểu tượng giỏ hàng nằm ở vị trí cố định để khách có thể chạm vào từ bất kỳ màn hình nào. Nội dung giỏ hàng được giữ khi chuyển trang trong site; duyệt từ giỏ sang thực đơn rồi quay lại sẽ không làm mất món.
Giỏ hàng cho phép khách:
- Điều chỉnh số lượng theo từng dòng.
- Xóa một dòng.
- Thêm ghi chú tùy chọn.
- Cung cấp số điện thoại (tùy chọn).
Tạm tính, VAT và tổng tiền được hiển thị theo thời gian thực.
Gửi Đơn hàng
Bước Checkout cung cấp một hoặc hai phương thức thanh toán tùy theo cấu hình của bạn:
Cash
Nếu thanh toán online bị tắt trong cài đặt, chỉ Cash sẽ được hiển thị. Khách xác nhận đơn và nó được gửi ngay lập tức. Khách sẽ thanh toán cho thu ngân khi đơn đến.
Online (Stripe Checkout)
Nếu thanh toán online được bật, Online sẽ xuất hiện như một tùy chọn. Khi gửi:
- Đơn được tạo ở trạng thái pending.
- Một client secret của Stripe Checkout được trả về.
- Giao diện nhúng của Stripe mở ngay trong trang. Khách nhập thông tin thẻ.
- Sau khi ủy quyền thành công, Stripe xác nhận charge và đơn chuyển sang paid.
- Khách thấy trang thành công.
Các thanh toán thất bại hoặc bị bỏ dở sẽ để đơn ở trạng thái pending. Có thể thử lại từ cùng session, hoặc nhân viên có thể hủy đơn từ bảng điều khiển Orders.
Trang Thành công
Sau khi gửi thành công, khách sẽ đến trang hóa đơn hiển thị:
- Số đơn và thời gian.
- Mọi dòng với số lượng, biến thể và tổng dòng.
- Tạm tính, VAT và tổng cộng.
- Phương thức thanh toán.
- Biểu tượng trạng thái thanh toán (pending với cash; paid với online).
- Nút "Place Another Order" đưa khách quay lại thực đơn với session còn nguyên.
- Liên kết "Back to Menu".
Thăm dò Trạng thái Đơn hàng
Sau khi gửi, chế độ xem đơn hàng của khách sẽ thăm dò endpoint trạng thái để phản ánh cập nhật từ bếp. Nếu nhân viên chuyển một món từ preparing sang ready, khách sẽ thấy huy hiệu trên dòng đó cập nhật tự động trong vài giây.
Điều này hữu ích cho hình thức nhận món tự phục vụ tại quầy. Khách có thể nghỉ tại bàn cho đến khi thực đơn báo đơn đã sẵn sàng.
Những gì Khách không thể làm
- Khách không thể duyệt thực đơn nếu chưa có mã bảo mật. Bước xác minh luôn bắt buộc.
- Khách không thể đặt món cho bàn đang idle hoặc out_of_order.
- Khách không thể sửa hoặc hủy đơn sau khi đã gửi. Hủy là thao tác của nhân viên từ bảng điều khiển Orders.
Mẹo để Trải nghiệm Khách hàng Gọn gàng
- In sticker QR với tên quán và hướng dẫn rõ ràng như "Quét để đặt món. Hãy hỏi nhân viên để lấy mã." Nếu không, khách đôi khi sẽ bỏ sót bước xác minh.
- Giữ tên danh mục và sản phẩm ngắn gọn. Tên quá dài sẽ bị xuống dòng trên di động và đẩy ảnh xuống dưới vùng nhìn đầu tiên.
- Tải ít nhất một ảnh cho mỗi sản phẩm. Thực đơn nhiều ảnh thường chuyển đổi tốt hơn thực đơn chỉ có chữ.
- Chỉ bật Show Prep Time on Menu sau khi ước lượng động đã học đủ. Trong 30 ngày đầu, giá trị tĩnh có thể quá rộng hoặc quá hẹp, và khách sẽ nhận ra.
- Tự kiểm tra toàn bộ luồng từ điện thoại trước khi mở cho khách. Quét một mã QR thật, nhập mã, đặt một đơn thử và xác nhận đơn xuất hiện trên bảng điều khiển của bạn.