Idempotency (tính luỹ đẳng) là tính chất của một thao tác mà khi thực hiện nhiều lần vẫn cho cùng kết quả như thực hiện một lần. Với hệ thống tài chính, đây là cách tránh ghi trùng một khoản tiền khi yêu cầu bị gửi lại.
Vì sao yêu cầu bị gửi lại
- Mạng chập chờn, bên gửi không nhận được phản hồi nên thử lại.
- Máy chủ của bạn xử lý xong nhưng trả lời chậm, bên gửi tưởng lỗi.
- Người vận hành bấm gửi lại sự kiện từ nhật ký.
Nếu mỗi lần nhận là một lần ghi mới, một khoản tiền có thể bị ghi hai lần và đơn hàng bị đánh dấu thanh toán hai lần.
Cách làm thường gặp
- Mỗi sự kiện hoặc yêu cầu có một mã duy nhất.
- Bên nhận lưu các mã đã xử lý.
- Khi nhận mã đã có, bên nhận bỏ qua hoặc trả lại kết quả cũ.
- Khi ghi dữ liệu, dùng thao tác "cập nhật hoặc thêm" theo khoá, thay vì luôn thêm mới.
Trong Dòng Tiền Pro
- Webhook mang
webhook-idtheo Standard Webhooks; gửi lại giữ nguyên mã. - Ghi sổ ra Google Sheets và Lark Base khoá theo
tx_id, nên gửi lại chỉ cập nhật dòng cũ. - Cùng một giao dịch đến từ nhiều kênh được gộp thành một dòng.
Câu hỏi thường gặp
Lưu mã đã xử lý trong bao lâu?
Ít nhất lâu hơn khoảng thời gian bên gửi còn thử lại. Lưu theo mã giao dịch thì có thể giữ lâu dài.
Idempotency có thay được kiểm chữ ký không?
Không. Kiểm chữ ký xác định ai gửi; idempotency xác định sự kiện đã xử lý chưa.

