Chống tạo trùng

Dùng external_id để gửi lại an toàn khi lỗi mạng mà không tạo hóa đơn thứ hai.

external_id là chìa khóa chống trùng. Cùng một giao dịch, bạn luôn gửi cùng một external_id.

Bạn gửi

NexERP trả

external_id mới

202, tạo hóa đơn

external_id đã có, nội dung giống lần trước

200 và hóa đơn cũ, không tạo thêm

external_id đã có, nội dung khác

409 invoice.external_id_conflict

Thế nào là giống

NexERP so nội dung đã chuẩn hóa, không so từng ký tự.

  • "3.740000" và "3.74" là một.

  • Khoảng trắng trong JSON không có ý nghĩa.

Khi lỗi mạng

Gặp lỗi mạng, timeout hoặc 5xx thì cứ gửi lại y hệt. Không bao giờ sinh external_id mới cho cùng một giao dịch.

Hai request song song cùng external_id cũng chỉ ra một hóa đơn.

Giao dịch bơm

id_log của giao dịch bơm chống trùng theo cùng quy tắc. id_log và external_id dùng chung một không gian mã: mã đã dùng ở đường này thì không dùng lại ở đường kia (409).

Lưu ý

  • external_id chống trùng theo doanh nghiệp và ứng dụng, kể cả khi khóa bị thu hồi rồi cấp lại cho cùng ứng dụng.

  • Giao dịch mới thì dùng external_id mới. Gửi lại giao dịch cũ thì gửi đúng nội dung cũ.