模擬串接服務 - 票券核銷線下交易

經銷商『票券核銷線下交易』請求欄位
Id Name Description Type Additional Information
1 agent_uid 經銷商商務代號
string 必填
2 service 服務名稱
string 必填
{ "service_name": "api", "cmd": "api\/voucheroffline" }
JSON格式,AES256加密資料
3 encry_data 『票券核銷線下交易』欄位資料 string 必填
『票券核銷線下交易』欄位參考
JSON格式,AES256加密資料
特約商店『票券核銷線下交易』請求欄位
Id Name Description Type Additional Information
1 store_uid 特約商店商務代號
string 必填
2 service 服務名稱
string 必填
{ "service_name": "api", "cmd": "api\/voucheroffline" }
JSON格式,AES256加密資料
3 encry_data 『票券核銷線下交易』欄位資料 string 必填
『票券核銷線下交易』欄位參考
JSON格式,AES256加密資料
票券核銷線下交易』欄位
Id Name Description Type Additional Information
1 reimbursement_from_type 核銷點類型 int 『票券核銷點類型』值參考
2 reimbursement_store_uid 核銷特約商店商務代號 string reimbursement_from_type=1為必填
3 reimbursement_dealer_no 自訂核銷點編號 string reimbursement_from_type=2為必填
4 issuance_uid 委託發行商商務代號 string 使用實體券時必填
5 pay_token 核銷交易碼
格式1:MYTIX12345678ABCDEFGH共21碼(通常為數位券)
格式2:"[\"WU00000001\",\"WU00000001\"]" (JSON 格式 通常為實體券或實體數位混合,混合時,若有數位券只使用限定一組(一個消費者被掃))
string 必填
6 order_id 票券核銷線下交易票券處理編號(唯一) string 必填
7 pos_trade_time POS 端交易日期時間(格式為YYYYMMDDHHmmss) string
8 pos_id POS 機號或設備機號 string
9 clerk_no 收銀員代碼 string
10 success_returl 核銷成功導頁網址 string
11 failure_returl 核銷失敗導頁網址 string
12 reimbursement_order_id 核銷店家訂單單號 string
13 issue_invoice_state 票券核銷發票開立類型 int 『票券核銷發票開立類型』值參考
14 invoice 當發票開立類型為1自行開立時,需帶入相關資訊 object|null 『票券核銷交易發票資訊』欄位參考
15 echo_0 自訂回傳參數 1 string
16 echo_1 自訂回傳參數 2 string
17 echo_2 自訂回傳參數 3 string
18 echo_3 自訂回傳參數 4 string
19 echo_4 自訂回傳參數 5 string
票券核銷線下交易』回傳欄位
Id Name Description Type Additional Information
1 code 執行狀態碼 string 『票券執行狀態碼』值參考
2 msg 執行狀態訊息 string
3 content object 『票券核銷線下交易資訊回傳』欄位參考
票券核銷點類型』 值內容
Value Description Type Additional Information
1 MYTIX特約商店(預設) int
2 自訂核銷點編號 int
票券核銷發票開立類型』 值內容
Value Description Type Additional Information
0 不開立(預設) int
1 自行開立 int
票券核銷交易發票資訊』欄位
Id Name Description Type Additional Information
1 number 發票號碼 string
2 date 發票開立日期(格式:YYYYMMDDHHmmss) string
票券執行狀態碼』 值內容
Value Description Type Additional Information
100 資料不正確 string
400 系統錯誤 string
B200 執行成功 string
B500 執行失敗 string
票券核銷線下交易資訊回傳』欄位
Id Name Description Type Additional Information
1 uid 票券核銷線下交易UID string
2 key 交易驗証碼 string
3 order_id 票券核銷線下交易票券處理編號 string
4 code 票券核銷線下交易狀態碼 string 『票券交易狀態碼』值參考
5 msg 核銷交易訊息 string
6 finishtime MYTIX交易完成時間(格式為YYYYMMDDHHmmss) string
7 pay_token 核銷交易碼(例:MYTIX12345678ABCDEFGH共21碼) string
8 pos_trade_time POS 端交易日期時間(格式為YYYYMMDDHHmmss) string
9 pos_id POS 機號或設備機號 string
10 clerk_no 收銀員代碼 string
11 items 消費票券項目 array 每筆『票券核銷線下交易產品資訊』欄位參考
12 reimbursement_from_type 核銷點類型 int 『票券核銷點類型』值參考
13 reimbursement_store_uid 核銷特約商店商務代號 string
14 reimbursement_dealer_no 自訂核銷點編號 string
15 issuance_uid 委託發行商商務代號 string
16 reimbursement_order_id 核銷店家訂單單號 string
17 issue_invoice_state 票券核銷發票開立類型 int 『票券核銷發票開立類型』值參考
18 invoice 當發票開立類型為1自行開立時,需帶入相關資訊 object|null 『票券核銷交易發票資訊』欄位參考
19 echo_0 自訂回傳參數 1 string
20 echo_1 自訂回傳參數 2 string
21 echo_2 自訂回傳參數 3 string
22 echo_3 自訂回傳參數 4 string
23 echo_4 自訂回傳參數 5 string
票券交易狀態碼』 值內容
Value Description Type Additional Information
250 核銷成功 string
300 核銷失敗 string
票券核銷線下交易產品資訊』欄位
Id Name Description Type Additional Information
1 issuance_uid 委託發行商商務代號 string
2 id 票券產品編號 string
3 name 票券名稱 string
4 products 產品金額資訊 array 每筆『票券核銷線下交易產品金額資訊』欄位參考
5 vouchers 單張票券資訊 array 每筆『單張票券資訊』欄位參考
票券核銷線下交易產品金額資訊』欄位
Id Name Description Type Additional Information
1 amount 數量 integer
2 cost 購買單價 float
3 price 購買定價 float
4 total_cost 購買單價小計 float
5 total_price 購買定價小計 float
單張票券資訊』欄位
Id Name Description Type Additional Information
1 serial_no 系統票券序號 string
2 custom_serial_no 自訂票券序號 string
3 book_no 票券本號 string
4 sales_from_type 銷售點類型 int 必填
『票券銷售點類型』值參考
5 sales_store_uid 銷售特約商店商務代號 string sales_from_type=1為必填
6 sales_dealer_no 自訂銷售點編號 string sales_from_type=2為必填
7 cost 購買單價 float
8 price 購買定價 float
票券銷售點類型』 值內容
Value Description Type Additional Information
1 MYTIX特約商店(預設) int
2 自訂銷售點編號 int
AES256資料加密方式說明

1、所有的API送出HTTPs請求之欄位中,service 和 encry_data 欄位皆進行 AES256+BASE64 加密處理。
2、AES加密,格式為CBC,長度為256bits,金鑰長度32,IV長度16,傳遞內文為加密後組合IV並經過Base64轉換後傳出。

方式:
使用自訂的AES256函式將JSON資料加密後,再將IV資料和此AES256加密後的JSON資料串聯後,使用base64再進行加密成ASCII字串即可完成加密。

    PHP加密示意:
    AesEncrypt -> base64_ecode($IV . $JSON)

    C#加密示意:
    AesEncrypt -> (bytes)IV+(bytes)Json -> toBase64

    Java加密示意:
    AesEncrypt -> (bytes)IV+(bytes)Json -> toBase64

    Node.js加密示意:
    AesEncrypt -> concat([IV,JSON], [IV_SIZE,JSON_SIZE]) -> toString('base64')
    Python加密示意:
    AesEncrypt -> (bytes)IV+(bytes)Json -> base64.b64encode

範例程式碼