Mục lụcChạm để xem nhanh các phần+
- Nhận lại sự kiện không đồng nghĩa có giao dịch mới.
- Xác minh thông báo trước khi thay đổi trạng thái đơn hàng.
- Đối soát giao dịch và chứng từ là phần bắt buộc của nghiệm thu.
Một lần khách trả tiền, hai lần hệ thống nhận tin
Luồng thanh toán thường gửi thông báo về website khi giao dịch thay đổi trạng thái. Nếu đường truyền hoặc hệ thống nhận gặp lỗi, thông báo có thể được gửi lại. Thiết kế chỉ có “nhận tin rồi tạo chứng từ” có nguy cơ ghi nhận nhiều lần cùng một giao dịch.
Webhook là thông báo máy chủ gửi tới một địa chỉ đã đăng ký khi có sự kiện. Tài liệu Stripe là ví dụ công khai về cơ chế này, không phải khẳng định mọi cổng thanh toán có cùng hợp đồng. Khi tích hợp cổng khác hoặc hệ thống kế toán, phải đối chiếu tài liệu của đúng nhà cung cấp.
Tách sự kiện nhận được và kết quả nghiệp vụ
Friday Works đề xuất lưu mã sự kiện cùng mã giao dịch, thời điểm nhận và kết quả xử lý. Hệ thống cần phân biệt “đã nhận”, “đang xử lý”, “đã hoàn tất” và “cần kiểm tra”. Một lần gửi lại có thể chỉ cần trả kết quả đã có, không tạo thêm đơn hàng hoặc chứng từ.
Chống ghi trùng cần bám vào giao dịch nghiệp vụ, không chỉ một mã thông báo. Cùng một thanh toán có thể sinh nhiều loại sự kiện hợp lệ. Doanh nghiệp phải thống nhất trạng thái nào đủ điều kiện ghi nhận, cách xử lý hoàn tiền và việc gì được phép chạy lại khi một bước trung gian thất bại.
Xác minh nguồn rồi mới đổi trạng thái
Tài liệu Stripe hướng dẫn xác minh chữ ký webhook và lưu ý sự kiện có thể được gửi trùng hoặc không đúng thứ tự mong đợi. Đội triển khai cần áp dụng quy tắc xác thực của cổng đang dùng trước khi đánh dấu thanh toán thành công. Không dựa riêng vào trang trình duyệt thông báo khách đã trả tiền.
Bí mật xác minh phải được quản lý phía máy chủ và tách giữa môi trường thử với thật. Nếu kiểm tra nguồn thất bại, hệ thống cần từ chối và ghi lý do phù hợp. Không ghi toàn bộ thông tin nhạy cảm của giao dịch vào nhật ký chỉ để dễ gỡ lỗi.
Nghiệm thu bằng lỗi giả lập có kiểm soát
Trong môi trường thử, gửi lại cùng sự kiện, đảo thứ tự thông báo và cho hệ thống kế toán tạm thời không phản hồi. Sau mỗi tình huống, kiểm tra một giao dịch có bao nhiêu đơn hàng, bao nhiêu chứng từ và trạng thái nào đang chờ. Các thao tác này cần dùng tài khoản và dữ liệu thử được cho phép.
Tình huống quan trọng là chứng từ đã được tạo nhưng bước ghi nhận hoàn tất bị gián đoạn. Luồng chạy lại phải tìm hoặc đối chiếu kết quả cũ trước khi tạo mới. Nếu nhà cung cấp có cơ chế idempotency, tức chạy lại cùng yêu cầu mà không lặp tác động, đội kỹ thuật cần làm đúng phạm vi và thời hạn mà API quy định.
Đối soát để phát hiện công việc bị treo
Chống ghi trùng không phát hiện được mọi giao dịch bị bỏ sót. Doanh nghiệp cần một bước đối soát định kỳ giữa cổng thanh toán, đơn hàng và chứng từ. Bảng đối soát nên chỉ ra thiếu ở hệ thống nào, số tiền liên quan, thời gian chờ và người phụ trách xử lý.
Biên bản bàn giao cần có cách chạy lại an toàn, cách xử lý ngoại lệ và số liệu nghiệm thu. Với tích hợp MISA hoặc ERP khác, hãy kiểm tra đúng API và quyền của tài khoản dịch vụ; bài này không cam kết một tính năng chống trùng sẵn có ở nhà cung cấp. Mục tiêu là một giao dịch có kết quả nghiệp vụ đúng và có thể giải thích khi xảy ra lỗi.
Nguồn tham khảo
Tài liệu đã dùng để biên soạn
Ưu tiên tài liệu chính thức và nguồn kỹ thuật gốc. Truy cập để kiểm tra chi tiết hoặc theo dõi cập nhật mới nhất.
