Gửi giao dịch bơm
Phần mềm trụ bơm gửi từng giao dịch hoặc cả lô; cửa hàng xuất hóa đơn trên NexERP.
Phần mềm trụ bơm chỉ gửi dữ liệu bơm. Cửa hàng xuất hóa đơn từ dữ liệu đó trên NexERP.
Hai endpoint, cùng phạm vi invoices.write:
Endpoint | Chức năng |
|---|---|
| Gửi một giao dịch |
| Gửi một lô, tối đa 100 giao dịch |
Cách hoạt động
NexERP ghi nhận giao dịch rồi trả về ngay. Request không chờ lập hóa đơn.
Giao dịch vào hàng chờ của cửa hàng. Nhân viên bấm xuất hóa đơn, nhập mã số thuế khi khách cần.
Hết thời gian giữ mà chưa ai xuất, NexERP tự xuất cho người tiêu dùng. Doanh nghiệp tự đặt thời gian giữ, 0 đến 60 phút, mặc định 30 phút. Không giữ qua ngày.
Gửi lại cùng
id_logkhông tạo giao dịch thứ hai.
Gửi một giao dịch
POST https://api-demo.nexerp.vn/api/open/v1/pump-logsHeader | Giá trị |
|---|---|
| Khóa API |
|
|
Thân request là một giao dịch. Ý nghĩa từng trường ở bài Các trường giao dịch bơm.
{
"id_log": "CH01-V03-20261028-000123",
"store_code": "CH01",
"fuel_code": "RON95",
"nozzle_code": "V03",
"unit_price": 21610,
"liters": "4.627",
"amount": 100000,
"pumped_at": "2026-10-28T10:45:00+07:00"
}curl -s -X POST "$BASE/pump-logs" \
-H "X-Api-Key: $KEY" -H "Content-Type: application/json" \
-d '{
"id_log": "CH01-V03-20261028-000123",
"store_code": "CH01",
"fuel_code": "RON95",
"nozzle_code": "V03",
"unit_price": 21610,
"liters": "4.627",
"amount": 100000,
"pumped_at": "2026-10-28T10:45:00+07:00"
}'Mã HTTP | Khi nào | Thân |
|---|---|---|
202 | Giao dịch mới được ghi nhận | |
200 | Gửi lại y hệt một giao dịch đã có | Khối của giao dịch cũ |
409 |
| Khung lỗi, mã |
4xx khác | Dữ liệu sai, khóa sai, cửa hàng không được phép | Khung lỗi, xem Mã lỗi |
Gửi một lô
POST https://api-demo.nexerp.vn/api/open/v1/pump-logs/batchThân request có một trường logs: mảng các giao dịch, mỗi phần tử giống hệt thân của POST /pump-logs.
{
"logs": [
{ "id_log": "CH01-V03-20261028-000123", "store_code": "CH01", "fuel_code": "RON95", "nozzle_code": "V03",
"unit_price": 21610, "liters": "4.627", "amount": 100000, "pumped_at": "2026-10-28T10:45:00+07:00" },
{ "id_log": "CH01-V01-20261028-000124", "store_code": "CH01", "fuel_code": "DO005S", "nozzle_code": "V01",
"unit_price": 19850, "liters": "10.076", "amount": 200000, "pumped_at": "2026-10-28T10:46:12+07:00" }
]
}Phản hồi 200, kết quả từng phần tử theo đúng thứ tự gửi:
{
"received": 2,
"accepted": 1,
"duplicate": 0,
"rejected": 1,
"results": [
{ "id_log": "CH01-V03-20261028-000123", "status": "accepted", "id": "5d0f1c3a-8e2b-4b7a-9c61-0a4f2e7d9b10" },
{ "id_log": "CH01-V01-20261028-000124", "status": "rejected",
"error": { "code": "log.fuel_code_unknown", "message": "Mã nhiên liệu «DO005S» chưa được khai trong bảng nhiên liệu của quyền tích hợp — doanh nghiệp cần khai trên NexERP trước.", "details": { "fuel_code": "DO005S" } } }
]
}Trường | Kiểu | Ý nghĩa |
|---|---|---|
| số nguyên | Số phần tử trong lô |
| số nguyên | Số giao dịch mới được ghi nhận |
| số nguyên | Số giao dịch gửi lại y hệt, đã có từ trước |
| số nguyên | Số phần tử bị từ chối |
| chuỗi hoặc |
|
| chuỗi |
|
| chuỗi UUID | Mã NexERP của giao dịch. Không có khi |
| đối tượng | Chỉ có khi |
Quy tắc của lô:
Mỗi phần tử được kiểm và ghi riêng. Phần tử lỗi không làm mất phần tử khác.
Hai phần tử trùng
id_logtrong cùng lô: phần tử sau bị từ chối với mãlog.duplicate_in_batch.Cả request bị từ chối khi: khóa sai,
logsrỗng hoặc không phải mảng (422request.invalid), hơn 100 phần tử (413request.too_many_logs).Chỉ gửi lại các phần tử
rejectedsau khi sửa.
Lưu ý
Lô chỉ giảm số request, không làm hóa đơn ra nhanh hơn. Mỗi cửa hàng phát hành khoảng một hóa đơn mỗi 20 giây.
Gửi đều theo nhịp vài giây một lô nhỏ. Đừng dồn lô lớn sau khi mất mạng lâu.
Một lô tính là một request trong giới hạn tần suất.