Thiết kế dữ liệu mã QR thanh toán để dễ đối soát

Thiết kế dữ liệu mã QR thanh toán để dễ đối soát
Thiết kế dữ liệu mã QR thanh toán để dễ đối soát

11 giờ 47 phút, quầy cơm Nhà Gạo kín 28 ghế và máy in bếp đang nhả liền sáu phiếu. Anh Phúc vừa đọc món vừa nhìn ba ảnh chuyển khoản trên điện thoại, còn khách bàn 12 giơ màn hình báo đã trả 186.000 đồng. Tiếng máy xay đá che mất câu hỏi số bàn, nên anh ghi tạm “đã ck” lên hóa đơn rồi quay sang nhận món mới.

Cuối ca, chị Mai ở phòng kế toán thấy 64 giao dịch có cùng nội dung “thanh toan”. Hai khoản đều 186.000 đồng vào cách nhau bốn phút; một đơn ở bàn 12, đơn kia mang đi mã DH260824-0917. Không có mã đơn trong nội dung, chị phải hỏi lại ca trưởng và xem camera.

Ca trưa để lại 17 khoản chưa ghép được

Ca trưa để lại 17 khoản chưa ghép được
Ca trưa để lại 17 khoản chưa ghép được

Nhà Gạo dùng một bảng QR tĩnh đặt cạnh máy POS. Mã chứa số tài khoản và tên người nhận, còn số tiền lẫn nội dung để khách tự nhập. Cách này nhanh lúc lắp quầy, nhưng dữ liệu ngân hàng không mang khóa để phần mềm nối với đơn hàng.

Ngày 24 tháng 8, cửa hàng có 213 hóa đơn và 148 lượt chuyển khoản. Phần mềm chỉ ghép tự động 101 khoản theo số tiền và khoảng giờ. Ba mươi giao dịch được nhân viên chọn tay; 17 khoản còn lại chuyển sang ca sau vì trùng tiền hoặc thiếu ghi chú.

Chị Mai đo thời gian xử lý 17 dòng: trung bình 2 phút 18 giây cho mỗi khoản. Tổng là 17 x 138 = 2.346 giây, gần 39 phút. Chưa tính hai cuộc gọi cho khách và đoạn camera phải tua lại.

Sáng hôm sau, chị đề nghị mã thanh toán được sinh theo từng đơn. Mục tiêu rất cụ thể: ngân hàng nhận đúng số tiền và nội dung bắt đầu bằng mã đơn mà POS đã biết. Nhân viên chỉ kiểm trạng thái, không đọc ảnh chụp màn hình trong giờ đông.

Chị Mai tách dữ liệu thành ba phần cố định

Chị Mai tách dữ liệu thành ba phần cố định
Chị Mai tách dữ liệu thành ba phần cố định

Đội kỹ thuật ngồi cùng kế toán và thu ngân để chọn cấu trúc. Trường tài khoản lấy thông tin người nhận của Nhà Gạo. Trường số tiền lấy tổng hóa đơn sau giảm giá. Phần cuối là nội dung NG + mã đơn, ví dụ NG DH260825-1042.

Mã đơn gồm ngày và số tăng dần, chỉ dùng chữ không dấu, chữ số và khoảng trắng. Nhóm bỏ tên khách khỏi nội dung vì dài, dễ lỗi dấu và không cần cho phép ghép. Mỗi hóa đơn đã có hồ sơ khách riêng trong POS nếu người mua để lại số điện thoại.

Giới hạn độ dài được đặt ở 25 ký tự dù ứng dụng ngân hàng có thể nhận chuỗi dài hơn. Chuỗi ngắn hiển thị trọn trên màn hình kiểm tra của thu ngân. Nó cũng tránh trường hợp ngân hàng cắt phần số đơn ở cuối.

Đội thống kê giữ một bảng quy tắc:

Trường Nguồn dữ liệu Ví dụ Quy tắc kiểm
Tài khoản Cấu hình cửa hàng 0123456789 Khóa quyền sửa
Số tiền Tổng sau ưu đãi 186000 Lớn hơn 0
Nội dung Mã đơn POS NG DH260825-1042 Không trùng trong ngày

Một nút trên POS tạo mã QR thanh toán theo đơn

Một nút trên POS tạo mã QR thanh toán theo đơn
Một nút trên POS tạo mã QR thanh toán theo đơn

Kỹ sư thêm nút “Hiện QR” vào màn hình thanh toán. Khi thu ngân bấm, POS gửi tài khoản, số tiền và mã đơn sang dịch vụ tạo ảnh. Màn hình khách hàng lập tức hiện QR cạnh dòng 186.000 đồng và mã DH260825-1042.

