CRMGiao dịch cộng điểm
Cộng điểm từ đơn hàng
Tạo giao dịch cộng điểm tự động dựa trên đơn hàng đã thanh toán và giao thành công.
Endpoint
POST /v1/loyaltypointearns/fromorder
Quyền: Chỉ dành cho Trusted Access (gọi nội bộ giữa các service). Không yêu cầu
customerpoint.manage.
Workflow & Logic
API này được gọi từ luồng xử lý đơn hàng sau khi đơn đã hoàn tất thanh toán và giao hàng.
Quy trình xử lý
- Validate đơn hàng: Kiểm tra đơn tồn tại, thuộc đúng công ty, đã thanh toán (
payment_status = completed) và đã giao (shipping_status = delivered). - Kiểm tra trùng: Không cho phép cộng điểm lần thứ hai cho cùng một đơn hàng.
- Đọc cấu hình: Lấy
point_formulavàpoint_order_reward_durationtừ setting của công ty. - Tính điểm:
points_earned = floor(price_final_fulfilled / point_formula). - Ghi giao dịch: Tạo bản ghi
LoyaltyPointEarnvớitype = TYPE_ORDER,mode = MODE_AUTO. - Cập nhật thống kê: Cập nhật tổng điểm khách hàng.
- Webhook đơn hàng: Gửi PATCH cập nhật
date_point_earnedcho đơn hàng.
Body Parameters
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
order_id | int | Có | ID đơn hàng cần tích điểm |
Request Payload
{
"order_id": 556677
}Response Schema
HTTP 201 - JSON Object
Trả về object LoyaltyPointEarn vừa tạo.
Error Codes
| HTTP | Code | Mô tả |
|---|---|---|
| 422 | error_order_id_required | Thiếu ID đơn hàng |
| 422 | error_order_notfound | Không tìm thấy đơn hàng |
| 422 | error_order_not_paid | Đơn hàng chưa thanh toán |
| 422 | error_order_not_delivered | Đơn hàng chưa giao |
| 422 | error_customer_notfound | Khách hàng của đơn không hợp lệ |
| 422 | error_order_already_earned | Đơn hàng đã được tích điểm trước đó |
| 422 | error_settings_notfound | Không tìm thấy cấu hình điểm của công ty |
| 422 | error_point_formula_invalid | Công thức tính điểm (point_formula) không hợp lệ |
| 500 | error_add | Lỗi khi thêm mới |