Skip to main content
Tài liệu này mô tả chi tiết các quy tắc và luồng xử lý liên quan đến việc thanh toán đơn hàng trên hệ thống ILU PET, đặc biệt tập trung vào phương thức thanh toán qua QR Code.

1. Phương thức & Mô hình Thanh toán

Hệ thống ILU PET hiện tại chỉ hỗ trợ một phương thức thanh toán duy nhất là chuyển khoản qua mã QR.
  • Mô hình Thanh toán Tập trung (Centralized Payment): Toàn bộ dòng tiền từ Pet Owner sẽ được chuyển thẳng về tài khoản ngân hàng của ILUPET thông qua mã QR do hệ thống sinh ra. ILUPET đóng vai trò trung gian thu hộ và đảm bảo an toàn giao dịch.
  • Không hỗ trợ thanh toán khi nhận hàng (COD).
  • Chưa hỗ trợ điều hướng (deeplink) trực tiếp về ứng dụng ngân hàng. Người dùng cần tải ảnh QR hoặc tự mở app ngân hàng để quét.

2. Quy trình Thanh toán (Payment Flow)

1

Hiển thị thông tin thanh toán

Sau khi người dùng nhấn “Đặt hàng” ở trang Xác nhận (Checkout), hệ thống sẽ tạo đơn hàng ở trạng thái Chờ thanh toán (Pending Payment). Ở trạng thái này, hệ thống hỗ trợ cơ chế Đặt trước, Trả sau trong vòng 24 giờ. Màn hình hiển thị:
  • Mã QR tĩnh/động chứa thông tin tài khoản của ILUPET, số tiền và nội dung chuyển khoản. Cung cấp nút “Lưu ảnh QR” để khách hàng tải về.
  • Hiển thị thông tin tham khảo (số tài khoản, số tiền, nội dung) dưới dạng text nhưng không có nút Copy, buộc khách hàng phải sử dụng tính năng tải ảnh QR và quét trên app ngân hàng.
  • Đồng hồ đếm ngược (Countdown) 24 giờ. Người dùng có thể thoát App, sau đó quay lại mục “Đơn hàng” mở lại đơn này để tiếp tục lấy mã QR thanh toán do ILUPET sinh ra, miễn là chưa hết thời gian.
2

Tiếp nhận thông tin chuyển khoản

Hệ thống backend sử dụng Webhook/Polling từ cổng thanh toán (Payment Gateway) để lắng nghe sự kiện tiền vào. Nội dung chuyển khoản (Memo/Description) bắt buộc phải tuân theo cú pháp quy định (thường chứa Order ID hoặc mã phiên thanh toán) để hệ thống tự động gạch nợ (Reconciliation).
3

Xử lý kết quả

  • Thành công: Khi hệ thống xác nhận đã nhận đủ tiền (số tiền khớp với final_amount), đơn hàng tự động chuyển từ Chờ thanh toán sang Chờ xác nhận. Đồng thời, hệ thống kích hoạt logic Tách đơn (Split Order) và Trừ tồn kho (Reserve).
  • Quá hạn (Timeout): Nếu hết thời gian đếm ngược mà chưa nhận được thanh toán, hệ thống tự động chuyển trạng thái đơn hàng sang Đã huỷ (Cancelled) với lý do “Quá hạn thanh toán”.

3. Quy tắc Nghiệp vụ (Business Rules)

  • Rule 1: Timeout Thanh toán: Thời gian tiêu chuẩn để hoàn tất thanh toán là 24 giờ. Sau thời gian này, mã QR hết hiệu lực và đơn hàng tự động bị huỷ. Điều này giúp dọn dẹp các đơn rác (Abandoned carts).
  • Rule 2: Chặn xử lý đơn chưa thanh toán: Merchant tuyệt đối không nhìn thấy các đơn hàng đang ở trạng thái Chờ thanh toán. Đơn hàng chỉ xuất hiện trên hệ thống của Merchant khi đã được thanh toán 100% thông qua đúng mã QR mà ILUPET đã sinh ra.
  • Rule 3: Trạng thái Tồn kho: Trong suốt 24 giờ chờ thanh toán, tồn kho không bị trừ tạm (Reserve). Tồn kho chỉ bị Reserve ngay tại giây phút thanh toán thành công. Khách hàng chấp nhận rủi ro: Nếu trong 24 giờ chờ thanh toán mà sản phẩm hết hàng do khách khác mua mất, giao dịch có thể bị huỷ/hoàn tiền.
  • Rule 4: Đối soát và Thanh toán (Settlement T+7+24h): Do áp dụng dòng tiền tập trung, ILUPET giữ tiền trong Pending Escrow và tự động release vào Available Balance của Merchant sau 7 ngày kể từ khi đơn hàng chuyển sang “Hoàn thành”, cộng thêm 24 giờ buffer để đảm bảo không có Dispute phát sinh vào phút chót.
    • Cơ chế kỹ thuật: Hệ thống sử dụng một Batch Job (Cronjob) chạy tự động 1 lần mỗi ngày vào ban đêm (VD: 2:00 AM) để quét toàn bộ các đơn hàng đạt đủ điều kiện T+7+24h, không có Dispute đang mở, và tự động release tiền vào Available Balance. Việc chạy Job 1 lần/ngày đảm bảo không tốn kém chi phí máy chủ và không ảnh hưởng đến hiệu năng hệ thống ban ngày.

4. Xử lý Ngoại lệ (Exception Handling)

  • Chuyển khoản thiếu tiền: Nếu webhook báo về số tiền chuyển nhỏ hơn final_amount, hệ thống sẽ coi như giao dịch thất bại. Cần có cơ chế cảnh báo cho admin/kế toán để xử lý thủ công (liên hệ khách hàng nộp bù hoặc hoàn lại).
  • Chuyển khoản dư tiền: Đơn hàng vẫn được duyệt thành công. Phần dư ra sẽ được đưa vào danh sách đối soát thủ công của kế toán để hoàn lại cho Pet Owner sau đó.
  • Huỷ đơn đã thanh toán: Nếu Pet Owner hoặc Merchant huỷ đơn hàng sau khi đã thanh toán thành công (đơn đang ở trạng thái Chờ xác nhận hoặc Đang chuẩn bị), tiền sẽ được hoàn lại (Refund).
    • Phí xử lý hoàn tiền: Nếu Pet Owner chủ động hủy, phí xử lý giao dịch sẽ được trừ từ số tiền hoàn về tài khoản Pet Owner. Nếu Merchant từ chối hoặc lỗi từ phía nền tảng, hoàn 100% không trừ phí.
    • SLA hoàn tiền: 3–5 ngày làm việc về tài khoản ngân hàng gốc của Pet Owner.
    • Do hệ thống chưa tích hợp hoàn tiền tự động 2 chiều toàn diện, quá trình này có thể yêu cầu Admin thực hiện chuyển khoản hoàn tiền thủ công và cập nhật trạng thái “Đã hoàn tiền”.