Tạo tài khoản
Quay lại blog
Hướng dẫn

Cơ bản về retry và idempotency của Webhook

Xây dựng bộ nhận MangoOTP Webhook xác minh chữ ký, xác nhận chính xác, xử lý idempotent và thích ứng lịch retry giới hạn.

Webhook là thông báo, không phải quyền lặp lại hành động nghiệp vụ. Bộ nhận phải xác minh, nhận biết sự kiện đã xử lý và chỉ trả xác nhận sau khi ghi nhận an toàn.

Dùng endpoint HTTPS công khai

Cấu hình URL HTTPS truy cập được từ internet và dành riêng cho webhook. Không dùng địa chỉ riêng, chuỗi redirect hay trang cần đăng nhập.

Với “Cơ bản về retry và idempotency của Webhook”, hãy xem “Dùng endpoint HTTPS công khai” là một điểm kiểm tra riêng, không phải lý do để thay đổi nhiều điều cùng lúc. Ghi lại kết quả, thời gian và mã liên quan, rồi chỉ thực hiện một bước có căn cứ.

Xác minh trước khi xử lý

Dùng webhook secret hiện tại và trường chữ ký theo tài liệu. Yêu cầu không xác minh phải bị từ chối mà không đổi trạng thái.

Với “Cơ bản về retry và idempotency của Webhook”, hãy xem “Xác minh trước khi xử lý” là một điểm kiểm tra riêng, không phải lý do để thay đổi nhiều điều cùng lúc. Ghi lại kết quả, thời gian và mã liên quan, rồi chỉ thực hiện một bước có căn cứ.

Lưu danh tính idempotent

Lưu định danh sự kiện hoặc nghiệp vụ ổn định trước side effect. Lần giao lặp phải trả kết quả cũ, không tạo hành động thứ hai.

Với “Cơ bản về retry và idempotency của Webhook”, hãy xem “Lưu danh tính idempotent” là một điểm kiểm tra riêng, không phải lý do để thay đổi nhiều điều cùng lúc. Ghi lại kết quả, thời gian và mã liên quan, rồi chỉ thực hiện một bước có căn cứ.

Xác nhận chính xác SUCCESS

Chỉ HTTP 2xx với body sau trim đúng bằng SUCCESS được coi là xác nhận. Body khác, non-2xx và lỗi truyền đều chưa xác nhận.

Với “Cơ bản về retry và idempotency của Webhook”, hãy xem “Xác nhận chính xác SUCCESS” là một điểm kiểm tra riêng, không phải lý do để thay đổi nhiều điều cùng lúc. Ghi lại kết quả, thời gian và mã liên quan, rồi chỉ thực hiện một bước có căn cứ.

Hiểu lịch retry

Sự kiện chưa xác nhận có thể được gửi lại sau 1, 3, 5 và 15 phút, tối đa năm lần thông báo.

Với “Cơ bản về retry và idempotency của Webhook”, hãy xem “Hiểu lịch retry” là một điểm kiểm tra riêng, không phải lý do để thay đổi nhiều điều cùng lúc. Ghi lại kết quả, thời gian và mã liên quan, rồi chỉ thực hiện một bước có căn cứ.

Tách nhận khỏi công việc dài

Xác minh, ghi và đưa vào hàng đợi nhanh. Không giữ HTTP mở trong khi chạy công việc chậm có thể timeout.

Với “Cơ bản về retry và idempotency của Webhook”, hãy xem “Tách nhận khỏi công việc dài” là một điểm kiểm tra riêng, không phải lý do để thay đổi nhiều điều cùng lúc. Ghi lại kết quả, thời gian và mã liên quan, rồi chỉ thực hiện một bước có căn cứ.

Quan sát nhưng không lộ secret

Log định danh an toàn, kết quả, số lần, thời gian, loại lỗi và traceId. Không log secret, chữ ký, API key hay payload nhạy cảm.

Với “Cơ bản về retry và idempotency của Webhook”, hãy xem “Quan sát nhưng không lộ secret” là một điểm kiểm tra riêng, không phải lý do để thay đổi nhiều điều cùng lúc. Ghi lại kết quả, thời gian và mã liên quan, rồi chỉ thực hiện một bước có căn cứ.

Tôn trọng ranh giới sự kiện

Chỉ xử lý sự kiện nhận SMS và trạng thái cuối được tài liệu cho phép. Cấp số hoặc review trung gian không phải kết quả cuối.

Với “Cơ bản về retry và idempotency của Webhook”, hãy xem “Tôn trọng ranh giới sự kiện” là một điểm kiểm tra riêng, không phải lý do để thay đổi nhiều điều cùng lúc. Ghi lại kết quả, thời gian và mã liên quan, rồi chỉ thực hiện một bước có căn cứ.

Danh sách kiểm tra thực tế

  1. Xác minh “Dùng endpoint HTTPS công khai”, lưu kết quả và chỉ tiếp tục khi hành động kế tiếp đã rõ ràng.
  2. Xác minh “Xác minh trước khi xử lý”, lưu kết quả và chỉ tiếp tục khi hành động kế tiếp đã rõ ràng.
  3. Xác minh “Lưu danh tính idempotent”, lưu kết quả và chỉ tiếp tục khi hành động kế tiếp đã rõ ràng.
  4. Xác minh “Xác nhận chính xác SUCCESS”, lưu kết quả và chỉ tiếp tục khi hành động kế tiếp đã rõ ràng.
  5. Xác minh “Hiểu lịch retry”, lưu kết quả và chỉ tiếp tục khi hành động kế tiếp đã rõ ràng.
  6. Xác minh “Tách nhận khỏi công việc dài”, lưu kết quả và chỉ tiếp tục khi hành động kế tiếp đã rõ ràng.
  7. Xác minh “Quan sát nhưng không lộ secret”, lưu kết quả và chỉ tiếp tục khi hành động kế tiếp đã rõ ràng.
  8. Xác minh “Tôn trọng ranh giới sự kiện”, lưu kết quả và chỉ tiếp tục khi hành động kế tiếp đã rõ ràng.

Trạng thái cuối cùng và lịch sử tài khoản là nguồn xác nhận kết quả. Không gửi mật khẩu, mã xác minh đầy đủ, bí mật xác thực, access token, API key hoặc giấy tờ chưa che. Xem thêm tại Trung tâm trợ giúp MangoOTP.