Wixtar Member Transactions
Description
Wixtar 全通路會員中介平台 - 會員消費記錄查詢 API。提供外部平台查詢會員在指定日期範圍內之消費明細紀錄 (GET /v1/public/members/transactions)。
業務與運算邏輯
- 查找優先序:
vip_id → mobile → external_platform + external_card_no → identity_type + identity_value,取首個有值者發送。
- 日期區間:
sdate (起始日期) 與 edate (結束日期) 為必填,格式為 YYYY-MM-DD。
- 門市與品牌篩選:可代入
shop_id 過濾門市;brand_id 未帶時預設取 token_brand_id 或集團範圍。
Resource
GET /v1/member/wixtar/transactions
Authorization
採用 OAuth 2.0 Bearer Token(全通路 Token),並支援以下兩種 Wixtar 認證模式(兩者擇一提供):
* 模式 1 (裝置端自管 Token,推薦):於 Header 帶入 X-Member-Center-Token(由 Wixtar Member Token 取得),此時 X-Client-Id 與 X-Shop-Id 為選填。
* 模式 2 (後端代管 Token,向後相容):未帶入 X-Member-Center-Token 時,必須在 Header 提供 X-Client-Id 與 X-Shop-Id,全通路將自動依後台設定與 Redis 快取代管換發 Token。
認證模式二擇一:若提供 X-Member-Center-Token,則 X-Client-Id 與 X-Shop-Id 為選填;若未提供 X-Member-Center-Token,則 X-Client-Id 與 X-Shop-Id 為必填。
| Name |
Type |
Description |
| X-Member-Center-Token |
string |
(optional) 裝置端自管之 Wixtar Access Token (由 POST /v1/member/wixtar/token 取得)。若有提供則優先以此 Token 轉發 Wixtar |
| X-Client-Id |
string |
(optional/條件必填) POS 機或呼叫端設備代碼。若未提供 X-Member-Center-Token 則為必填 |
| X-Shop-Id |
string |
(optional/條件必填) 門市代碼。若未提供 X-Member-Center-Token 則為必填 |
Query Parameters
| Name |
Type |
Description |
| sdate |
string |
起始日期 (YYYY-MM-DD 格式,必填) |
| edate |
string |
結束日期 (YYYY-MM-DD 格式,必填) |
| vip_id |
string |
(optional) 會員編號 (查找鍵之一,優先序 1) |
| mobile |
string |
(optional) 手機號碼 (查找鍵之一,優先序 2) |
| external_platform |
string |
(optional) 外部平台代碼 (查找鍵之一,須搭配 external_card_no,優先序 3) |
| external_card_no |
string |
(optional) 外部會員卡號 (查找鍵之一,須搭配 external_platform,優先序 3) |
| identity_type |
string |
(optional) 身分綁定類型 (查找鍵之一,須搭配 identity_value;2=LINE UID,優先序 4) |
| identity_value |
string |
(optional) 身分綁定值 (查找鍵之一,須搭配 identity_type,優先序 4) |
| brand_id |
string |
(optional) 品牌編號 |
| shop_id |
string |
(optional) 門市代號 |
Request Example
GET /v1/member/wixtar/transactions?vip_id=CM00000001&sdate=2026-06-01&edate=2026-06-30 HTTP/1.1
Host: localhost:5000
Authorization: Bearer <YOUR_ACCESS_TOKEN>
Response Body Parameters
| Name |
Type |
Description |
| status |
integer |
HTTP 狀態碼 (例如: 200) |
| code |
string |
業務回應代碼 (成功為 "000000") |
| message |
string |
回應訊息 (例如: "Success") |
| data |
Data |
主要業務資料內容 |
Response Body Parameters - Data
| Name |
Type |
Description |
| items |
Items[] |
交易記錄清單 |
Response Body Parameters - Items
| Name |
Type |
Description |
| sale_id |
string |
交易單號 |
| brand_id |
string |
品牌代號 |
| shop_id |
string |
門市代號 |
| sale_date |
string |
銷售日期(YYYY-MM-DD HH:mm:ss) |
| tot_sales |
number |
銷售金額 |
| bonuspt_point |
integer |
累積點數 |
| redeem_point |
integer |
折抵點數 |
| status |
string |
交易狀態:1=存檔;2=核准;3=作廢;4=結案;5=已匯整;6=已配貨 |
Response Example - Http Code = 200
{
"status": 200,
"code": "000000",
"message": "Success",
"data": {
"items": [
{
"sale_id": "SALE20260622001",
"brand_id": "24436074",
"shop_id": "S001",
"sale_date": "2026-06-22 10:30:00",
"tot_sales": 1500.0,
"bonuspt_point": 15,
"redeem_point": 0,
"status": "2"
}
]
}
}
Response Example 錯誤回應 - 400 Pydantic參數驗證(必填欄位缺漏)
{
"status": 200,
"code": "400",
"message": "缺少必填欄位:sdate(欄位代號:sdate);缺少必填欄位:edate(欄位代號:edate)",
"data": {
"errors_zh": [
"缺少必填欄位:sdate(欄位代號:sdate)",
"缺少必填欄位:edate(欄位代號:edate)"
],
"errors": [
{
"type": "missing",
"loc": [
"query",
"sdate"
],
"msg": "Field required",
"input": {}
},
{
"type": "missing",
"loc": [
"query",
"edate"
],
"msg": "Field required",
"input": {}
}
]
}
}
Response Example 錯誤回應 - 400 external欄位不成對
{
"status": 200,
"code": "400",
"message": "external_platform 與 external_card_no 必須同時提供或同時省略"
}
{
"status": 200,
"code": "400",
"message": "external_platform 不合法,合法值為:1~13"
}
Response Example 錯誤回應 - 400 identity欄位不成對
{
"status": 200,
"code": "400",
"message": "identity_type 與 identity_value 必須同時提供或同時省略"
}
Response Example 錯誤回應 - 400 identity_type不合法
{
"status": 200,
"code": "400",
"message": "identity_type 不合法,本 API 僅支援 2(會員載具)"
}
Response Example 錯誤回應 - 400 查找鍵全空
{
"status": 200,
"code": "400",
"message": "vip_id、mobile、external_platform + external_card_no、identity_type + identity_value 至少填一個"
}
Response Example 錯誤回應 - 400 sdate格式錯誤
{
"status": 200,
"code": "400",
"message": "sdate 格式須為 YYYY-MM-DD"
}
Response Example 錯誤回應 - 400 edate格式錯誤
{
"status": 200,
"code": "400",
"message": "edate 格式須為 YYYY-MM-DD"
}
Response Example 錯誤回應 - 400 sdate日期不合法
{
"status": 200,
"code": "400",
"message": "sdate 日期不合法"
}
Response Example 錯誤回應 - 400 edate日期不合法
{
"status": 200,
"code": "400",
"message": "edate 日期不合法"
}
Response Example 錯誤回應 - 400 identity查詢需帶brand_id
{
"status": 200,
"code": "400",
"message": "identity 查詢需帶 brand_id 或使用集團 Token"
}
Response Example 錯誤回應 - 404 查無對應會員
{
"status": 200,
"code": "404",
"message": "查無對應會員"
}