會員API
將會員資料推送進 iftek 平台。平台會依「手機號碼」自動判斷要新增還是更新會員(upsert)。
目錄
總覽
| 項目 | 內容 |
|---|---|
| 用途 | 由貴公司系統將會員資料匯入 iftek 平台 |
| 方法 | POST |
| 端點 | /api/v1/openApi/memberInfo |
| 內容格式 | application/json |
| 行為 | 依手機號碼自動 新增或更新(upsert) |
快速開始
curl -X POST https://<iftek-host>/api/v1/openApi/memberInfo \
-H "Content-Type: application/json" \
-H "Authorization: company-auth-token-xxxxx" \
-d '{
"memName": "王小明",
"memMobile": "0912345678",
"memEmail": "[email protected]"
}'
成功時回應:
{ "status": "success" }
認證
- 每個請求都必須在 HTTP header 帶上
Authorization,平台會用它識別對應的公司。 - 此 token 由 iftek 提供,請妥善保管,勿外洩。
| Header | 必填 | 說明 |
|---|---|---|
Authorization |
✅ | 公司授權 token(用於識別公司) |
Content-Type |
✅ | application/json |
| 狀況 | 回應 |
|---|---|
| token 有效 | 200,{ "status": "success" } |
| token 無效 / 未授權 | 403(error token) |
新增 / 更新 判斷邏輯
| 情況 | 結果 |
|---|---|
有帶 memMobile,且查到既有會員 |
更新該會員 |
有帶 memMobile,但查不到 |
新增會員 |
未帶 memMobile |
一律視為新增(無法比對既有會員) |
💡 若希望走「更新」流程,請務必帶上正確的
memMobile。
請求格式
請求 body 是一個 JSON 物件,每個 key 可以是「系統預設欄位」或「自訂欄位」。
⚠️ 更新為全量覆蓋:更新既有會員時,未帶到的欄位會被清空。即使只想修改單一欄位,也請把該會員的完整資料一起帶上。
💡 至少需提供一項聯絡方式(手機、電話、Email、LINE、Facebook、IG、WhatsApp、QQ、Skype、微信、第三方客戶編號 擇一)。
系統預設欄位
使用 camelCase 名稱,value 為字串。
| 欄位 | 說明 | 必填 |
|---|---|---|
memMobile |
手機號碼(新增/更新的比對鍵) | 建議 |
memName |
客戶姓名 | |
memFirstName |
名字 | |
memLastName |
姓氏 | |
memNickName |
暱稱 | |
memSex |
性別 | |
memBirthday |
生日(西元,yyyy-MM-dd) |
|
memTel |
電話 | |
memEmail |
||
memCountry |
客戶國別 | |
memServiceUnit |
服務單位 | |
memCare |
貼心服務 | |
memRemark |
備註 | |
memEdm |
是否訂閱 EDM | |
memSms |
是否接收簡訊 | |
isBlacklist |
是否為黑名單 | |
noMarketing |
行銷勿用 | |
thirdPartyCustomerId |
第三方客戶編號 | |
memLine |
LINE | |
memFb |
||
memIg |
||
memWhatsapp |
||
memWechat |
微信 | |
memSkype |
Skype | |
memQq |
介紹人欄位(會員有介紹人時填寫):
| 欄位 | 說明 |
|---|---|
introducerType |
介紹人身份 |
introducerName |
介紹人姓名 |
introducerMobile |
介紹人電話 |
introducerMemNum |
介紹會員流水號(數字;介紹人身份為「會員」時使用) |
referralDate |
介紹日期 |
地址欄位(請一律傳「名稱」,平台會自動對應):
| 欄位 | 說明 |
|---|---|
memCity |
城市名稱,例 "臺北市" |
memZone |
區域名稱,例 "中正區" |
memRoad |
道路名稱,例 "忠孝東路" |
memAddress |
詳細地址,例 "忠孝東路一段1號" |
標籤 / 分店 / 照片(格式較特殊):
| 欄位 | 格式 | 說明 |
|---|---|---|
memTagList |
陣列 | 會員標籤清單;元素可為標籤名稱(字串)或標籤編號(數字),例 ["VIP", 101] |
memStoreList |
陣列 | 會員所屬分店清單;元素可為分店代號(字串)或分店編號(數字),例 ["STORE_A", 10] |
memPhoto |
陣列 / 字串 | 上傳新照片:[{ "name": "檔名", "base64": "圖片內容" }](base64 可含 data:...;base64, 前綴);若要沿用原本照片,把先前我們提供的照片路徑字串原樣帶回即可;不帶則不設定照片。 |
自訂欄位
key 使用貴公司在「會員設定頁」設定的 apiCode,平台會自動對應回內部欄位。
value 格式依該欄位類型(mscType)而定:
| mscType | 類型 | value 格式 | 範例 |
|---|---|---|---|
| 1 | 西元日期 | 物件 { "gregorianDate": "yyyy-MM-dd" } |
{"gregorianDate":"2024-03-15"} |
| 2 | 農曆 | 物件 { "yearCyclical", "monthCode", "lunarDay" } |
{"yearCyclical":"甲子","monthCode":"4X","lunarDay":15} |
| 3 | 文字框 | 字串 | "自由輸入" |
| 4 | 文字區域 | 字串 | "多行文字" |
| 5 | 城市 | 城市名稱(字串) | "臺北市" |
| 6 | 區域 | 區域名稱(字串) | "中正區" |
| 7 | 道路 | 道路名稱(字串) | "忠孝東路" |
| 8 | 地址 | 字串 | "忠孝東路一段1號" |
| 9 | 郵遞區號 | 字串 | "100" |
| 10 | 特殊標籤 | 暫不支援匯入(傳了會被忽略) | — |
農曆 monthCode 規則: "4" = 4 月、"4X" = 閏 4 月;lunarDay 為數字。
地址群組自訂欄位: 若貴公司把城市/區域/道路設定為同一組「地址群組」,請用群組中城市欄位的 apiCode 當 key,value 傳一個名稱物件:
{
"city": "臺北市",
"zone": "中正區",
"road": "忠孝東路",
"addressDt": "忠孝東路一段1號",
"zip": "100"
}
回應
| HTTP 狀態 | 說明 | Body |
|---|---|---|
200 |
匯入成功 | { "status": "success" } |
403 |
token 無效 / 未授權 | error token |
完整範例
Headers
POST /api/v1/openApi/memberInfo
Authorization: company-auth-token-xxxxx
Content-Type: application/json
Body
{
"memName": "王小明",
"memFirstName": "小明",
"memLastName": "王",
"memNickName": "明哥",
"memMobile": "0912345678",
"memTel": "0223456789",
"memEmail": "[email protected]",
"memSex": "1",
"memBirthday": "1990-01-01",
"memCountry": "TW",
"memServiceUnit": "台北門市",
"memCare": "Y",
"memRemark": "VIP 客戶,生日當月贈禮",
"memEdm": "Y",
"memSms": "Y",
"isBlacklist": "N",
"noMarketing": "N",
"thirdPartyCustomerId": "CRM-100123",
"memLine": "ming_line",
"memFb": "ming.fb",
"memIg": "ming.ig",
"memWhatsapp": "0912345678",
"memWechat": "ming_wechat",
"memSkype": "ming.skype",
"memQq": "123456789",
"introducerType": "0",
"introducerName": "李大華",
"introducerMobile": "0922333444",
"referralDate": "2024-01-10",
"memCity": "臺北市",
"memZone": "中正區",
"memRoad": "忠孝東路",
"memAddress": "忠孝東路一段1號",
"memTagList": ["VIP", 101],
"memStoreList": ["STORE_A", 10],
"memPhoto": [
{ "name": "avatar.png", "base64": "data:image/png;base64,iVBORw0KGgoAAAANSUh..." }
],
"custom_text_field": "自由輸入內容",
"custom_textarea_field": "第一行\n第二行",
"custom_gregorian_field": { "gregorianDate": "2024-03-15" },
"custom_lunar_field": {
"yearCyclical": "甲子",
"monthCode": "4X",
"lunarDay": 15
},
"custom_city_field": "臺北市",
"custom_zone_field": "中正區",
"custom_road_field": "忠孝東路",
"custom_address_field": "忠孝東路一段1號",
"custom_zipcode_field": "100",
"custom_address_group": {
"city": "臺北市",
"zone": "中正區",
"road": "忠孝東路",
"addressDt": "忠孝東路一段1號",
"zip": "100"
}
}
注意事項
- ⚠️ 西元日期、農曆必須傳「物件」,不可傳純字串,否則會解析失敗並回錯誤。
- 城市 / 區域 / 道路請一律傳「名稱」(如
"臺北市"),平台會自動對應。 - ⚠️ 更新為全量覆蓋:更新時未帶到的欄位會被清空,請帶上完整會員資料。
- 至少需提供一項聯絡方式(手機 / 電話 / Email / LINE / Facebook / IG / WhatsApp / QQ / Skype / 微信 / 第三方客戶編號 擇一)。
- 特殊標籤(mscType 10)目前暫不支援匯入,傳了會被忽略。
- 必填欄位由平台檢核,不合法會回錯誤。