CRMGiao dịch trừ điểm
Trừ điểm từ đơn hàng
Tạo giao dịch trừ điểm tự động khi khách hàng dùng điểm để thanh toán đơn hàng.
Endpoint
POST /v1/loyaltypointredeems/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 khi khách hàng sử dụng điểm tích lũy để giảm giá.
Quy trình xử lý
- Validate đơn hàng: Kiểm tra đơn tồn tại, có
redeem_points > 0, chưa từng trừ điểm (date_point_redeemed = 0). - Kiểm tra số dư: So sánh
redeem_pointscủa đơn với điểm khả dụng của khách hàng. - Trừ theo FIFO: Phân bổ điểm từ các lô tích còn hạn, ưu tiên lô sắp hết hạn.
- Ghi giao dịch: Tạo
LoyaltyPointRedeem(type = TYPE_PAYMENT_ORDER,mode = MODE_AUTO) và các bản ghi chi tiết. - Cập nhật thống kê khách hàng.
- Webhook đơn hàng: Gửi PATCH cập nhật
date_point_redeemedcho đơ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 trừ điểm |
Request Payload
{
"order_id": 556677
}Response Schema
HTTP 200 - JSON Object
Trả về object kết quả xử lý FIFO. Xem mục Response khi tạo mới (POST) trong LoyaltyPointRedeem Object Schema.
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_redeemable | Đơn hàng không có điểm để trừ |
| 422 | error_order_not_delivered | Đơn hàng đã trừ điểm trước đó hoặc trạng thái không hợp lệ |
| 422 | error_customer_notfound | Khách hàng của đơn không hợp lệ |
| 422 | error_order_already_redeemed | Đơn hàng đã được trừ điểm |
| 422 | error_order_redeem_points_exceeds_available_points | Số điểm trên đơn vượt quá điểm khả dụng |