# 合作店家交易資料串接
Custos-Enterprise API-P01
V1.0
鼓勵企業會員之員工前往合作店家消費,並記錄消費細節。企業會員之員工於合作店家之購物平台 (Web/APP) 進行消費,確定交易完成後,由合作店家購物平台系統呼叫此 API,將交易細節如:交易日期、會員資訊、交易金額...等資料拋轉回來,寫入 Custos 資料庫。
[toc]
## 作業啟動
1. 傳入下列參數:
(1) 合作店家企業流水號代碼 (#corp_data_id)
(2) 購買/租賃/維修產品之編號:合作店家自行定義 (#vendor_item_id)
(3) 購買/租賃/維修產品之名稱:合作店家自行定義 (#item_name)
(4) 使用者手機號碼:合作店家經 [API-P02](https://hackmd.io/@custos-it/SJmaUjdD3) 驗證後,存於自身資料庫之 Custos 會員手機號碼 (#to_emp_phone)
(5) 交易行為代碼:購買 = 5、租賃 = 4、維修 = 2、退貨/取消交易 = 7 (#category_id)
(6) 交易金額 (#total_amt)
(7) 交易日期 (#create_date)
(8) 國別語系 (#language_setting)
2. 記錄 SystemLog:合作店家 #corp_data_id|交易資料串接|作業啟動
## API 作業啟動
1. 以傳入之 #員工手機號碼 (#to_emp_phone) 查詢
(1) 員工企業代碼 (#to_corp_id)
(2) 員工企業流水編號 (#to_corp_data_id)
(3) 員工編號 (#to_emp_id)
(4) 員工流水編號 (#to_emp_data_id)
2. 以傳入之 #合作店家企業流水號代碼 (#corp_data_id) 查詢
(1) 合作店家企業代碼 (#corp_id)
(2) 合作店家窗口員工編號 (#emp_id)
(3) 合作店家窗口員工流水編號 (#emp_data_id)
(4) 合作店家窗口手機號碼 (#emp_phone)
(5) 合作店家於 corp_fm_item 資料表上架之物品資料,並取得其 item_image;若有多張則取第一張 (#item_image)
3. 將上述資料寫入交易紀錄資料表 corp_fm_transaction
*insert into corp_fm_transaction (vendor_item_id, corp_id, corp_data_id, to_corp_id, to_corp_data_id, emp_id, emp_data_id, to_emp_id, to_emp_data_id, emp_phone, to_emp_phone, category_id, total_amt, item_name, item_image, modify_oper, language_setting) values (#vendor_item_id, #corp_id, #corp_data_id, #to_corp_id, #to_corp_data_id, #emp_id, #emp_data_id, #to_emp_id, #to_emp_data_id, #emp_phone, #to_emp_phone, #category_id, #total_amt, #item_name, #item_image, #corp_id, #language_setting)*
4. 若上述 1 或 2 查詢無資料,則記錄 SystemLog:合作店家 #corp_data_id|交易資料串接,查無XXX資料|作業執行
5. 回傳 result = 'N',message 同上訊息。
## 作業結束
記錄 SystemLog:合作店家 #corp_data_id|交易資料串接|作業結束
## 例外處理
若執行中有發生異常,將攔截到的 exception 訊息記錄 ErrorLog:[YYYYMMDDHHMMSS] Enterprise-API-P01 發生異常:【#攔截到的 exception 訊息】
## 規格及範例
|API No.|Enterprise-API-P01|
|-|-|
|API Name|setTransactionRecords|
|URL|${url}/APP/setData/setTransactionRecords|
|Purpose|合作店家交易資料串接|
|Description|透過 API 將合作店家交易資料串接寫回 Custos 資料庫|
|Content-Type|application/json|
**Request**
|參數|型態|必填|長度|說明|
|-|-|:-:|:-:|-|
|corp_data_id|INT|Y||合作店家企業流水號代碼|
|vendor_item_id|String|Y|45|購買/租賃/維修產品之編號|
|item_name|String|Y|256|購買/租賃/維修產品之名稱|
|to_emp_phone|String|Y|16|使用者手機號碼|
|category_id|INT|Y||交易行為,對應 corp_fm_item_category 定義|
|total_amt|Float|Y||交易金額|
|create_date|DateTime|Y||交易日期|
|language_setting|String|Y|10|國別語系設定|
**Response**
|參數|型態|必回|說明|
|-|-|:-:|-|
|result|String|Y|API 執行結果,Y:成功, N:失敗|
|message|String|N|API 執行失敗的訊息說明|
**Request Sample**
```javascript
var input = {
"corp_data_id": 12,
"vendor_item_id": "c-002135",
"item_name": "1公升環保杯",
"to_emp_phone": "0912345678",
"category_id": 3,
"total_amt": "200",
"create_date": "2023-06-01 10:03:28",
"language_setting": "zh-TW"
}
```
**Response Sample**
```javascript
{
"result": "Y", //API 結果
"message": "..." //API 訊息 例如:"執行失敗, 原因:XXXXXXXXX"
}
```