# 會員卡 --- - 常數定義 - [會員卡類型](#會員卡類型) - [會員卡效期類型](#會員卡效期類型) - [會員卡狀態](#會員卡狀態) - API 清單 - 會員卡管理[WEB] - [會員卡管理列表](#會員卡管理列表) - [取得會員卡管理明細](#取得會員卡管理明細) - [取得上傳網址](#取得上傳網址) - [新增會員卡](#新增會員卡) - [編輯會員卡](#編輯會員卡) - [編輯會員卡狀態](#編輯會員卡狀態) - [刪除會員卡](#刪除會員卡) - App端 - [取得會員卡列表](#取得會員卡列表) - [取得我的會員卡明細](#取得我的會員卡明細) - [購買會員卡](#購買會員卡) --- ## 常數定義 ### 會員卡類型 欄位 | 型態 | 說明 ---|---|--- levelType | string | 會員卡類型, NORMAL: 一般會員(seq=1), SILVER: 銀卡會員(seq=2), GOLD:金卡會員(seq=3) ### 會員卡效期類型 欄位 | 型態 | 說明 ---|---|--- periodType | string | 會員卡效期類型, YEAR: 年, MONTH: 月 ### 會員卡狀態 欄位 | 型態 | 說明 ---|---|--- status | string | 會員卡狀態, NONE: 未啟用, ON:已啟用, OFF:停用 --- # API 清單 ## 會員卡管理[WEB] ### 會員卡管理列表 ```url POST /member-card-mgmt/list ``` #### Request-會員卡管理列表 ##### Request-會員卡管理列表-query (查詢條件json) 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- levelType | string | | 10 | | 會員卡類型, 未填則表示查詢全部, 參閱 [會員卡類型](#會員卡類型) startDate | string | | 10 | | 啟用期間起始日期, YYYY-MM-DD endDate | string | | 10 | | 啟用期間結束日期, YYYY-MM-DD status | string | | 10 | | 會員卡狀態, 未填則表示查詢全部, 參閱 [會員卡狀態](#會員卡狀態) ##### Request-會員卡管理列表-pagination (分頁json) 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- current | int | | 1 | 當前頁數 pageSize | int | | 10 | 每頁結果數量,-1 為顯示所有 ##### Request-會員卡管理列表-sorter (排序json) 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- field | string | | updateTime | 排序欄位,可排序欄位有 levelType, price, period, periodType, discount, isHot, upgradePoints, onDateTime, offDateTime, memberCount, status, updateTime order | string | | desc | 升序或降序 ```javascript { "query": { "levelType": null, "startDate": null, "endDate": null, "status": null } , "pagination": { "current": 1, "pageSize": 10 }, "sorter": { "field": "updateTime", "order": "desc" } } ``` #### Response-會員卡管理列表 欄位 | 型態 | 說明 --- | --- | --- id | string | 會員卡id levelType | string | 會員卡類型, 參閱 [會員卡類型](#會員卡類型) isHot | boolean | 熱門選項 price | decimal | 售價 period | int | 會員卡效期 periodType | string | 會員卡效期類型, 參閱 [會員卡效期類型](#會員卡效期類型) thumbnailUrl | string | 縮圖url discount | decimal | 會員優惠折扣 upgradePoints | int | 升等贈點 onDateTime | timestamp | 最近一筆啟用時間 offDateTime | timestamp | 最近一筆停用時間 memberCount | int | 會員數量 status | string | 會員卡狀態, 參閱 [會員卡狀態](#會員卡狀態) updateTime | timestamp | 更新日期時間 ```javascript { "httpCode": 200, "result": { "data": [ { "thumbnailUrl": "http://content-service/swift/v1/member_card/thumbnail/08deac5e-c1e6-4c54-b45c-7f54163186cf.png", "id": "1c4ff6b4-afe6-4977-9131-1f1b809bd862", "levelType": "NORMAL", "isHot": false, "price": 0, "period": 1, "periodType": "YEAR", "discount": 0, "upgradePoints": 0, "status": "ON", "updateTime": 1673578874366, "onDatetime": 1673578874366, "offDateTime": 1673578846985, "memberCount": 354 }, ... ], "pagination": { "current": 1, "pageSize": 10 }, "sorter": { "field": "updateTime", "order": "desc" } } } ``` ### 取得會員卡管理明細 ```url POST /member-card-mgmt/info ``` #### Request-取得會員卡管理明細 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- id | string | Y | 36 | | 會員卡id ```javascript { "id": "1c4ff6b4-afe6-4977-9131-1f1b809bd862" } ``` #### Response-取得會員卡管理明細 欄位 | 型態 | 說明 --- | --- | --- id | string | 會員卡id levelType | string | 會員卡類型, 參閱 [會員卡類型](#會員卡類型) isHot | boolean | 熱門選項 price | decimal | 售價 period | int | 會員卡效期 periodType | string | 會員卡效期類型, 參閱 [會員卡效期類型](#會員卡效期類型) thumbnailUrl | string | 縮圖url discount | decimal | 會員優惠折扣 contentZh | string | 內容描述(中文) contentEn | string | 內容描述(英文) upgradePoints | int | 升等贈點 status | string | 會員卡狀態, 參閱 [會員卡狀態](#會員卡狀態) createTime | timestamp | 建立日期時間 updateTime | timestamp | 更新日期時間 historyList | json array | 啟用停用json array ##### Response-取得會員卡管理明細-historyList(json) 欄位 | 型態 | 說明 --- | --- | --- memberCardId | string | 會員卡id status | string | 會員卡狀態, 參閱 [會員卡狀態](#會員卡狀態) dateTime | timestamp | 啟用/停用 時間 ```javascript { "httpCode": 200, "result": { "data": { "thumbnailUrl": "http://content-service/swift/v1/member_card/thumbnail/08deac5e-c1e6-4c54-b45c-7f54163186cf.png", "id": "1c4ff6b4-afe6-4977-9131-1f1b809bd862", "levelType": "NORMAL", "isHot": false, "price": 0, "period": 1, "periodType": "YEAR", "discount": 0, "contentZh": ".生理量測/步行/飲食健康紀錄\n.健康分析\n.衛教資訊\n.參與線上活動", "contentEn": ". Physiological measurement/walking/diet health records\n. Health analysis\n. Health education information\n. Online activities", "upgradePoints": 0, "status": "ON", "createTime": 1673578295531, "updateTime": 1673578874366, "historyList": [ { "memberCardId": "1c4ff6b4-afe6-4977-9131-1f1b809bd862", "status": "ON", "dateTime": 1673578874366 }, ... ] } } } ``` ### 取得上傳網址 ```url POST /member-card-mgmt/get-upload-url ``` * 新增/編輯會員卡時用來上傳縮圖 #### Request-取得上傳網址 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- isMultipart | boolean | Y | false | 是否使用分段上傳 isThumbnail | boolean | Y | false | 上傳的是否為縮圖 fileName | String | Y | | 檔名,不包含副檔名,限制最多50字 fileType | String | Y | | 副檔名, 限制最多10字 totalPart | int | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | 總分塊數量,不可小於2 parts | Array [...part] | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | part 資訊 ##### Request-取得上傳網址-part(Object) 欄位 | 型態 | 必填 | 預設 | 說明 ---|---|---|---|--- chunkSize | int | Y | | 該 chunk 的大小, bytes md5 | string | Y | | 該 part 的 md5 part | int | Y | | part number, 第幾塊 chunk ```javascript // 單檔 { isMultipart: false, fileName: member_card_test-2, fileType: png, totalPart: null, parts: [ ], isThumbnail: true } // 分塊上傳 { isMultipart: true, isThumbnail: false, fileName: giphy (7), fileType: mp4, totalPart: 2, parts: [ { chunkSize: 5242880, md5: 5AACA89868CD486D81192221CF9F9415, part: 1 }, { chunkSize: 3145728, md5: 5AACA89868CD486D81192221CF9F9415, part: 2 } ] } ``` ### Response-取得上傳網址 #### Response-取得上傳網址-data 欄位 | 型態 | 說明 --- | --- | --- objectKey | string | storage 中的 objectKey, **unique** uploadId | string | 識別該次上傳的 uploadId fileName | string | 名稱 fileType | string | 副檔名 url | string | 單檔上傳的時候,才會回傳該 url, 時效 3600 秒 parts | [...part] | multipart上傳各part的url #### Response-取得上傳網址-part 欄位 | 型態 | 說明 --- | --- | --- chunkSize | int | 該 chunk 的大小, bytes md5 | string | 該 part 的 md5 part | int | part number, 第幾塊 chunk url | string | 可上傳的 url, 時效 3600 秒 ```javascript // HttpStatus:422, 上傳的檔案類型不允許 { errorMsg: SERVICE_ERROR.UPLOAD_FILE_TYPE_NOT_ALLOWED, httpCode: 422 } // HttpStatus: 200 // 單檔 { httpCode: 200, result: { data: { objectKey: member_card/thumbnail/56ca1cfc-4bcb-4a0a-b079-fd08a0e75a37.png, uploadId: fb483648-25d0-4137-bb49-85c17842a95b, fileName: member_card_test-2, fileType: png, url: http://swift-storage/member_card/thumbnail/56ca1cfc-4bcb-4a0a-b079-fd08a0e75a37.png } } } // 分塊上傳 { httpCode: 200, result: { data: { objectKey: event/f76adf26-1e22-4b18-980d-b9a68efc5171.mp4, uploadId: 53fde368-43d9-455f-a610-62091fc30be6, fileName: giphy (7), fileType: mp4, parts: [ { chunkSize: 5242880, md5: 5AACA89868CD486D81192221CF9F9415, part: 1, url: http://192.168.100.239:12345/v1/AUTH_test/kmuh_segments/event%2Ff76adf26-1e22-4b18-980d-b9a68efc5171.mp4%2F1?temp_url_sig=796c52b00f75b62be658533b2fadbc7f14381e36&temp_url_expires=1554263771 }, { chunkSize: 3145728, md5: 5AACA89868CD486D81192221CF9F9415, part: 2, url: http://192.168.100.239:12345/v1/AUTH_test/kmuh_segments/event%2Ff76adf26-1e22-4b18-980d-b9a68efc5171.mp4%2F2?temp_url_sig=ad71de81dfbcd94bce4a091f2630c6f1373ff3cd&temp_url_expires=1554263771 } ] } } } ``` ### 新增會員卡 ```url POST /member-card-mgmt/add ``` * 目前會員卡只能透過複製現有的會員卡來新增 * 新增的會員卡狀態為NONE: 未啟用 #### Request-新增會員卡 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- levelType | string | Y | 10 | | 會員卡類型, 參閱 [會員卡類型](#會員卡類型), 不可由前端選擇變更 isHot | boolean | Y | | | 熱門選項 price | decimal | Y | | | 會員卡售價 period | int | Y | | | 會員卡效期, 需 > 0 periodType | string | Y | 10 | | 會員卡效期類型, 參閱 [會員卡效期類型](#會員卡效期類型) discount | decimal | Y | | | 會員購物優惠折扣(%) contentZh | string | | 1000 | | 內容描述(中文), 限制最多1000字 contentEn | string | | 1000 | | 內容描述(英文), 限制最多1000字 upgradePoints | int | Y | | | 升等優惠贈點, 0表示無贈點 thumbnailObjectKey | string | Y | 500 | | 縮圖objectKey, 先取得縮圖上傳網址並上傳成功,取其 objectKey。 isThumbnailMultipart | boolean | N | | | 縮圖上傳時是否分塊上傳,預設為 false thumbnailTotalPart | int | **N** (isThumbnailMultipart=false)<br>**Y** (isThumbnailMultipart=true) | | | 縮圖上傳的總分塊數量,不可小於2 thumbnailUploadId | string | **N** (isThumbnailMultipart=false)<br>**Y** (isThumbnailMultipart=true) | | | 從 /member-card-mgmt/get-upload-url 取得的 uploadId ```javascript { "levelType": "NORMAL", "thumbnailObjectKey": "member_card/thumbnail/08deac5e-c1e6-4c54-b45c-7f54163186cf.png", "isHot": false, "price": 0, "period": 1, "periodType": "YEAR", "discount": 0, "contentZh": ".生理量測/步行/飲食健康紀錄\n.健康分析\n.衛教資訊\n.參與線上活動", "contentEn": ". Physiological measurement/walking/diet health records\n. Health analysis\n. Health education information\n. Online activities", "upgradePoints": 0, "isThumbnailMultipart":false, "thumbnailTotalPart": null, "thumbnailUploadId": null } ``` #### Error-新增會員卡 httpCode | 錯誤碼 | 說明 --- | --- | --- 400 | API_ERROR.ARGUMENT_ERROR | 輸入參數錯誤, 可參閱 errorDesc #### Response-新增會員卡 欄位 | 型態 | 說明 --- | --- | --- id | string | 會員卡id levelType | string | 會員卡類型, 參閱 [會員卡類型](#會員卡類型) isHot | boolean | 熱門選項 price | decimal | 售價 period | int | 會員卡效期 periodType | string | 會員卡效期類型, 參閱 [會員卡效期類型](#會員卡效期類型) thumbnailUrl | string | 縮圖url discount | decimal | 會員優惠折扣 contentZh | string | 內容描述(中文) contentEn | string | 內容描述(英文) upgradePoints | int | 升等贈點 status | string | 會員卡狀態, 參閱 [會員卡狀態](#會員卡狀態) creator | string | 建立者 account id updater | string | 更新者 account id createTime | timestamp | 建立日期時間 updateTime | timestamp | 更新日期時間 ```javascript { "httpCode": 200, "result": { "data": { "id": "78df2be7-974c-4441-9f52-82f5a11fc27c", "levelType": "NORMAL", "thumbnailObjectKey": "member_card/thumbnail/08deac5e-c1e6-4c54-b45c-7f54163186cf.png", "isHot": false, "price": 0, "period": 1, "periodType": "YEAR", "discount": 0, "contentZh": ".生理量測/步行/飲食健康紀錄\n.健康分析\n.衛教資訊\n.參與線上活動", "contentEn": ". Physiological measurement/walking/diet health records\n. Health analysis\n. Health education information\n. Online activities", "upgradePoints": 0, "status": "NONE", "createTime": 1673578593509, "updateTime": 1673578593509, "creator": "a1131b35-dab0-4593-899b-9485356e02d4", "updater": "a1131b35-dab0-4593-899b-9485356e02d4" } } } ``` ### 編輯會員卡 ```url POST /member-card-mgmt/update ``` * 編輯會員卡, 不會更新目前狀態 #### Request-編輯會員卡 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- id | string | Y | 36 | | 會員卡id levelType | string | Y | 10 | | 會員卡類型, 參閱 [會員卡類型](#會員卡類型), 不可由前端選擇變更 isHot | boolean | Y | | | 熱門選項 price | decimal | Y | | | 會員卡售價 period | int | Y | | | 會員卡效期, 需 > 0 periodType | string | Y | 10 | | 會員卡效期類型, 參閱 [會員卡效期類型](#會員卡效期類型) discount | decimal | Y | | | 會員購物優惠折扣(%) contentZh | string | | 1000 | | 內容描述(中文), 限制最多1000字 contentEn | string | | 1000 | | 內容描述(英文), 限制最多1000字 upgradePoints | int | Y | | | 升等優惠贈點, 0表示無贈點 thumbnailObjectKey | string | Y | 500 | | 縮圖objectKey, 先取得縮圖上傳網址並上傳成功,取其 objectKey。 isThumbnailMultipart | boolean | N | | | 縮圖上傳時是否分塊上傳,預設為 false thumbnailTotalPart | int | **N** (isThumbnailMultipart=false)<br>**Y** (isThumbnailMultipart=true) | | | 縮圖上傳的總分塊數量,不可小於2 thumbnailUploadId | string | **N** (isThumbnailMultipart=false)<br>**Y** (isThumbnailMultipart=true) | | | 從 /member-card-mgmt/get-upload-url 取得的 uploadId ```javascript { "id": "1c4ff6b4-afe6-4977-9131-1f1b809bd862", "levelType": "NORMAL", "thumbnailObjectKey": "member_card/thumbnail/08deac5e-c1e6-4c54-b45c-7f54163186cf.png", "isHot": false, "price": 0, "period": 1, "periodType": "YEAR", "discount": 0, "contentZh": ".生理量測/步行/飲食健康紀錄\n.健康分析\n.衛教資訊\n.參與線上活動", "contentEn": ". Physiological measurement/walking/diet health records\n. Health analysis\n. Health education information\n. Online activities", "upgradePoints": 0, "isThumbnailMultipart":false, "thumbnailTotalPart": null, "thumbnailUploadId": null } ``` #### Error-編輯會員卡 httpCode | 錯誤碼 | 說明 --- | --- | --- 400 | API_ERROR.NOT_EXIST | 無此筆資料 400 | API_ERROR.ARGUMENT_ERROR | 輸入參數錯誤, 可參閱 errorDesc #### Response-編輯會員卡 欄位 | 型態 | 說明 --- | --- | --- id | string | 會員卡id levelType | string | 會員卡類型, 參閱 [會員卡類型](#會員卡類型) isHot | boolean | 熱門選項 price | decimal | 售價 period | int | 會員卡效期 periodType | string | 會員卡效期類型, 參閱 [會員卡效期類型](#會員卡效期類型) thumbnailUrl | string | 縮圖url discount | decimal | 會員優惠折扣 contentZh | string | 內容描述(中文) contentEn | string | 內容描述(英文) upgradePoints | int | 升等贈點 status | string | 會員卡狀態, 參閱 [會員卡狀態](#會員卡狀態) creator | string | 建立者 account id updater | string | 更新者 account id createTime | timestamp | 建立日期時間 updateTime | timestamp | 更新日期時間 ```javascript { "httpCode": 200, "result": { "data": { "id": "1c4ff6b4-afe6-4977-9131-1f1b809bd862", "levelType": "NORMAL", "thumbnailObjectKey": "member_card/thumbnail/08deac5e-c1e6-4c54-b45c-7f54163186cf.png", "isHot": false, "price": 0, "period": 1, "periodType": "YEAR", "discount": 0, "contentZh": ".生理量測/步行/飲食健康紀錄\n.健康分析\n.衛教資訊\n.參與線上活動", "contentEn": ". Physiological measurement/walking/diet health records\n. Health analysis\n. Health education information\n. Online activities", "upgradePoints": 0, "status": "ON", "createTime": 1673578295531, "updateTime": 1673578512913, "updater": "a1131b35-dab0-4593-899b-9485356e02d4" } } } ``` ### 編輯會員卡狀態 ```url POST /member-card-mgmt/update-status ``` * 同一會員卡類型, 需至少有一個為啟用 * 啟用會員卡時, 會將同類型已啟用會員卡變更為停用 #### Request-編輯會員卡狀態 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- id | string | Y | 36 | | 會員卡id status | string | Y | 10 | | 會員卡狀態, 參閱 [會員卡狀態](#會員卡狀態) ```javascript { "id": "1c4ff6b4-afe6-4977-9131-1f1b809bd862", "status": "ON" } ``` #### Error-編輯會員卡狀態 httpCode | 錯誤碼 | 說明 --- | --- | --- 400 | API_ERROR.NOT_EXIST | 無此筆資料 400 | API_ERROR.ARGUMENT_ERROR | 輸入參數錯誤, 可參閱 errorDesc 422 | SERVICE_ERROR.MEMBER_CARD_MGMT_UPDATE_STATUS_NOT_ALLOWED | 不允許變更會員卡狀態 422 | SERVICE_ERROR.MEMBER_CARD_MGMT_UPDATE_STATUS_OFF_NOT_ALLOWED | 停用會員卡時,同類型會員卡至少需有一張為ON #### Response-編輯會員卡狀態 欄位 | 型態 | 說明 --- | --- | --- id | string | 會員卡id levelType | string | 會員卡類型, 參閱 [會員卡類型](#會員卡類型) isHot | boolean | 熱門選項 price | decimal | 售價 period | int | 會員卡效期 periodType | string | 會員卡效期類型, 參閱 [會員卡效期類型](#會員卡效期類型) thumbnailUrl | string | 縮圖url discount | decimal | 會員優惠折扣 contentZh | string | 內容描述(中文) contentEn | string | 內容描述(英文) upgradePoints | int | 升等贈點 status | string | 會員卡狀態, 參閱 [會員卡狀態](#會員卡狀態) creator | string | 建立者 account id updater | string | 更新者 account id createTime | timestamp | 建立日期時間 updateTime | timestamp | 更新日期時間 ```javascript { "httpCode": 200, "result": { "data": { "id": "1c4ff6b4-afe6-4977-9131-1f1b809bd862", "levelType": "NORMAL", "thumbnailObjectKey": "member_card/thumbnail/08deac5e-c1e6-4c54-b45c-7f54163186cf.png", "isHot": false, "price": 0, "period": 1, "periodType": "YEAR", "discount": 0, "contentZh": ".生理量測/步行/飲食健康紀錄\n.健康分析\n.衛教資訊\n.參與線上活動", "contentEn": ". Physiological measurement/walking/diet health records\n. Health analysis\n. Health education information\n. Online activities", "upgradePoints": 0, "status": "ON", "createTime": 1673578295531, "updateTime": 1673578874366, "updater": "a1131b35-dab0-4593-899b-9485356e02d4" } } } ``` ### 刪除會員卡 ```url POST /member-card-mgmt/delete ``` * 只允許刪除未啟用/已停用會員卡, 且無會員數量的會員卡 #### Request-刪除會員卡 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- id | string | Y | 36 | | 會員卡id ```javascript { "id": "b7d03fb8-5cd5-4d99-8ef0-e199d3a1e8ad" } ``` #### Error-刪除會員卡 httpCode | 錯誤碼 | 說明 --- | --- | --- 400 | API_ERROR.NOT_EXIST | 無此筆資料 422 | SERVICE_ERROR.MEMBER_CARD_MGMT_DELETE_NOT_ALLOWED_STATUS_ON | 不允許刪除已啟用會員卡 422 | SERVICE_ERROR.MEMBER_CARD_MGMT_DELETE_NOT_ALLOWED_HAD_MEMBERS | 不允許刪除會員卡,已有會員 #### Response-刪除會員卡 欄位 | 型態 | 說明 --- | --- | --- count | int | 刪除筆數, > 0 表示成功刪除 ```javascript { httpCode: 200, result: { data: { count: 1 } } } ``` ## App端 ### 取得會員卡列表 ```url POST /member-card/list-available ``` #### Request-取得會員卡列表 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- ```javascript ``` #### Response-取得會員卡列表 欄位 | 型態 | 說明 --- | --- | --- id | string | 會員卡id levelType | string | 會員卡類型, 參閱 [會員卡類型](#會員卡類型) levelSeq | int | 會員卡類型序號, 參閱 [會員卡類型](#會員卡類型) isHot | boolean | 熱門選項 price | decimal | 售價 period | int | 會員卡效期 periodType | string | 會員卡效期類型, 參閱 [會員卡效期類型](#會員卡效期類型) thumbnailUrl | string | 縮圖url discount | decimal | 會員優惠折扣 contentZh | string | 內容描述(中文) contentEn | string | 內容描述(英文) upgradePoints | int | 升等贈點 status | string | 會員卡狀態, 參閱 [會員卡狀態](#會員卡狀態) updateTime | timestamp | 更新日期時間 ```javascript { "httpCode": 200, "result": { "data": [ { "thumbnailUrl": "http://content-service/swift/v1/member_card/thumbnail/08deac5e-c1e6-4c54-b45c-7f54163186cf.png", "id": "1c4ff6b4-afe6-4977-9131-1f1b809bd862", "levelType": "NORMAL", "levelSeq": 1, "isHot": false, "price": 0, "period": 1, "periodType": "YEAR", "discount": 0, "contentZh": ".生理量測/步行/飲食健康紀錄\n.健康分析\n.衛教資訊\n.參與線上活動", "contentEn": ". Physiological measurement/walking/diet health records\n. Health analysis\n. Health education information\n. Online activities", "upgradePoints": 0, "status": "ON", "updateTime": 1673578874366 }, ... ] } } ``` ### 取得我的會員卡明細 ```url POST /member-card/my-card-info ``` #### Request-取得我的會員卡明細 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- ```javascript ``` #### Response-取得我的會員卡明細 欄位 | 型態 | 說明 --- | --- | --- id | string | 會員卡id levelType | string | 會員卡類型, 參閱 [會員卡類型](#會員卡類型) levelSeq | int | 會員卡類型序號, 參閱 [會員卡類型](#會員卡類型) isHot | boolean | 熱門選項 price | decimal | 售價 period | int | 會員卡效期 periodType | string | 會員卡效期類型, 參閱 [會員卡效期類型](#會員卡效期類型) thumbnailUrl | string | 縮圖url discount | decimal | 會員優惠折扣 contentZh | string | 內容描述(中文) contentEn | string | 內容描述(英文) upgradePoints | int | 升等贈點 status | string | 會員卡狀態, 參閱 [會員卡狀態](#會員卡狀態) createTime | timestamp | 建立日期時間 updateTime | timestamp | 更新日期時間 activeTime | timestamp | 會員效期啟始時間 expiredTime | timestamp | 會員效期到期時間 latestPurchaseInfo | json | 最近一筆的會員卡購買記錄json ##### Response-取得我的會員卡明細-最近一筆的會員卡購買記錄json 欄位 | 型態 | 說明 --- | --- | --- id | string | 會員卡歷史記錄id memberCardPurchaseId | string | 會員卡購買記錄id period | int | 會員卡效期 periodType | string | 會員卡效期類型, 參閱 [會員卡效期類型](#會員卡效期類型) upgradePoints | int | 升等贈點 activeTime | timestamp | 會員效期啟始時間 expiredTime | timestamp | 會員效期到期時間 orderType | string | 訂單類型, 此處會是MEMBER_LEVEL: 會員卡 orderNo | string | 訂單號碼 totalAmount | int | 付款金額 paymentType | string | 付款類型, 此處會是ONETIME: 信用卡一次付清 paymentTime | timestamp | 付款完成日期 orderStatus | string | 訂單狀態, NONE:尚未付款, PROCESSING:付款處理中, COMPLETED:付款成功, FAILED:付款失敗 ```javascript { "httpCode": 200, "result": { "data": { "id": "283634a5-aee8-499f-a4cb-7cb27a8048e9", "levelType": "SILVER", "levelSeq": 2, "isHot": false, "price": 1000, "period": 1, "periodType": "YEAR", "discount": 5, "contentZh": ".健康購物享優惠價\r\n.生理量測/步行/飲食健康紀錄\r\n.健康分析\r\n.衛教資訊\r\n.參與線上活動", "contentEn": ". Enjoy discounted prices for healthy shopping\r\n. Physiological measurement/walking/diet health records\r\n. Health analysis\r\n. Health education information\r\n. Online activities", "upgradePoints": 100, "status": "ON", "updateTime": 1673578295531, "activeTime": 1674092963281, "expiredTime": 1705679999999, "latestPurchaseInfo": { "id": "d3fb763d-ff1e-4351-bd38-69bfe8c48f0c", "memberCardPurchaseId": "e6e87252-c14c-425e-81c2-049cf5ec4fd0", "memberCardId": "283634a5-aee8-499f-a4cb-7cb27a8048e9", "period": 1, "periodType": "YEAR", "activeTime": 1674092963281, "expiredTime": 1705679999999, "upgradePoints": 100, "orderType": "MEMBER_LEVEL", "orderNo": "ML2301180001", "paymentTime": 1674028877594, "orderStatus": "COMPLETED", "paymentType": "ONETIME", "totalAmount": 0, "isPaid": true } } } } ``` ### 購買會員卡 ```url POST /member-card/purchase ``` * App端點擊購買/續約後, 呼叫此API, API會回傳訂單info * Android端呼叫綠界SDK執行付款流程, iOS則執行WebView執行付款流程 * 付款完成後才會套用購買的會員卡等級 * 不可降級購買, 可使用levelSeq來判別 #### Request-購買會員卡 欄位 | 型態 | 必填 | 長度限制 | 預設 | 說明 ---|---|---|---|---|--- memberCardId | string | Y | 36 | | 購買/續約的會員卡id invoiceType | string | Y | 10 | | 發票類型. PERSONAL: 個人 DONATION: 捐贈 COMPANY: 企業 loveCode | string | N | 7 | | 捐贈碼, invoiceType=DONATION時必填 carrierNum | string | N | 8 | | 載具編號, invoiceType=PERSONAL時選填 customerIdentifier | string | N | 8 | | 統編, invoiceType=COMPANY時必填 customerName | string | N | 60 | | 公司名稱, invoiceType=COMPANY時必填 customerAddr | string | N | 100 | | 發票寄送地址, invoiceType=COMPANY時必填 customerPhone | string | N | 20 | | 客戶電話, customerEmail為空時必填 customerEmail | string | N | 80 | | 客戶電子信箱, customerPhone為空時必填 ```javascript { "memberCardId": "1c4ff6b4-afe6-4977-9131-1f1b809bd862", "invoiceType": "PERSONAL", "customerPhone": "0987654321" } ``` #### Error-購買會員卡 httpCode | 錯誤碼 | 說明 --- | --- | --- 400 | API_ERROR.NOT_EXIST | 無此筆資料 400 | API_ERROR.ARGUMENT_ERROR | 輸入參數錯誤, 可參閱 errorDesc 422 | SERVICE_ERROR.MEMBER_CARD_PURCHASE_NOT_ALLOWED_NOT_ON_STATUS | 不允許購買會員卡, 會員卡非啟用狀態 422 | SERVICE_ERROR.MEMBER_CARD_PURCHASE_NOT_ALLOWED_DOWN_LEVEL | 不允許降級購買會員卡 422 | SERVICE_ERROR.INVOICE_LOVE_CODE_ERROR | 發票資訊-捐贈碼錯誤 422 | SERVICE_ERROR.INVOICE_BAR_CODE_ERROR | 發票資訊-手機載具錯誤 422 | SERVICE_ERROR.INVOICE_COMPANY_IDENTIFIER_INFO_ERROR | 發票資訊-統編資訊錯誤 422 | SERVICE_ERROR.INVOICE_CUSTOMER_PHONE_EMAIL_NOT_FOUND | 發票資訊-客戶信箱或電話未填 #### Response-購買會員卡 欄位 | 型態 | 說明 --- | --- | --- id | string | 訂單id orderType | string | 訂單類型, 此處會是MEMBER_LEVEL: 會員卡 orderNo | string | 訂單號碼 totalAmount | int | 付款金額 paymentType | string | 付款類型, 此處會是ONETIME: 信用卡一次付清 issueDate | timestamp | 訂單建立日期 orderTime | timestamp | 訂單建立日期時間 orderStatus | string | 訂單狀態, NONE:尚未付款, PROCESSING:付款處理中, COMPLETED:付款成功, FAILED:付款失敗 target | string | 訂單所對應的會員卡購買記錄id householdMemberId | string | householdMemberId itemName | string | 訂單購買項目名稱 createTime | timestamp | 建立日期時間 updateTime | timestamp | 更新日期時間 ```javascript { "httpCode": 200, "result": { "data": { "id": "4b040353-2162-4f69-8620-e563403eb708", "orderType": "MEMBER_LEVEL", "orderNo": "ML2301180001", "totalAmount": 0, "paymentType": "ONETIME", "issueDate": 1673971200000, "orderTime": 1674028877594, "orderStatus": "NONE", "target": "e6e87252-c14c-425e-81c2-049cf5ec4fd0", "householdMemberId": "150b53f5-7126-4900-9fb0-87a08b45e06b", "itemName": "一般會員", "updateTime": 1674028877590, "createTime": 1674028877590 } } } ```