---
# System prepended metadata

title: Open Point 兌換點數

---

# Open Point 兌換點數

## v3/beforeOrdering

- request body
    - 新增
        - use_op : integer
- response body
    - 新增
        - have_op : float
        - use_op : integer

- Spec.
    - 點數折抵 1:1
    - 點數折抵優先權 運費 > 服務費 > 餐點費

```
* 點數無法折抵時，會回傳新的 disallow_reason
```


## v3/ordering

- request body
    - 新增
        - use_op : integer

- Spec.
    - 點數折抵 1:1
    - 點數折抵優先權 運費 > 服務費 > 餐點費

```
* 點數使用失敗時 roll back 回應下單失敗
```

## refund 

- N/A


## Test Case

- 進結帳頁有正確取得剩餘 OP 點數
- 用戶嘗試輸入大於剩餘點數的數字
- 下單有折抵點數
- 下單折抵點數失敗 (點數不足)


## 折抵公式

- OP  1 : 5 元

    - 兌點 必須 是整數
    - Total  400 (325 + 70 + 5)
    - -300 = 60 point
    - cash = 100

- item 
    - A 73
    - B
        - 252 = 100 cash + 31 point => 255
        - 252 = 50 point + 2 cash => 50 * 5 + 2

- Current:
    - 252 - 100 = 152 -> cash : 100
    - 152 / 5 = 30.4 ~= 30 -> point : 30

- Adjust:
    - 252 / 1.5 = 50 -> point : 50
    - 252 - (50 * 1.5) = 2 -> cash : 2