Để thử mẫu dữ liệu, nhóm mở tạo QR code miễn phí trên trình duyệt. Công cụ cho tải PNG hoặc SVG, gắn logo, tạo QR dẫn link và VietQR mà không cần cài phần mềm. Bản SVG được dùng làm bảng dự phòng; ảnh động theo đơn do POS sinh ở thời điểm bán.

Trong quy trình tạo mã QR thanh toán, số tiền lấy từ máy bán hàng chứ không được thu ngân gõ lại. Nếu khách tách hóa đơn, POS tạo hai yêu cầu với hai mã phụ, chẳng hạn DH260825-1042A và DH260825-1042B. Tổng hai phần phải bằng giá trị đơn gốc trước khi nút xác nhận sáng.

Mã có thời hạn 30 phút. Sau thời gian đó, khách quét sẽ thấy yêu cầu tạo lại tại quầy. Quy tắc này hạn chế việc ảnh cũ được dùng nhầm vào lần mua khác có cùng số tiền.

Nhóm giữ bảng QR tĩnh dưới ngăn kéo cho lúc màn hình phụ hỏng. Mã dự phòng chỉ chứa tài khoản, còn thu ngân phải nhập mã đơn trên tờ bill vào nội dung. Mỗi lần dùng đường dự phòng được đánh dấu để kế toán biết giao dịch nào cần nhìn kỹ.

Buổi thử nghiệm lộ ra lỗi khoảng trắng và tiền giảm giá

Ngày đầu, Nhà Gạo chỉ bật tính năng ở quầy số 2 từ 10 giờ 30 đến 14 giờ. Mười giao dịch đầu được kỹ sư đứng cạnh kiểm cả màn hình khách, thông báo ngân hàng và bảng nhận tiền. Giao dịch thứ bảy không ghép vì một ngân hàng trả nội dung với hai khoảng trắng liên tiếp.

Bộ đọc được sửa để gom nhiều khoảng trắng thành một và chuyển chữ về dạng in hoa trước khi so. Nó vẫn giữ mã gốc trong nhật ký để kế toán tra khi cần. Sau sửa, các biến thể “ng dh…”, “NG DH…” và “Ng Dh…” cùng khớp một đơn.

Lỗi thứ hai xảy ra khi khách dùng voucher 20.000 đồng sau lúc QR đã hiện. POS cũ giữ số 205.000 đồng, trong khi hóa đơn cuối là 185.000 đồng. Nhóm đổi thứ tự thao tác: áp mã giảm, khóa tổng, rồi mới cho sinh QR.

Khách cũng được yêu cầu nhìn lại tên người nhận và số tiền trên ứng dụng. Dòng nhắc này nằm ngay dưới hình, cỡ chữ đủ đọc nhưng không lấn vùng trắng. Thu ngân đợi tín hiệu “đã nhận” trên POS thay cho việc nhìn ảnh khách đưa.

Trong ba ngày chạy thử, 326 trên 331 giao dịch ghép tự động. Năm ngoại lệ gồm hai khách sửa nội dung, một khoản thiếu tiền và hai khoản đến sau thời hạn. Mỗi loại có nhãn riêng để kế toán biết bước xử lý.

Bảy ngày sau, ca trưởng chốt quầy trong chín phút

Một tuần sau, cả ba quầy đều tạo mã QR thanh toán theo đơn. Ca trưa có 172 lượt chuyển khoản, 168 khoản ghép ngay khi ngân hàng báo có. Bốn ngoại lệ hiện thành hàng màu vàng với mã đơn, số chênh và giờ nhận.

Ca trưởng không giữ ảnh chụp trong nhóm chat nữa. Anh đối chiếu tổng POS 31.482.000 đồng với tổng giao dịch đã ghép, xem bốn dòng vàng rồi ký ca sau chín phút. Trước thay đổi, công việc này thường kéo dài 35 đến 50 phút.

Chị Mai còn nhìn được các cảnh báo rõ hơn. Một mã đơn nhận hai khoản sẽ bị giữ để kiểm hoàn tiền; một khoản không có mã hợp lệ đi vào danh sách tiền chờ nhận diện. Nhật ký ghi ai ghép tay, lý do và thời điểm sửa.

Nhà Gạo đặt lịch kiểm quy tắc mỗi tháng và sau mọi lần POS đổi cấu trúc mã đơn. Bản test gồm đơn thường, đơn giảm giá, tách hóa đơn, hoàn món và thanh toán trễ. Mỗi trường hợp đều có kết quả mong đợi để kỹ sư chạy lại.

Giờ cao điểm vẫn ồn, máy bếp vẫn chạy liên tục và khách vẫn muốn rời quầy nhanh. Điểm khác là mỗi khoản tiền đã mang theo mã đơn cùng số tiền được khóa từ POS. Thiết kế dữ liệu gọn giúp phần mềm đối soát làm phần lặp lại, còn kế toán tập trung vào bốn hoặc năm ngoại lệ thật sự.

Leave a Reply

Your email address will not be published. Required fields are marked *