Cảnh quen thuộc ở nhiều quầy thu ngân: khách chuyển khoản xong, giơ điện thoại lên, “Chị ơi em chuyển rồi nhé”. Thu ngân liếc màn hình, gật đầu. Cuối ngày đối chiếu sao kê thì thiếu một khoản. Ảnh chụp màn hình có thể là giao dịch đang xử lý, giao dịch của hôm qua, hoặc đơn giản là ảnh đã chỉnh sửa.
Cách khác là thu ngân mở app ngân hàng kiểm tra từng giao dịch. An toàn hơn, nhưng chậm, và không làm được khi quầy đông khách hoặc khi tài khoản nhận tiền nằm trên điện thoại của chủ cửa hàng.
ParkViet giải quyết việc này bằng VietQR tự đối soát.
Cách hoạt động
- Thu ngân chốt đơn, chọn thanh toán VietQR.
- Mã QR hiện ra trên màn hình quầy và trên màn hình khách. Mã chứa sẵn tài khoản nhận, số tiền và nội dung chuyển khoản gắn với đơn, nên khách không phải gõ gì.
- Khách quét bằng app ngân hàng bất kỳ và xác nhận chuyển.
- Ngân hàng báo tiền về cho dịch vụ trung gian (SePay hoặc PayOS), dịch vụ này gửi webhook tới máy chủ ParkViet của bạn.
- ParkViet xác minh và đối chiếu với đơn đang chờ. Khớp thì đơn tự chuyển sang đã thanh toán, quầy thấy ngay.
Từ lúc khách bấm chuyển tới lúc đơn được xác nhận, thu ngân không phải làm gì thêm.
Dùng được ở đâu
- Tại quầy: mã hiện trên POS và trên màn hình khách. Màn hình khách chỉ hiện giỏ hàng và mã QR, không hiện thông tin cá nhân của khách khác.
- Online: khách đặt hàng trên website chọn chuyển khoản VietQR, đơn tự xác nhận khi tiền về.
Về dịch vụ trung gian: tại quầy, ParkViet hiện nhận webhook từ SePay; PayOS chưa được bật cho POS. Bạn cần tự đăng ký tài khoản với dịch vụ trung gian và liên kết tài khoản ngân hàng của mình.
Những tình huống thực tế đã được tính tới
Ngân hàng báo chậm. Đôi khi tiền đã vào tài khoản nhưng thông báo tới muộn. Thu ngân có thể nhập mã giao dịch bằng tay để xác nhận đơn, không phải bắt khách đứng chờ.
Một đơn, nhiều cách trả. Khách trả một phần tiền mặt, phần còn lại chuyển khoản. ParkViet cho chia một đơn thành nhiều phương thức. Khách chuyển dư thì tiền thừa được ghi vào sổ chưa phân bổ, không bị mất dấu.
Nhiều tài khoản nhận tiền. Cửa hàng có thể dùng nhiều tài khoản và chọn tài khoản nhận theo lượt, ngẫu nhiên, hoặc theo hạn mức mỗi tháng.
Mạng chập chờn. Mỗi lệnh thu chỉ được ghi một lần, dù yêu cầu bị gửi lại vì mất mạng. Webhook trùng cũng bị chặn, nên một giao dịch không thể được tính hai lần.
Trả hàng. Khách trả gói nào thì hoàn đúng số tiền của gói đó, kể cả khi đơn ban đầu trả bằng VietQR.
An toàn tới đâu
Webhook là cánh cửa để bên ngoài báo cho hệ thống của bạn rằng “tiền đã về”. Nếu ai cũng gõ được cửa đó, kẻ gian có thể giả thông báo để lấy hàng. Vì vậy ParkViet:
- Xác minh chữ ký của mọi webhook trước khi tin.
- Chống trùng giao dịch, không xác nhận hai đơn bằng cùng một khoản tiền.
- Mã hoá khoá webhook trong cơ sở dữ liệu.
- Có test cho các API đụng tới tiền.
Mức an toàn thực tế còn phụ thuộc vào cách bạn vận hành máy chủ: bật HTTPS, giữ kín khoá webhook, cập nhật phần mềm. Xem thêm ở trang Bảo mật.
So với chuyển khoản thường và tiền mặt
ParkViet vẫn giữ các cách thu quen thuộc:
- Chuyển khoản xác nhận tay: nhân viên xác nhận khi thấy tiền về. Hợp với cửa hàng chưa muốn đăng ký dịch vụ trung gian.
- Tiền mặt: thu tiền, trả tiền thừa, đối chiếu két khi đóng ca.
- Bán chịu: ghi nợ có hạn mức cho khách quen.
VietQR tự đối soát không thay thế những cách trên. Nó dành cho lúc bạn muốn khoản chuyển khoản được xác nhận chắc chắn mà không ai phải mở app ngân hàng.
Chưa có gì
- Chưa quẹt thẻ ngân hàng tại quầy.
- PayOS chưa bật cho POS.
Thử ngay
Gem VietQR đi kèm mã nguồn ParkViet dưới dạng submodule, nên khi tải về theo hướng dẫn ở trang Tải về là bạn đã có sẵn. Chi tiết các phương thức thanh toán xem ở trang Thanh toán.