MYPAY API Flutter SDK 技術串接手冊
名詞定義:
名詞 | 說明 | 備註 |
---|---|---|
MYPAY API Flutter SDK | 提供給串接方App進行串接MYPAY APP使用的Flutter Lib | 下載連結為MYPAY API Flutter SDK |
Repo | 文件左側的標題中可以看到API相關的Repo。 | 如:通知相關(NotificationRepo)。 |
API方法名稱 | 點擊對應Repo後,API方法的名稱會在內文中。 | 如:註冊推播API(callRegisterDeviceRestfulApi)。 |
Request的Model | 發動API時需將該Model作為Request傳入,在Request欄位說明中會說明該API使用的Model名稱。 | 如:Request欄位說明(RegisterDeviceRequest)。 |
Repo的Callback | 發動API時需將該Callback作為Request傳入,需自行實作RepoCallback,API回傳結果後,串接方自行實作後續動作。 | 如:onResponse、onHttpStatusNotSuccess、onError、onTimeout。 |
Response的Model | 發動API完成後會將Response回傳給Callback的onResponse,在Response欄位說明中會說明該API使用的Model名稱。 | 如:Response欄位說明(RegisterDeviceResponse)。 |
StoreKey | 呼叫取得特店金鑰成功後,請自行存放,其他API需用到,請在呼叫其他API前設置。 | 如:CommonAppUtils.setStoreKey('取得特店金鑰'); |
串接準備:
步驟 | 說明 |
---|---|
1 | 請先從Git Clone MYPAY API Flutter SDK |
2 | 打開自己的Flutter專案,並進入到pubspec.yaml,在dependencies內新增: mypay_api_flutter_sdk: path: 步驟1Clone的路徑/mypay_api_flutter_sdk |
3 | 請先在初始化Repo前,請自行取得執行環境後設置是否為正式環境,true=正式環境,false=測試環境,CommonAppUtils.setIsProd(false); |
4 | 請在文件中找到想要串接的API。 |
5 | 在自己的APP內初始化Repo,如:NotificationRepo notificationRepo = NotificationRepo('url', timeoutSeconds: timeout秒數);,url請自行傳入,timeout秒數如不傳入,則默認為30秒。 |
6 | 確保API的URL傳入正確,且RequestModel必要欄位都有傳入,Callback及ResponseModel都有實作完成,就可以發動API。 |
通知相關(NotificationRepo)
註冊推播API(callRegisterDeviceRestfulApi)
Request欄位說明(RegisterDeviceRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | deviceToken | FCM 的 Token (需自行串接FCM後取得的Token) | String | 必要 |
3 | osVersion | 設備作業系統版本 | String | 必要 |
4 | platform | 使用哪種平台推播︰ 2=Android 3=IOS |
int | 必要 |
5 | appVersion | App程式版本 | String | 必要 |
6 | mobileModel | 設備型號 | String | 必要 |
7 | appName | App名稱 | String | 預設為mypay |
8 | locale | 設定資料交換語系 | String | 預設為zh-TW |
Response欄位說明(RegisterDeviceResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | rspTS | Repository 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String |
範例
//註冊推播API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
NotificationRepo notificationRepo = NotificationRepo('url', timeoutSeconds: timeout秒數);
//FCM 的 Token
String deviceToken = '請自行串接FCM後取得的Token';
//API的RequestModel(請參考Request欄位說明)
RegisterDeviceRequest request = RegisterDeviceRequest(
deviceId: '設備ID',
deviceToken: deviceToken,
osVersion: '設備作業系統版本',
platform: 使用哪種平台推播,
appVersion: 'App程式版本',
mobileModel: '設備型號',
);
//呼叫API
notificationRepo.callRegisterDeviceRestfulApi(
request,
TestRegisterDevice(),
);
//實作API的Callback(class名稱請自行定義)
class TestRegisterDevice implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
RegisterDeviceResponse response = apiResponse as RegisterDeviceResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
取得動作明細API(callGetDeviceNotificationActionDetailsRestfulApi)
Request欄位說明(GetDeviceNotificationActionDetailsRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | actionId | 動作明細編號 | String | 必要 |
3 | appName | App名稱 | String | 預設為mypay |
4 | locale | 設定資料交換語系 | String | 預設為zh-TW |
Response欄位說明(GetDeviceNotificationActionDetailsResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | rspTS | Repository 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String | |
5 | title | 訊息標題 | String | |
6 | message | 訊息內容 | String | |
7 | detail | 詳細內文 | String | 請依照Action及Data發動對應動作的API |
8 | createdAt | 建立時間 | String |
範例
//取得動作明細API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
NotificationRepo notificationRepo = NotificationRepo('url', timeoutSeconds: timeout秒數);
//每個動作明細都有不同的動作明細ID,如:信用卡交易actionId、自行收款交易actionId...
String actionId = '動作明細的Id';
//API的RequestModel(請參考Request欄位說明)
GetDeviceNotificationActionDetailsRequest request = GetDeviceNotificationActionDetailsRequest(
deviceId: '設備ID',
locale: 'zh-TW',
actionId: actionId,
);
//呼叫API
notificationRepo.callGetDeviceNotificationActionDetailsRestfulApi(
request,
TestGetDeviceNotificationActionDetails(),
);
//實作API的Callback(class名稱請自行定義)
class TestGetDeviceNotificationActionDetails implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
GetDeviceNotificationActionDetailsResponse response = apiResponse as GetDeviceNotificationActionDetailsResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
帳號相關(AuthRepo)
登入API(callLoginRestfulApi)
Request欄位說明(LoginRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | loginId | 登入帳號 | String | 必要 |
4 | password | 密碼 | String | 必要 |
5 | appName | App名稱 | String | 預設為mypay |
6 | locale | 設定資料交換語系 | String | 預設為zh-TW |
7 | systemType | 過濾只回傳指定系統的權限: Biz=特約商店 Qrcode=39Buy系統 |
String | 若要同時指定多系統則用,接其他系統,如:'Biz,Qrcode' |
Response欄位說明(LoginResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | rspTS | Repository 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String | |
5 | layer | 0=系統商 1=經銷商 2=大特店 3=特約商店 4=服務商 |
int | |
6 | bizId | 大特店或特約商店Uid | String | |
7 | userId | 登入者流水編號 | String | |
8 | userName | 登入者名稱 | String | |
9 | userLoginId | 登入帳號 | String | |
10 | userEMail | 登入者E-Mail | String | |
11 | companyName | 公司名稱 | String | |
11 | companyNickName | 公司簡稱 | String | |
12 | tongBian | 公司統編 | String | |
13 | titleType | 刷卡機列印特約商店標題格式: 0=未設定 1=文字 2=圖形(圖片網址) |
String | |
14 | title | 刷卡機列印特約商店標題內容 | String | |
15 | invoiceSwitch | 發票合約是否開啟: 0=未開啟 1=開啟 |
String | |
16 | farmerFishermanInvoiceName | 農漁民負責人姓名 | String | |
17 | farmerFishermanInvoiceId | 農漁民負責人身分證 | String | |
18 | farmerFishermanInvoiceAddress | 農漁民負責人地址 | String | |
19 | farmerFishermanInvoiceSealImgUrl | 農漁民負責人印章 | String | |
20 | freeInvoiceBigSealImgUrl | 免用統一發票大章 | String | |
21 | freeInvoiceSmallSealImgUrl | 免用統一發票小章 | String | |
22 | parentBizId | 上層大特店編號 (如為大特店登入,則此內容為null) | String | |
23 | parentCompanyName | 上層大特店公司名稱 (如為大特店登入,則此內容為null) | String | |
24 | permissions | 權限清單 | List | |
25 | deviceName | 設備名稱 | String | |
26 | gateways | 閘道資訊 | List | |
27 | getAppToken | 當次登入取得的token | String |
範例
//登入API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
AuthRepo authRepo = AuthRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
LoginRequest request = LoginRequest(
deviceId: '設備ID',
systemType: 'Biz,Qrcode',
storeUid: '特店代號',
loginId: '登入帳號',
password: '密碼',
);
//呼叫API
authRepo.callLoginRestfulApi(
request,
TestLogin(),
);
//實作API的Callback(class名稱請自行定義)
class TestLogin implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
LoginResponse response = apiResponse as LoginResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
取得特店金鑰API(callGetStoreKeyRestfulApi)
Request欄位說明(GetStoreKeyRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | appToken | 當次登入取得的token | String | 必要 |
4 | appName | App名稱 | String | 預設為mypay |
5 | rqTS | Request 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String | |
6 | locale | 設定資料交換語系 | String | 預設為zh-TW |
Response欄位說明(GetStoreKeyResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | rspTS | Repository 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String | |
5 | keys | 金鑰清單: ExpireDate=金鑰過期日期 Key=一般金鑰 OpenKey=公開式金鑰 IapKey=In-App Payment 金鑰 |
List | 請使用有效的一般金鑰(Key),其他API會用到 |
範例
//取得特店金鑰API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
AuthRepo authRepo = AuthRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
GetStoreKeyRequest request = GetStoreKeyRequest(
deviceId: '設備ID',
storeUid: '特店代號',
appToken: '當次登入取得的token',
);
//呼叫API
authRepo.callGetStoreKeyRestfulApi(
request,
TestGetStoreKey(),
);
//實作API的Callback(class名稱請自行定義)
class TestGetStoreKey implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
GetStoreKeyResponse response = apiResponse as GetStoreKeyResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
確認Token API(callValidateAppTokenRestfulApi)
Request欄位說明(ValidateAppTokenRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | appToken | 當次登入取得的token | String | 必要 |
Response欄位說明(ValidateAppTokenResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | rspTS | Repository 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String |
範例
//確認Token API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
AuthRepo authRepo = AuthRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
ValidateAppTokenRequest request = ValidateAppTokenRequest(appToken: '當次登入取得的token');
//呼叫API
authRepo.callValidateAppTokenRestfulApi(
request,
TestValidateAppToken(),
);
//實作API的Callback(class名稱請自行定義)
class TestValidateAppToken implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
ValidateAppTokenResponse response = apiResponse as ValidateAppTokenResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
登出API(callLogoutRestfulApi)
Request欄位說明(LogoutRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | appToken | 當次登入取得的token | String | 必要 |
Response欄位說明(LogoutResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | rspTS | Repository 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String |
範例
//登出API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
AuthRepo authRepo = AuthRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
LogoutRequest request = LogoutRequest(appToken: '當次登入取得的token');
//呼叫API
authRepo.callLogoutRestfulApi(
request,
TestLogout(),
);
//實作API的Callback(class名稱請自行定義)
class TestLogout implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
LogoutResponse response = apiResponse as LogoutResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
資源相關(ResourceRepo)
取得服務商圖片API(callGetServiceSupplierImagesRestfulApi)
Request欄位說明(GetServiceSupplierImagesRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | appName | App名稱 | String | 預設為mypay |
4 | rqTS | Request 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String | |
5 | locale | 設定資料交換語系 | String | 預設為zh-TW |
Response欄位說明(GetServiceSupplierImagesResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | rspTS | Repository 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String | |
5 | resultContent | 所有已定義之列印用圖片: SupplierCode=服務商編號 ImagePath=列印圖片位置 |
List |
範例
//取得服務商圖片API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
ResourceRepo resourceRepo = ResourceRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
GetServiceSupplierImagesRequest request = GetServiceSupplierImagesRequest(
deviceId: '設備ID',
storeUid: '特店代號',
);
//呼叫API
resourceRepo.callGetServiceSupplierImagesRestfulApi(
request,
TestGetServiceSupplierImages(),
);
//實作API的Callback(class名稱請自行定義)
class TestGetServiceSupplierImages implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
GetServiceSupplierImagesResponse response = apiResponse as GetServiceSupplierImagesResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
取得特店LOGO API(callGetStoreImageRestfulApi)
Request欄位說明(GetStoreImageRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | appName | App名稱 | String | 預設為mypay |
4 | rqTS | Request 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String | |
5 | locale | 設定資料交換語系 | String | 預設為zh-TW |
Response欄位說明(GetStoreImageResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | rspTS | Repository 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String | |
5 | imagePath | 代收付大特店簽單列印之圖片 | String |
範例
//取得特店LOGO API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
ResourceRepo resourceRepo = ResourceRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
GetStoreImageRequest request = GetStoreImageRequest(
deviceId: '設備ID',
storeUid: '特店代號',
);
//呼叫API
resourceRepo.callGetStoreImageRestfulApi(
request,
TestGetStoreImage(),
);
//實作API的Callback(class名稱請自行定義)
class TestGetStoreImage implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
GetStoreImageResponse response = apiResponse as GetStoreImageResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
銀行相關(JsonDataRepo)
取得銀行資訊API(callGetBankInfo)
Response欄位說明(GetBankInfoResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String | |
4 | bankInfoList | 銀行資訊列表 | List | 請參考BankInfo欄位說明 |
BankInfo欄位說明(BankInfo)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | id | 銀行流水號 | int | |
2 | name | 銀行名稱 | String |
範例
//取得銀行資訊API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
JsonDataRepo jsonDataRepo = JsonDataRepo('url', timeoutSeconds: timeout秒數);
//呼叫API
jsonDataRepo.callGetBankInfo(
TestGetBankInfo(),
);
//實作API的Callback(class名稱請自行定義)
class TestGetBankInfo implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
GetBankInfoResponse response = apiResponse as GetBankInfoResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
取得BinTable API(callGetBinTable)
Response欄位說明(GetBinTableResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String | |
4 | binTableList | 銀行識別碼列表 | List | 請參考BinTable欄位說明 |
BinTable欄位說明(BinTable)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | bankId | 銀行流水號 | String | |
2 | type | 卡別: 1=VISA 2=MASTERCARD 3=JCB |
int | |
3 | firstNo | 卡號前綴 | String | |
4 | endNo | 卡號後綴 | String |
範例
//取得BinTable API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
JsonDataRepo jsonDataRepo = JsonDataRepo('url', timeoutSeconds: timeout秒數);
//呼叫API
jsonDataRepo.callGetBinTable(
TestGetBinTable(),
);
//實作API的Callback(class名稱請自行定義)
class TestGetBinTable implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
GetBinTableResponse response = apiResponse as GetBinTableResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
特店相關(StoreRepo)
取得設備PayMode API(callGetStoreSupportedPayModesRestfulApi)
Request欄位說明(GetStoreSupportedPayModesRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | cost | 交易金額 | String | 預設為1000 |
4 | currency | 預設交易幣別 | String | 預設為TWD |
Response欄位說明(GetStoreSupportedPayModesResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String | |
4 | web | 支付方式清單 | List | |
5 | device | 設備支付方式清單 | List |
範例
//取得設備PayMode API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
StoreRepo storeRepo = StoreRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
GetStoreSupportedPayModesRequest request = GetStoreSupportedPayModesRequest(
deviceId: '設備ID',
storeUid: '特店代號',
);
//呼叫API
storeRepo.callGetStoreSupportedPayModesRestfulApi(
request,
TestGetStoreSupportedPayModes(),
);
//實作API的Callback(class名稱請自行定義)
class TestGetStoreSupportedPayModes implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
GetStoreSupportedPayModesResponse response = apiResponse as GetStoreSupportedPayModesResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
交易結果回報相關(LogRepo)
交易結果回報API(callLogTransactionRestfulApi)
Request欄位說明(LogTransactionRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | uid | 要回報的訂單uid | String | 必要 |
4 | key | 要回報的訂單key | String | 必要 |
5 | type | 回報完成類型: 1=交易完成(預設) 2=交易成功 3=交易失敗 |
int | 必要 |
6 | finishedDate | 設備完成處理時間(格式YYYYmmddHHiiss) | String | 必要 |
Response欄位說明(LogTransactionResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String |
範例
//交易結果回報API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
LogRepo logRepo = LogRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
LogTransactionRequest request = LogTransactionRequest(
deviceId: '設備ID',
storeUid: '特店代號',
uid: '要回報的訂單uid',
key: '要回報的訂單key',
type: 回報完成類型,
finishedDate: '設備完成處理時間(格式YYYYmmddHHiiss)',
);
//呼叫API
logRepo.callLogTransactionRestfulApi(
request,
TestLogTransaction(),
);
//實作API的Callback(class名稱請自行定義)
class TestLogTransaction implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
LogTransactionResponse response = apiResponse as LogTransactionResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
發票相關(InvoiceRepo)
取得發票區間API(callGetInvoiceRangeListRestfulApi)
Request欄位說明(GetInvoiceRangeListRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | layer | 店家層級 | String | 必要 |
3 | storeUid | 特店代號 | String | 必要 |
4 | year | 年度 | String | 必要 |
5 | appToken | 當次登入取得的token | String | 必要 |
6 | appName | App名稱 | String | 預設為mypay |
7 | rqTS | Request 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String | |
8 | locale | 設定資料交換語系 | String | 預設為zh-TW |
Response欄位說明(GetInvoiceRangeListResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | rspTS | Repository 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String | |
5 | resultData | 回傳資訊 | object | 請參考ResultData欄位說明 |
ResultData欄位說明(ResultData)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | code | 回傳碼 | String | |
2 | msg | 回傳訊息 | String | |
3 | year | 年份 | String | |
4 | providerName | 目前供應商 | String | |
5 | monthData | 每月資料 | List | 請參考MonthData欄位說明 |
MonthData欄位說明(MonthData)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | month | 月份 | String | |
2 | invoiceData | 字軌資料 | List | 請參考InvoiceData欄位說明 |
InvoiceData欄位說明(InvoiceData)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | uid | 流水號 | String | |
2 | aphabeticLetter | 字軌開頭 | String | |
3 | startNumber | 起始號 | String | |
4 | endNumber | 結束號 | String | |
5 | createdAt | 建立時間 | String | |
6 | lastNumber | 最後使用的號碼 | String | |
7 | remainder | 剩餘號碼 | String |
範例
//取得發票區間API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
InvoiceRepo invoiceRepo = InvoiceRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
GetInvoiceRangeListRequest request = GetInvoiceRangeListRequest(
deviceId: '設備ID',
layer: '店家層級',
storeUid: '特店代號',
year: '年度',
appToken: '當次登入取得的token',
);
//呼叫API
invoiceRepo.callGetInvoiceRangeListRestfulApi(
request,
TestGetInvoiceRangeList(),
);
//實作API的Callback(class名稱請自行定義)
class TestGetInvoiceRangeList implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
GetInvoiceRangeListResponse response = apiResponse as GetInvoiceRangeListResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
取回發票號碼API(callGetInvoiceNumbersRestfulApi)
Request欄位說明(GetInvoiceNumbersRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | year | 年份 | String | 必要 |
4 | month | 請輸入單數月份,1-2輸入1,3-4輸入3 | String | 必要 |
5 | quantity | 一次要取得的發票數量 | String | 必要 |
6 | appToken | 當次登入取得的token | String | 必要 |
7 | appName | App名稱 | String | 預設為mypay |
8 | rqTS | Request 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String | |
9 | locale | 設定資料交換語系 | String | 預設為zh-TW |
Response欄位說明(GetInvoiceNumbersResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | rspTS | Repository 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String | |
5 | resultStatus | 0=取號失敗 1=取號完成 2=號碼不足,只配發XX 3=完全無號碼 |
int | |
6 | count | 剩餘號碼數量 | int | |
5 | rowsData | 配發號碼 | List |
範例
//取回發票號碼API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
InvoiceRepo invoiceRepo = InvoiceRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
GetInvoiceNumbersRequest request = GetInvoiceNumbersRequest(
deviceId: '設備ID',
storeUid: '特店代號',
year: '年份',
month: '請輸入單數月份,1-2輸入1,3-4輸入3',
quantity: '一次要取得的發票數量',
appToken: '當次登入取得的token',
);
//呼叫API
invoiceRepo.callGetInvoiceNumbersRestfulApi(
request,
TestGetInvoiceNumbers(),
);
//實作API的Callback(class名稱請自行定義)
class TestGetInvoiceNumbers implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
GetInvoiceNumbersResponse response = apiResponse as GetInvoiceNumbersResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
新增發票字軌API(callCreateInvoiceRangeRestfulApi)
Request欄位說明(CreateInvoiceRangeRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | year | 年份 | String | 必要 |
4 | month | 請輸入單數月份,1-2輸入1,3-4輸入3 | String | 必要 |
5 | layer | 店家層級 | String | 必要 |
6 | aphabeticLetter | 字軌開頭 | String | 必要 |
7 | startNumber | 起始號 | String | 必要 |
8 | endNumber | 結束號 | String | 必要 |
9 | appToken | 當次登入取得的token | String | 必要 |
10 | appName | App名稱 | String | 預設為mypay |
11 | rqTS | Request 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String | |
12 | locale | 設定資料交換語系 | String | 預設為zh-TW |
Response欄位說明(CreateInvoiceRangeResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | rspTS | Repository 的時間,格式為 (GMT+8)2015-12-02 04:34:55 | String | |
5 | resultStatus | 訊息代碼: A0000=新增成功 A0001=查無設定檔 A0002=發票設定方式非上傳字軌 A0003=年份小於今年 A0004=月份小於當期 A0005=字軌已存在,或區間有重複,不再新增 A0006=發票字軌一次性不可設定超過10萬 A0007=加值中心限制,只能新增當期以期下期發票 A9999=系統異常 |
String |
範例
//新增發票字軌API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
InvoiceRepo invoiceRepo = InvoiceRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
CreateInvoiceRangeRequest request = CreateInvoiceRangeRequest(
deviceId: '設備ID',
storeUid: '特店代號',
year: '年份',
month: '請輸入單數月份,1-2輸入1,3-4輸入3',
layer: '店家層級',
aphabeticLetter: '字軌開頭',
startNumber: '起始號',
endNumber: '結束號',
appToken: '當次登入取得的token',
);
//呼叫API
invoiceRepo.callCreateInvoiceRangeRestfulApi(
request,
TestCreateInvoiceRange(),
);
//實作API的Callback(class名稱請自行定義)
class TestCreateInvoiceRange implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
CreateInvoiceRangeResponse response = apiResponse as CreateInvoiceRangeResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
交易相關(TransactionRepo)
開立發票API(callCreateInvoiceRestfulApi)
Request欄位說明(CreateInvoiceRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | uid | 要開立發票的訂單uid | String | 必要 |
4 | key | 要開立發票的訂單key | String | 必要 |
5 | invoiceInputType | 電子發票開立類型: 1=雲端發票 2=發票捐贈 3=實體發票 |
int | 必要 |
6 | invoiceCloudType | 「雲端發票」類型: 2=手機條碼 3=自然人憑證條碼 4=以E-Mail寄送 |
String | 當invoiceInputType為1,此狀態才有效 |
7 | invoiceTaxId | 統一編號 | String | 當invoiceInputType為1,此欄位才有效 |
8 | invoiceMobileCode | 手機條碼 | String | 當invoiceCloudType為2,此欄位才有效 |
9 | invoiceNaturalPerson | 自然人憑證條碼 | String | 當invoiceCloudType為3,此欄位才有效 |
10 | invoiceMPostZone | EMail 紙本寄送郵遞區號 | String | 當invoiceCloudType為4,此欄位才有效 |
11 | invoiceMAddress | EMail 紙本寄送住址 | String | 當invoiceCloudType為4,此欄位才有效 |
12 | invoiceLoveCode | 愛心碼 | String | 當invoiceInputType為2,此欄位才有效 |
13 | invoiceB2bTitle | 發票抬頭 | String | 當invoiceInputType為3時,此欄位才有效 |
14 | invoiceB2bId | 統一編號 | String | 當invoiceInputType為3時,此欄位才有效 |
15 | invoiceB2bPostZone | 發票郵遞區號 | String | 當invoiceInputType為3時,此欄位才有效 |
16 | invoiceB2bAddress | 發票地址 | String | 當invoiceInputType為3時,此欄位才有效 |
17 | payerMail | 消費者email,如果原訂單已有email,則會以原訂單的mail為主 | String |
Response欄位說明(CreateInvoiceResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String | |
4 | uid | 訂單uid | String | |
5 | key | 訂單key | String | |
6 | orderId | 訂單編號 | String | |
7 | actualCost | 實際交易金額 | String | |
8 | actualCurrency | 實際交易幣別 | String | |
9 | printType | 電子發票列印類型: 0=不列印 自行處置 1=列印 電子發票 + 商品明細 2=只印電子發票 3=只印商品明細 |
int | |
10 | printDevice | 電子發票列印設備: 0=自行處理 1=SUNMI V2 PRO |
int | |
11 | echo0 | 自訂回傳參數 1 | String | |
12 | echo1 | 自訂回傳參數 2 | String | |
13 | echo2 | 自訂回傳參數 3 | String | |
14 | echo3 | 自訂回傳參數 4 | String | |
15 | echo4 | 自訂回傳參數 5 | String | |
16 | state | 發票開立狀態: 0=不處理(預設) 1=等候處理中 2=發票處理成功 3=發票處理失敗 4=作癈 |
String | |
17 | stateMsg | 發票開立狀態訊息 | String | |
18 | date | 發票開立日期(YYYYMMDD) | String | |
19 | wordtrack | 發票字軌 | String | |
20 | number | 發票號碼 | String | |
21 | randCode | 隨機碼 | String | |
22 | sellerBan | 賣方統編 | String | |
23 | sellerName | 賣方名稱 | String | |
24 | buyerBan | 買方統一編號 | String | |
25 | buyerName | 買方名稱 | String | |
26 | leftQrcode | 電子發票左邊QrCode內容 | String | |
27 | middleBarcode | 電子發票中間Barcode內容(格式Code-39) | String | |
28 | rightQrcode | 電子發票右邊QrCode內容 | String | |
29 | titleType | 電子發票列印標題格式: 1=文字 2=圖形(圖片網址) |
int | |
30 | title | 電子發票列印標題 | String | |
31 | amount | 電子發票開立總額 | String | |
32 | salesAmount | 電子發票銷售額 | String | |
33 | taxAmount | 電子發票稅額 | String | |
34 | orderDetail | 電子發票開立之產品詳細資訊(JSON格式): Description=商品名稱 Quantity=數量 UnitPrice=單價 Amount=總金額 |
String | |
35 | ratetype | 電子發票稅率別: 1=應稅(預設) 2=零稅率 3=免稅 |
int | |
36 | taxRate | 電子發票稅率:預設0.05(零稅與免稅帶0) | double | |
37 | remark | 發票註記(依加值中心提供註記功能) | String | |
38 | inputType | 電子發票開立類型: 0=未使用電子發票開立 1=雲端發票 2=發票捐贈 3=實體發票 |
int | |
39 | cloudType | 電子發票開立類型-雲端發票類型: 0=未使用雲端發票類型 2=手機條碼 3=自然人憑證條碼 4=以E-Mail寄送 |
String | |
40 | mobileCode | 當cloudType為2時紀錄的手機條碼 | String | |
41 | taxId | 當cloudType為2時紀錄的統一編號 | String | |
42 | taxTitle | 當cloudType為2時紀錄的買受人公司名稱 | String | |
43 | naturalPerson | 當cloudType為3時紀錄的自然人憑證條碼 | String | |
44 | mPostZone | 當cloudType為4時紀錄中獎時紙本發票郵遞區號 | String | |
45 | mAddress | 當cloudType為4時紀錄中獎時紙本發票收件住址 | String | |
46 | loveCode | 當inputType為2時紀錄的愛心碼 | String | |
47 | b2bTitle | 當inputType為3時紀錄的發票抬頭 | String | |
48 | b2bId | 當inputType為3時紀錄的統一編號 | String | |
49 | b2bPostZone | 當inputType為3時紀錄的郵遞區號 | String | |
50 | b2bAddress | 當inputType為3時紀錄的發票地址 | String |
範例
//開立發票API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
TransactionRepo transactionRepo = TransactionRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
CreateInvoiceRequest request = CreateInvoiceRequest(
deviceId: '設備ID',
storeUid: '特店代號',
uid: '要開立發票的訂單uid',
key: '要開立發票的訂單key',
invoiceInputType: 電子發票開立類型,
);
//呼叫API
transactionRepo.callCreateInvoiceRestfulApi(
request,
TestCreateInvoice(),
);
//實作API的Callback(class名稱請自行定義)
class TestCreateInvoice implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
CreateInvoiceResponse response = apiResponse as CreateInvoiceResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
金流交易API(callSendTransactionRestfulApi)
Request欄位說明(SendTransactionRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | cost | 訂單總金額 | String | 必要 |
4 | orderId | 訂單編號 | String | 必要 |
5 | items | 商品列表 | List | 必要,請參考Item欄位說明 |
6 | pfn | 付費方法 | String | 必要,請參考pfn欄位說明 |
7 | actualPayMode | 自行收款付款方式 | String | 非必要,請參考自行收款付款方式說明,當付費方法為【CASH】時,這裡帶入的值表示以此種方式自行收款,但在金流交易會有對應的紀錄 |
8 | currency | 預設交易幣別 | String | 預設為TWD |
9 | echo0 | 自訂回傳參數 1 | String | |
10 | echo1 | 自訂回傳參數 2 | String | |
11 | echo2 | 自訂回傳參數 3 | String | |
12 | echo3 | 自訂回傳參數 4 | String | |
13 | echo4 | 自訂回傳參數 5 | String | |
14 | userId | 消費者帳號 | String | |
15 | userName | 消費者姓名 | String | |
16 | userRealName | 消費者真實姓名 | String | |
17 | userZipcode | 消費者郵遞區號 | String | |
18 | userAddress | 消費者地址 | String | |
19 | userSnType | 證號類型: 1=身份證字號(預設) 2=統一證號 3=護照號碼 |
String | |
20 | userSn | 付款人身分證/統一證號/護照號碼 | String | |
21 | userPhone | 消費者家用電話 | String | |
22 | userCellphoneCode | 消費者行動電話國碼 | String | |
23 | userCellphone | 消費者行動電話 | String | |
24 | userEmail | 消費者 E-Mail | String | |
25 | userBirthday | 消費者生日 | String | |
26 | ip | 消費者來源 IP | String | |
27 | issueInvoiceState | 開立發票: 0=不開立電子發票 1=開立電子發票 2=依系統設定(預設) |
int | |
28 | invoiceRatetype | 電子發票稅率別: 1=應稅(預設) 2=零稅率 3=免稅 |
int | |
29 | invoiceInputType | 電子發票開立類型: 0=未使用電子發票開立 1=雲端發票 2=發票捐贈 3=實體發票 |
int | |
30 | invoiceCloudType | 「雲端發票」類型: 0=未使用雲端發票類型 2=手機條碼 3=自然人憑證條碼 4=以E-Mail寄送 |
int | 當invoiceInputType為1,此狀態才有效 |
31 | invoiceTaxId | 統一編號 | String | 當invoiceInputType為1,此欄位才有效 |
32 | invoiceMobileCode | 手機條碼 | String | 當invoiceCloudType為2,此欄位才有效 |
33 | invoiceNaturalPerson | 自然人憑證條碼 | String | 當invoiceCloudType為3,此欄位才有效 |
34 | invoiceMPostZone | EMail 紙本寄送郵遞區號 | String | 當invoiceCloudType為4,此欄位才有效 |
35 | invoiceMAddress | EMail 紙本寄送住址 | String | 當invoiceCloudType為4,此欄位才有效 |
36 | invoiceLoveCode | 愛心碼 | String | 當invoiceInputType為2,此欄位才有效 |
37 | invoiceB2bTitle | 發票抬頭 | String | 當invoiceInputType為3時,此欄位才有效 |
38 | invoiceB2bId | 統一編號 | String | 當invoiceInputType為3時,此欄位才有效 |
39 | invoiceB2bPostZone | 發票郵遞區號 | String | 當invoiceInputType為3時,此欄位才有效 |
40 | invoiceB2bAddress | 發票地址 | String | 當invoiceInputType為3時,此欄位才有效 |
41 | dataJson | 信用卡資訊輸入(JSON格式) | String | 請參考信用卡資料欄位說明 |
Response欄位說明(SendTransactionResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String | |
4 | uid | 該訂單的uid | String | |
5 | key | 該訂單的key | String | |
6 | finishtime | 交易完成時間(YYYYMMDDHHmmss) | String | |
7 | cardno | 銀行端口回傳碼 | String | |
8 | acode | 授權碼 | String | |
9 | cardType | 信用卡卡別: 0=無法辨識或支付方式為非信用卡類 1=VISA 2=MasterCard 3=JCB 4=AMEX |
String | |
10 | issuingBank | 發卡行 | String | |
11 | issuingBankUid | 發卡銀行代碼 | String | |
12 | isAgentCharge | 是否為經銷商代收費模式: 0=不是經銷商代收費模式 1=是經銷商代收費模式 |
int | |
13 | transactionMode | 交易服務類型: 0=尚未進行閘道交易 1=代收代付 2=特店模式 |
String | |
14 | supplierName | 交易之金融服務商 | String | |
15 | supplierCode | 交易之金融服務商代碼 | String | |
16 | orderId | 訂單編號 | String | |
17 | userId | 消費者帳號 | String | |
18 | cost | 總交易金額 | String | |
19 | currency | 原交易幣別 | String | |
20 | actualCost | 實際交易金額 | String | |
21 | actualCurrency | 實際交易幣別 | String | |
22 | pfn | 付費方法 | String | 請參考pfn欄位說明 |
23 | actualPayMode | 自行收款付款方式 | String | 請參考自行收款付款方式說明,當付費方法為【CASH】時,這裡帶入的值表示以此種方式自行收款,但在金流交易會有對應的紀錄 |
24 | transType | 交易類型: 1=一般 (預設) 2=分期 3=紅利 |
String | |
25 | resultType | 回傳結果資料類型: 0=無法辨識 1=網址 2=超連結本文 3=xml 4=json 5=csv 6=串流 |
String | |
26 | resultContentType | 回傳資料內容類型 | String | 請參考資料內容所屬支付名稱欄位說明 |
27 | resultContent | 回傳結果 | String | |
28 | sysEcho | 內部系統紀錄echo | String | |
29 | echo0 | 自訂回傳參數 1 | String | |
30 | echo1 | 自訂回傳參數 2 | String | |
31 | echo2 | 自訂回傳參數 3 | String | |
32 | echo3 | 自訂回傳參數 4 | String | |
33 | echo4 | 自訂回傳參數 5 | String | |
34 | invoiceState | 發票開立狀態: 0=不處理或已無效(預設) 1=等候處理中 2=發票開立成功 3=發票開立失敗(系統或特約商店發票相關設定不正確) 4=作癈 5=發票開立失敗(系統發生錯誤) 6=折讓 |
int | |
35 | invoiceStateMsg | 發票開立狀態訊息 | String | |
36 | invoiceDate | 發票開立日期(YYYYMMDDHHmmss) | String | |
37 | invoiceWordtrack | 發票字軌 | String | |
38 | invoiceNumber | 發票號碼 | String | |
39 | invoiceRandCode | 電子發票隨機碼 | String | |
40 | invoiceSellerBan | 賣方統一編號 | String | |
41 | invoiceSellerName | 賣方名稱 | String | |
42 | invoiceBuyerBan | 買方統一編號 | String | |
43 | invoiceBuyerName | 買方名稱 | String | |
44 | invoiceLeftQrcode | 電子發票左邊QrCode內容 | String | |
45 | invoiceMiddleBarcode | 電子發票中間Barcode內容(格式Code-39) | String | |
46 | invoiceRightQrcode | 電子發票右邊QrCode內容 | String | |
47 | invoiceTitleType | 電子發票列印標題格式: 1=文字 2=圖形(圖片網址) |
int | |
48 | invoiceTitle | 電子發票列印標題 | String | |
49 | invoicePrintType | 電子發票列印類型: 0=不列印 自行處置 1=列印 電子發票 + 商品明細 2=只印電子發票 3=只印商品明細 |
int | |
50 | invoicePrintDevice | 電子發票列印設備: 0=自行處理 1=SUNMI V2 PRO |
int | |
51 | invoiceAmount | 電子發票銷售總額 | String | |
52 | invoiceSalesAmount | 電子發票銷售額 | String | |
53 | invoiceTaxAmount | 電子發票稅額 | String | |
54 | invoiceOrderDetail | 電子發票全部產品明細(JSON格式): Description=商品名稱 Quantity=數量 UnitPrice=單價 Amount=總金額 |
String | |
55 | invoiceRatetype | 電子發票稅率別: 1=應稅(預設) 2=零稅率 3=免稅 |
int | |
56 | invoiceTaxRate | 電子發票稅率:預設0.05(零稅與免稅帶0) | String | |
57 | invoiceRemark | 發票註記(依加值中心提供註記功能) | String | |
58 | invoiceInputType | 電子發票開立類型: 0=未使用電子發票開立 1=雲端發票 2=發票捐贈 3=實體發票 |
int | |
59 | invoiceCloudType | 電子發票開立類型-雲端發票類型: 0=未使用雲端發票類型 2=手機條碼 3=自然人憑證條碼 4=以E-Mail寄送 |
int | |
60 | invoiceMobileCode | 當invoiceCloudType為2時紀錄的手機條碼 | String | |
61 | invoiceTaxId | 當invoiceCloudType為2時紀錄的統一編號 | String | |
62 | invoiceTaxTitle | 當invoiceCloudType為2時紀錄的買受人公司名稱 | String | |
63 | invoiceNaturalPerson | 當invoiceCloudType為3時紀錄的自然人憑證條碼 | String | |
64 | invoiceMPostZone | 當invoiceCloudType為4時紀錄中獎時紙本發票郵遞區號 | String | |
65 | invoiceMAddress | 當invoiceCloudType為4時紀錄中獎時紙本發票收件住址 | String | |
66 | invoiceLoveCode | 當invoiceInputType為2時紀錄的愛心碼 | String | |
67 | invoiceB2bTitle | 當invoiceInputType為3時紀錄的發票抬頭 | String | |
68 | invoiceB2bId | 當invoiceInputType為3時紀錄的統一編號 | String | |
69 | invoiceB2bPostZone | 當invoiceInputType為3時紀錄的郵遞區號 | String | |
70 | invoiceB2bAddress | 當invoiceInputType為3時紀錄的發票地址 | String |
Item欄位說明(Item)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | id | 商品編號 | String | 必要 |
2 | name | 商品名稱 | String | 必要 |
3 | cost | 商品單價 | String | 必要 |
4 | amount | 商品數量 | String | 必要 |
5 | total | 商品小計 | String | 必要 |
6 | imageUrl | 商品圖片連結(僅LINEPay線上使用) | String |
pfn欄位說明(pfn)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | CREDITCARD | 信用卡 | String | |
2 | CASH | 自行收款 | String | |
3 | OFFLINE | 所有線下交易,掃碼收款 | String | |
4 | IPASS | 一卡通 | String | |
5 | LINEPAYON | LINE Pay線上付款 | String | |
6 | JKOON | 街口支付線上 | String | |
7 | PION | Pi 拍錢包線上 | String | |
8 | EASYWALLETON | 悠遊付線上 | String | |
9 | PLUSPAYON | 全盈支付線上 | String | |
10 | PXPAYON | 全支付線上 | String | |
11 | ALIPAY | 支付寶線上 | String | |
12 | 微信支付線上 | String | ||
13 | ABROAD | 海外信用卡 | String | |
14 | UNIONPAY | 銀聯卡 | String | |
15 | AMEX | 美國運通 | String | |
16 | CREDITCARDALL | 線下信用卡交易 | String | |
17 | C_INSTALLMENT | 信用卡分期 | String | |
18 | C_REDEEM | 信用卡紅利 | String | |
19 | DIRECTDEBIT | 定期扣款(國內信用卡) | String | |
20 | DIRECTDEBIT_ABROAD | 定期扣款(國外信用卡) | String | |
21 | CARDLESS | 無卡分期 | String | |
22 | CSTORECODE | 超商代碼 | String | |
23 | WEBATM | WEBATM | String | |
24 | E_COLLECTION | 虛擬帳號 (ATM轉帳) | String | |
25 | AFP | 後付款 | String | |
26 | ESVC | 電票交易 | String | |
27 | EACH | eACH交易 | String | |
28 | BARCODE | 超商繳費代碼 | String | |
29 | APPLEPAY | APPLE PAY | String | |
30 | GOOGLEPAY | Google Pay | String | |
31 | M_RECHARGE | 儲值 | String | |
32 | EASYCARD | 悠遊卡 | String | |
33 | ICASH | iCash | String | |
34 | LINEPAYOFF | LINE Pay線下付款 | String | |
35 | WECHATOFF | 微信支付線下 | String | |
36 | PIOFF | Pi 拍錢包線下 | String | |
37 | JKOOFF | 街口支付線下 | String | |
38 | ALIPAYOFF | 支付寶線下 | String | |
39 | EASYWALLETOFF | 悠遊付線下 | String | |
40 | PXPAYOFF | 全支付線下 | String | |
41 | PLUSPAYOFF | 全盈支付線下 | String | |
42 | TWPAYOFF | 台灣Pay線下 | String |
自行收款付款方式說明(actualPayMode)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | REMITTENCE | 轉帳匯款 | String | |
2 | ZINGALAPAY | 銀角零卡 | String | |
3 | LINEPAY | LINE Pay | String | |
4 | JKO | 街口支付 | String | |
5 | PI | Pi 拍錢包 | String | |
6 | EASYWALLET | 悠遊付 | String | |
7 | PXPAY | 全支付 | String | |
8 | PLUSPAY | 全盈支付 | String | |
9 | ALIPAY_YUANTABANK | 支付寶元大 | String | |
10 | ALIPAY_MEGABANK | 支付寶兆豐 | String | |
11 | ALIPAY_TCB | 支付寶合庫 | String | |
12 | WECHAT_SKBANK | 微信支付新光 | String | |
13 | MOMO | Momo收款 | String | |
14 | SHOPEE | 蝦皮拍賣收款 | String | |
15 | ETMALL | 東森收款 | String | |
16 | PCSTORE | PChome商店街收款 | String | |
17 | PCHOME24H | PChome24H收款 | String | |
18 | RUTEN | 露天拍賣收款 | String | |
19 | SHOPLINE | Shop line收款 | String | |
20 | FOODPANDA | 熊貓收款 | String | |
21 | UBEREATS | Uber eats收款 | String | |
22 | CYBERBIZ | Cyberbiz收款 | String | |
23 | YAHOOBID | YAHOO拍賣收款 | String | |
24 | RAKUTEN | 樂天市場收款 | String | |
25 | CAROUSELL | 旋轉拍賣收款 | String | |
26 | FACEBOOKGROUPS | FB社團收款 | String | |
27 | PINKOI | Pinkoi收款 | String | |
28 | 91APP | 91APP收款 | String | |
29 | COD_MYPAY | MYPAY物流代收 | String | |
30 | COD_HCT | 新竹物流代收 | String | |
31 | COD_TCAT | 黑貓宅急便代收 | String | |
32 | COD_MYSHIP711 | 7-ELEVEN賣貨便代收 | String | |
33 | COD_FAMISTORE | 好賣+代收 | String | |
34 | COD_HISHIPBUYER | 萊賣貨代收 | String | |
35 | COD_KERRYTJ | 嘉里大榮代收 | String | |
36 | CSTORECODE_IBON | 超商代碼(IBON) | String | |
37 | CSTORECODE_FAMIPORT | 超商代碼(FamiPort) | String | |
38 | CSTORECODE_LIFEET | 超商代碼(Life-ET) | String | |
39 | CSTORECODE_OKGO | 超商代碼(OK GO) | String | |
40 | ETICKET_EASYCARD | 悠遊卡 | String | |
41 | ETICKET_IPASS | 一卡通 | String | |
42 | ETICKET_ICASH | iCash | String | |
43 | CRYPTO_BTC | 比特幣 | String | |
44 | CRYPTO_ETH | 乙太幣 | String | |
45 | TELECOM_CHT | 中華電信代收 | String | |
46 | TELECOM_FET | 遠傳電信代收 | String | |
47 | TELECOM_TWM | 台灣大哥大代收 | String | |
48 | TELECOM_TSTAR | 台灣之星代收 | String | |
49 | TELECOM_APT | 亞太電信代收 | String | |
50 | ECPAY_CREDIT | 綠界收款(信用卡) | String | |
51 | ECPAY_WEBATM | 綠界收款(網路ATM) | String | |
52 | ECPAY_ATM | 綠界收款(自動櫃員機) | String | |
53 | ECPAY_CVS | 綠界收款(超商代碼) | String | |
54 | ECPAY_BARCODE | 綠界收款(超商條碼) | String | |
55 | ECPAY_TWQR | 綠界收款(行動支付) | String | |
56 | ECPAY_IN_STORE_PICKUP | 綠界收款(超取) | String | |
57 | NEWEBPAY_CREDIT | 藍新收款(信用卡付款) | String | |
58 | NEWEBPAY_VACC | 藍新收款(銀行 ATM 轉帳付款) | String | |
59 | NEWEBPAY_WEBATM | 藍新收款(網路銀行轉帳付款) | String | |
60 | NEWEBPAY_BARCODE | 藍新收款(超商條碼繳費) | String | |
61 | NEWEBPAY_CVS | 藍新收款(超商代碼繳費) | String | |
62 | NEWEBPAY_LINEPAY | 藍新收款(LINE Pay 付款) | String | |
63 | NEWEBPAY_ESUNWALLET | 藍新收款(玉山 Wallet) | String | |
64 | NEWEBPAY_TAIWANPAY | 藍新收款(台灣 Pay) | String | |
65 | NEWEBPAY_CVSCOM | 藍新收款(超商取貨付款) | String | |
66 | CREDITCARD_TCB | 信用卡(合庫銀行) | String | |
67 | CREDITCARD_ESUNBANK | 信用卡(玉山銀行) | String | |
68 | CREDITCARD_FIRSTBANK | 信用卡(第一銀行) | String | |
69 | CREDITCARD_FUBONBANK | 信用卡(台北富邦銀行) | String | |
70 | CREDITCARD_TSIB | 信用卡(台新銀行) | String | |
71 | CREDITCARD_NCCC | 信用卡(聯信) | String | |
72 | CREDITCARD_CTBC | 信用卡(中信銀行) | String | |
73 | CREDITCARD_KGIBANK | 信用卡(凱基銀行) | String | |
74 | CREDITCARD_YUANTABANK | 信用卡(元大銀行) | String | |
75 | CREDITCARD_CUB | 信用卡(國泰世華銀行) | String | |
76 | CREDITCARD_BANKSINOPAC | 信用卡(永豐銀行) | String | |
77 | CREDITCARD_MEGABANK | 信用卡(兆豐銀行) | String | |
78 | CREDITCARD_GLOBALPAYMENTS | 信用卡(環匯亞太) | String | |
79 | AMEX_TSIB | 美國運通(台新銀行) | String | |
80 | AMEX_CTBC | 美國運通(中信銀行) | String | |
81 | AMEX_NCCC | 美國運通(聯信) | String | |
82 | UNIONPAY_TCB | 銀聯卡(合庫銀行) | String | |
83 | UNIONPAY_ESUNBANK | 銀聯卡(玉山銀行) | String | |
84 | UNIONPAY_NCCC | 銀聯卡(聯信) | String | |
85 | UNIONPAY_TSIB | 銀聯卡(台新銀行) | String | |
86 | UNIONPAY_KGIBANK | 銀聯卡(凱基銀行) | String | |
87 | UNIONPAY_YUANTABANK | 銀聯卡(元大銀行) | String | |
88 | UNIONPAY_BANKSINOPAC | 銀聯卡(永豐銀行) | String | |
89 | UNIONPAY_CUB | 銀聯卡(國泰世華銀行) | String | |
90 | BARCODE_SKBANK | 超商繳費條碼(新光銀行) | String | |
91 | BARCODE_ESUNBANK | 超商繳費條碼(玉山銀行) | String | |
92 | BARCODE_CTBC | 超商繳費條碼(中信銀行) | String | |
93 | TWPAY_BOT | 台灣Pay(台灣銀行) | String | |
94 | TWPAY_LANDBANK | 台灣Pay(台灣土地銀行) | String | |
95 | TWPAY_TCB | 台灣Pay(合庫銀行) | String | |
96 | TWPAY_FIRSTBANK | 台灣Pay(第一銀行) | String | |
97 | TWPAY_HNCB | 台灣Pay(華南銀行) | String | |
98 | TWPAY_CHB | 台灣Pay(彰化銀行) | String | |
99 | TWPAY_SCSB | 台灣Pay(上海商銀) | String | |
100 | TWPAY_CUB | 台灣Pay(國泰世華銀行) | String | |
101 | TWPAY_MEGABANK | 台灣Pay(兆豐銀行) | String | |
102 | TWPAY_BOK | 台灣Pay(高雄銀行) | String | |
103 | TWPAY_TBB | 台灣Pay(台灣企銀) | String | |
104 | TWPAY_KTB | 台灣Pay(京城銀行) | String | |
105 | TWPAY_HWATAIBANK | 台灣Pay(華泰銀行) | String | |
106 | TWPAY_SUNNYBANK | 台灣Pay(陽信銀行) | String | |
107 | TWPAY_KSCC | 台灣Pay(基隆二信) | String | |
108 | TWPAY_TFCCBANK | 台灣Pay(淡水一信) | String | |
109 | TWPAY_HCFCBANK | 台灣Pay(新竹一信) | String | |
110 | TWPAY_TSCA | 台灣Pay(台中二信) | String | |
111 | TWPAY_CH6C | 台灣Pay(彰化六信) | String | |
112 | TWPAY_HL2C | 台灣Pay(花蓮二信) | String | |
113 | TWPAY_ESUNBANK | 台灣Pay(玉山銀行) | String | |
114 | TWPAY_TSIB | 台灣Pay(台新銀行) | String | |
115 | TWPAY_AFISC | 台灣Pay(農金資) | String | |
116 | TWPAY_YUANTABANK | 台灣Pay(元大銀行) | String | |
117 | TWPAY_CTBC | 台灣Pay(中信銀行) | String | |
118 | TWPAY_FAST | 台灣Pay(南農中心) | String | |
119 | TWPAY_SCU | 台灣Pay(南資中心) | String | |
120 | DS_SHINSHIN | 欣欣大眾 | String | |
121 | DS_MINGYAO | 明曜百貨 | String | |
122 | DS_DAYEH | 大葉高島屋 | String | |
123 | DS_CHUNGYO | 中友百貨 | String | |
124 | DS_KSSOGO | 廣三SOGO百貨 | String | |
125 | DS_FOCUSQUARE | Focus時尚流行館 | String | |
126 | DS_NICEPLAZA | 耐斯廣場 | String | |
127 | DS_DREAMMALL | 夢時代購物中心 | String | |
128 | DS_UNIUSTYLE | 統一時代百貨 | String | |
129 | DS_PARKLANES | 金典綠園道商場 | String | |
130 | DS_CITYPLAZA | 大都會廣場 | String | |
131 | DS_LIHPAOMALL | 麗寶百貨廣場 | String | |
132 | DS_EDORAPARK | 瀚星百貨 | String | |
133 | DS_BEYONDPLAZA | 比漾廣場 | String | |
134 | DS_HAYASHI | 林百貨 | String | |
135 | DS_SHINESQUARE | 昕境廣場 | String | |
136 | DS_LANDMARKLIFEPLAZA | 置地生活廣場 | String | |
137 | DS_TONLIN | 統領廣場 | String | |
138 | DS_HONHUI | 宏匯廣場 | String | |
139 | DS_TSRD | 南紡購物中心 | String | |
140 | DS_FEDS_XINYIA13 | 遠東百貨-遠百信義 A13 | String | |
141 | DS_FEDS_BANQIAO | 遠東百貨-板橋中山店 | String | |
142 | DS_FEDS_TAOYUAN | 遠東百貨-桃園店 | String | |
143 | DS_FEDS_ZHUPEI | 遠東百貨-竹北店 | String | |
144 | DS_FEDS_CHIAYI | 遠東百貨-嘉義店 | String | |
145 | DS_FEDS_HUALIEN | 遠東百貨-花蓮店 | String | |
146 | DS_FEDS_MEGACITY_BANQIAO | 遠東百貨-MegaCity板橋大遠百 | String | |
147 | DS_FEDS_HSINCHU | 遠東百貨-新竹大遠百 | String | |
148 | DS_FEDS_TOPCITY_TAICHUNG | 遠東百貨-Top City台中大遠百 | String | |
149 | DS_FEDS_TAINAN_GONGYUAN | 遠東百貨-台南大遠百公園店 | String | |
150 | DS_FEDS_TAINAN_CHENGKUNG | 遠東百貨-台南大遠百成功店 | String | |
151 | DS_FEDS_KAOHSIUNG | 遠東百貨-高雄大遠百 | String | |
152 | DS_SKM_XINYI | 新光三越-台北信義新天地 | String | |
153 | DS_SKM_TAIPEI_STATION | 新光三越-台北站前店 | String | |
154 | DS_SKM_TAIPEI_NANJING_W | 新光三越-台北南西店 | String | |
155 | DS_SKM_TAIPEI_TIANMU | 新光三越-台北天母店 | String | |
156 | DS_SKM_TAOYUAN_STATION | 新光三越-桃園站前店 | String | |
157 | DS_SKM_TCAIHUNG_PORT | 新光三越-台中中港店 | String | |
158 | DS_SKM_CHIAYI_CHUIYANG | 新光三越-嘉義垂楊店 | String | |
159 | DS_SKM_TAINAN_ZHONGSHAN | 新光三越-台南中山店 | String | |
160 | DS_SKM_TAINAN_XIMEN | 新光三越-台南西門店 | String | |
161 | DS_SKM_KAOHSIUNG_SANDUO | 新光三越-高雄三多店 | String | |
162 | DS_SKM_KAOHSIUNG_ZUOYING | 新光三越-高雄左營店 | String | |
163 | DS_SKM_PARK | 新光三越-SKM Park Outlets 高雄草衙 | String | |
164 | DS_SOGO_TAIPEI_ZHONGXIAO | 遠東SOGO百貨-台北忠孝館 | String | |
165 | DS_SOGO_TAIPEI_FUXING | 遠東SOGO百貨-台北復興館 | String | |
166 | DS_SOGO_TAIPEI_DUNHUA | 遠東SOGO百貨-台北敦化館 | String | |
167 | DS_SOGO_TIANMU | 遠東SOGO百貨-天母店 | String | |
168 | DS_SOGO_ZHONGLI | 遠東SOGO百貨-中壢店 | String | |
169 | DS_SOGO_HSINCHU | 遠東SOGO百貨-新竹店 | String | |
170 | DS_SOGO_KAOHSIUNG | 遠東SOGO百貨-高雄店 | String | |
171 | DS_PACIFIC_FENGYUAN | 太平洋百貨-豐原 | String | |
172 | DS_PACIFIC_PINGTUNG | 太平洋百貨-屏東 | String | |
173 | DS_PACIFIC_SUNNYPARK | 太平洋百貨-Sunny Park日光廣場 | String | |
174 | DS_PACIFIC_PINGTUNG_GONGYONG | 太平洋百貨-屏東驛站商場 | String | |
175 | DS_PACIFIC_PINGTUNG_GUANGFU | 太平洋百貨-屏東轉運站商場 | String | |
176 | DS_PACIFIC_CHAOZHOU | 太平洋百貨-潮州驛站商場 | String | |
177 | DS_HANSHIN_KAOHSIUNG | 漢神百貨 | String | |
178 | DS_HANSHIN_ARENA | 漢神巨蛋購物廣場 | String | |
179 | DS_BREEZE_CENTER | 微風廣場 | String | |
180 | DS_BREEZE_TAIPEISTATION | 微風台北車站 | String | |
181 | DS_BREEZE_NTUHOSPITAL | 微風台大醫院商場 | String | |
182 | DS_BREEZE_NANJING | 微風南京 | String | |
183 | DS_BREEZE_XINYI | 微風信義 | String | |
184 | DS_BREEZE_SONGGAO | 微風松高 | String | |
185 | DS_BREEZE_NANSHAN | 微風南山 | String | |
186 | DS_BREEZE_TSGHOSPITAL | 微風三總商店街 | String | |
187 | DS_BREEZE_ACADEMIASINICA | 微風中央研究院 | String | |
188 | DS_GM_ZHONGHE | GlobalMall-新北中和 | String | |
189 | DS_GM_BANQIAO | GlobalMall-環球板橋車站 | String | |
190 | DS_GM_A8 | GlobalMall-環球桃園A8 | String | |
191 | DS_GM_A19 | GlobalMall-環球桃園A19 | String | |
192 | DS_GM_A9 | GlobalMall-環球林口A9 | String | |
193 | DS_GM_NANGANG | GlobalMall-環球南港車站 | String | |
194 | DS_GM_XINZUOYING | GlobalMall-環球新左營車站 | String | |
195 | DS_GM_PINGTUNG | GlobalMall-環球屏東市 | String | |
196 | DS_TRK_MALL | 大魯閣新時代購物中心 | String | |
197 | DS_TRK_SQUARE | 大魯閣湳雅廣場 | String | |
198 | DS_TALEE_WUFU | 大立大統五福店 | String | |
200 | DS_TALEE_A | 大立百貨A館 | String | |
201 | DS_TALEE_B | 大立百貨B館 | String | |
202 | DS_MITSUI_OUTLET_TAICHUNGPORT | MITSUI OUTLET PARK 台中港 | String | |
203 | DS_MITSUI_OUTLET_TAINAN | MITSUI OUTLET PARK 台南 | String | |
204 | DS_MITSUI_OUTLET_LINKOU | MITSUI OUTLET PARK 林口 | String | |
205 | DS_MITSUI_LALAPORT_TAICHUNG | Mitsui Shopping Park LaLaport 台中 | String |
信用卡資料欄位說明(dataJson)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | cvv | 安全碼 | String | |
2 | cardCode | 信用卡卡號 | String | |
3 | cardExp | 有效期日 | String |
資料內容所屬支付名稱欄位說明(resultContentType)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | E_COLLECTION | 虛擬帳號 (ATM轉帳) | String | |
2 | IBON | iBON | String | |
3 | FAMIPORT | FamiPort | String | |
4 | LIFEET | LIFE-ET | String | |
5 | WEBATM | WEBATM | String | |
6 | CREDITCARD | 信用卡 | String | |
7 | UNIONPAY | 銀聯卡 | String | |
8 | SVC | 點數卡(GASH ,Imoney) | String | |
9 | ABROAD | 海外信用卡 | String | |
10 | ALIPAY | 支付寶線上 | String | |
11 | 微信支付線上 | String | ||
12 | LINEPAYON | LINE Pay線上付款 | String | |
13 | LINEPAYOFF | LINE Pay線下付款 | String | |
14 | WECHATOFF | 微信支付線下 | String | |
15 | APPLEPAY | APPLE PAY | String | |
16 | GOOGLEPAY | Google Pay | String | |
17 | EACH | eACH交易 | String | |
18 | CARDLESS | 無卡分期 | String | |
19 | PION | Pi 拍錢包線上 | String | |
20 | PIOFF | Pi 拍錢包線下 | String | |
21 | AMEX | 美國運通 | String | |
22 | JKOON | 街口支付線上 | String | |
23 | JKOOFF | 街口支付線下 | String | |
24 | ALIPAYOFF | 支付寶線下 | String | |
25 | EASYWALLETON | 悠遊付線上 | String | |
26 | EASYWALLETOFF | 悠遊付線下 | String | |
27 | TWPAYOFF | 台灣Pay線下 | String | |
28 | PXPAYOFF | 全支付線下 | String | |
29 | AFP | 後付款 | String | |
30 | BARCODE | 超商繳費代碼 | String |
範例
//金流交易API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
TransactionRepo transactionRepo = TransactionRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
SendTransactionRequest request = SendTransactionRequest(
deviceId: '設備ID',
storeUid: '特店代號',
cost: '訂單總金額',
orderId: '訂單編號',
items: 商品列表,
pfn: '付費方法',
dataJson: '信用卡資訊輸入(JSON格式)',
);
//呼叫API
transactionRepo.callSendTransactionRestfulApi(
request,
TestSendTransaction(),
);
//實作API的Callback(class名稱請自行定義)
class TestSendTransaction implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
SendTransactionResponse response = apiResponse as SendTransactionResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
退款API(callRefundRestfulApi)
Request欄位說明(RefundRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | uid | 要退款的訂單uid | String | 必要 |
4 | key | 要退款的訂單key | String | 必要 |
5 | cost | 退款金額(實際支付金額) | String | 必要 |
6 | deviceName | 設備名稱 | String | |
7 | invoiceState | 若有開立電子發票,指定電子發票使用作廢或折讓 注意:跨發票月份無法作廢: 0=沒有發票 4=作廢或作廢重開(預設) 6=折讓 |
String | |
8 | items | 退款項目 若使用電子發票,此欄位必填 退款項目之項目名稱必須和交易時之產品項目名稱相同 退款項目之總金額必須與退款金額一致 注意:若為全額退款時,不帶此欄位項目,系統會自動補齊 |
List | 請參考Item欄位說明 |
9 | platformFee | 平台手續費 注意:此費用欄位限定角色為經銷商發動才有效 注意:平台商須有權限才能設置此費用 注意:此費用會從退款金額上扣除,故平台手續費 + 指定消費者負擔匯費 不可以大於退款金額 |
int |
Response欄位說明(RefundResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String | |
4 | uid | 訂單uid | String | |
5 | key | 訂單key | String | |
6 | rowData | 退款資訊(即時退款才有此資訊) | object | 請參考退款資訊欄位說明 |
退款資訊欄位說明(RefundRowDataResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | uid | 原MYPAYLINK 之交易流水號 | String | |
2 | refundUid | 退款之交易流水號(若多次退款,每次皆會不同) | String | |
3 | key | 交易驗証碼 | String | |
4 | prc | 主要交易回傳碼(retcode) | String | |
5 | finishtime | 退款處理完成時間(YYYYMMDDHHmmss) | String | |
6 | orderId | 訂單編號 | String | |
7 | userId | 消費者帳號 | String | |
8 | cost | 申請之退款金額 | String | |
9 | currency | 申請之退款幣別 | String | |
10 | actualCost | 實際退款金額 | String | |
11 | actualCurrency | 實際退款幣別 | String | |
12 | retmsg | 回傳訊息 | String | |
13 | pfn | 付費方法 | String | |
14 | refundType | 退款類型: 1=直接線上退款 2=手動退款(信用卡類) 3=手動退款(現金類) |
String | |
15 | expectedRefundDate | 現金退款預計退款日(YYYYMMDD) | String | |
16 | sysEcho | 內部系統紀錄echo | String | |
17 | supplierCode | 交易之金融服務商代碼 | String | |
18 | echo0 | 自訂回傳參數 1 | String | |
19 | echo1 | 自訂回傳參數 2 | String | |
20 | echo2 | 自訂回傳參數 3 | String | |
21 | echo3 | 自訂回傳參數 4 | String | |
22 | echo4 | 自訂回傳參數 5 | String |
範例
//退款API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
TransactionRepo transactionRepo = TransactionRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
RefundRequest request = RefundRequest(
deviceId: '設備ID',
storeUid: '特店代號',
uid: '要退款的訂單uid',
key: '要退款的訂單key',
cost: '退款金額(實際支付金額)',
deviceName: '設備名稱',
);
//呼叫API
transactionRepo.callRefundRestfulApi(
request,
TestRefund(),
);
//實作API的Callback(class名稱請自行定義)
class TestRefund implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
RefundResponse response = apiResponse as RefundResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
單一交易查詢API(callQuerySingleTransactionRestfulApi)
Request欄位說明(QuerySingleTransactionRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | uid | 要查詢的訂單uid | String | 必要 |
4 | key | 要查詢的訂單key | String | 必要 |
Response欄位說明(QuerySingleTransactionResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String | |
4 | uid | 訂單uid | String | |
5 | key | 訂單key | String | |
6 | prc | 主要交易回傳碼(retcode) | String | |
7 | finishtime | 交易完成時間(YYYYMMDDHHmmss) | String | |
8 | cardno | 銀行端口回傳碼 | String | |
9 | acode | 授權碼 | String | |
10 | cardType | 信用卡卡別: 0=無法辨識或支付方式為非信用卡類 1=VISA 2=MasterCard 3=JCB 4=AMEX |
String | |
11 | issuingBank | 發卡行 | String | |
12 | issuingBankUid | 發卡銀行代碼 | String | |
13 | isAgentCharge | 是否為經銷商代收費模式: 0=不是經銷商代收費模式 1=是經銷商代收費模式 |
int | |
14 | transactionMode | 交易服務類型: 0=尚未進行閘道交易 1=代收代付 2=特店模式 |
String | |
15 | supplierName | 交易之金融服務商 | String | |
16 | supplierCode | 交易之金融服務商代碼 | String | 請參考金流供應商代碼欄位說明 |
17 | orderId | 訂單編號 | String | |
18 | userId | 消費者帳號 | String | |
19 | cost | 總交易金額 | String | |
20 | currency | 原交易幣別 | String | |
21 | actualCost | 實際交易金額 | String | |
22 | actualCurrency | 實際交易幣別 | String | |
23 | price | 請求交易點數/金額 | String | |
24 | actualPrice | 實際交易點數/金額 | String | |
25 | rechargeCode | 交易產品代碼 | String | |
26 | loveCost | 愛心捐款金額 | String | |
27 | retmsg | 回傳訊息 | String | |
28 | payModeUid | 付費方法編號 | String | |
29 | actualPayMode | 自行收款付款方式 | String | 請參考自行收款付款方式說明,當付費方法為【CASH】時,這裡帶入的值表示以此種方式自行收款,但在金流交易會有對應的紀錄 |
30 | pfn | 付費方法 | String | |
31 | transType | 付款種類: 1=一般 (預設) 2=分期 3=紅利 |
String | |
32 | bankId | 虛擬帳號銀行代碼 | String | |
33 | expiredDate | 有效日期(YYYYMMDDHHmmss) 虛擬帳號、超商代碼、無卡分期資訊 |
String | |
34 | appropriationDate | 預計撥款日期(YYYYMMDD) | String | |
35 | resultType | 虛擬帳號、超商代碼 資料格式類型: 0=無法辨識 1=網址 2=超連結本文 3=xml 4=json 5=csv 6=串流 |
String | |
36 | resultContentType | 資料內容所屬支付名稱 | String | 請參考資料內容所屬支付名稱欄位說明 |
37 | resultContent | 虛擬帳號、超商代碼 資料內容 | String | |
38 | refundOrder | 退款訂單資訊(多筆格式) | List | |
39 | cancelOrder | 取消訂單資訊(多筆格式) | List | |
40 | invoiceState | 發票開立狀態: 0=不處理或已無效(預設) 1=等候處理中 2=發票開立成功 3=發票開立失敗(系統或特約商店發票相關設定不正確) 4=作癈 5=發票開立失敗(系統發生錯誤) 6=折讓 |
String | |
41 | invoiceDate | 發票開立日期(YYYYMMDD) | String | |
42 | invoiceWordtrack | 發票字軌 | String | |
43 | invoiceNumber | 發票號碼 | String | |
44 | invoiceRandCode | 電子發票隨機碼 | String | |
45 | invoiceSellerBan | 賣方統一編號 | String | |
46 | invoiceSellerName | 賣方名稱 | String | |
47 | invoiceBuyerBan | 買方統一編號 | String | |
48 | invoiceBuyerName | 買方名稱 | String | |
49 | invoiceLeftQrcode | 電子發票左邊QrCode內容 | String | |
50 | invoiceMiddleBarcode | 電子發票中間Barcode內容(格式Code-39) | String | |
51 | invoiceRightQrcode | 電子發票右邊QrCode內容 | String | |
52 | invoiceTitleType | 電子發票列印標題格式: 1=文字 2=圖形(圖片網址) |
String | |
53 | invoiceTitle | 電子發票列印標題 | String | |
54 | invoicePrintType | 電子發票列印類型: 0=不列印 自行處置 1=列印 電子發票 + 商品明細 2=只印電子發票 3=只印商品明細 |
String | |
55 | invoicePrintDevice | 電子發票列印設備: 0=自行處理 1=SUNMI V2 PRO |
String | |
56 | invoiceAmount | 電子發票銷售總額 | String | |
57 | invoiceSalesAmount | 電子發票銷售額 | String | |
58 | invoiceTaxAmount | 電子發票稅額 | String | |
59 | invoiceOrderDetail | 電子發票全部產品明細(JSON格式): Description=商品名稱 Quantity=數量 UnitPrice=單價 Amount=總金額 |
String | |
60 | invoiceRatetype | 電子發票稅率別: 1=應稅(預設) 2=零稅率 3=免稅 |
String | |
61 | invoiceTaxRate | 電子發票稅率:預設0.05(零稅與免稅帶0) | double | |
62 | invoiceRemark | 發票註記(依加值中心提供註記功能) | String | |
63 | invoiceInputType | 電子發票開立類型: 0=未使用電子發票開立 1=雲端發票 2=發票捐贈 3=實體發票 |
String | |
64 | invoiceCloudType | 電子發票開立類型-雲端發票類型: 0=未使用雲端發票類型 2=手機條碼 3=自然人憑證條碼 4=以E-Mail寄送 |
String | |
65 | invoiceMobileCode | 當invoiceCloudType為2時紀錄的手機條碼 | String | |
66 | invoiceTaxId | 當invoiceCloudType為2時紀錄的統一編號 | String | |
67 | invoiceTaxTitle | 當invoiceCloudType為2時紀錄的買受人公司名稱 | String | |
68 | invoiceNaturalPerson | 當invoiceCloudType為3時紀錄的自然人憑證條碼 | String | |
69 | invoiceMPostZone | 當invoiceCloudType為4時紀錄中獎時紙本發票郵遞區號 | String | |
70 | invoiceMAddress | 當invoiceCloudType為4時紀錄中獎時紙本發票收件住址 | String | |
71 | invoiceLoveCode | 當invoiceInputType為2時紀錄的愛心碼 | String | |
72 | invoiceB2bTitle | 當invoiceInputType為3時紀錄的發票抬頭 | String | |
73 | invoiceB2bId | 當invoiceInputType為3時紀錄的統一編號 | String | |
74 | invoiceB2bPostZone | 當invoiceInputType為3時紀錄的郵遞區號 | String | |
75 | invoiceB2bAddress | 當invoiceInputType為3時紀錄的發票地址 | String | |
76 | invoiceAllowance | 電子發票折讓資訊: uid=發生之退款交易流水號(UID) allowance_date=折讓時間 allowance_no=折讓單號 cancel_date=作廢時間 amount=電子發票折讓金額 order_detail=電子發票折讓明細(JSON格式) |
List | |
77 | items | 訂單商品項目 | List | 請參考Item欄位說明 |
78 | echo0 | 自訂回傳參數 1 | String | |
79 | echo1 | 自訂回傳參數 2 | String | |
80 | echo2 | 自訂回傳參數 3 | String | |
81 | echo3 | 自訂回傳參數 4 | String | |
82 | echo4 | 自訂回傳參數 5 | String |
金流供應商代碼欄位說明(supplierCode)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | A1 | 裕富數位資融 | String | |
2 | A2 | 三環亞洲 | String | |
3 | B0 | 新光銀行 | String | |
4 | B1 | 永豐銀行 | String | |
5 | B2 | 合作金庫 | String | |
6 | B3 | 台北富邦 | String | |
7 | B4 | 玉山銀行 | String | |
8 | B5 | 台新銀行 | String | |
9 | B6 | 聯合信用卡處理中心 | String | |
10 | B7 | 台中商銀 | String | |
11 | B8 | 中國信託商業銀行 | String | |
12 | B9 | 上海商業儲蓄銀行 | String | |
13 | BA | 第一銀行 | String | |
14 | BB | 元大商業銀行 | String | |
15 | BC | 凱基銀行 | String | |
16 | BD | 國泰世華商業銀行 | String | |
17 | BE | 華泰商業銀行 | String | |
18 | BF | 兆豐銀行 | String | |
19 | BG | 環滙亞太 | String | |
20 | BH | 彰化銀行 | String | |
21 | BI | 土地銀行 | String | |
22 | S0 | 全網行銷股份有限公司(FamiPort) | String | |
23 | S1 | 安源資訊股份有限公司(ibon) | String | |
24 | S2 | 萊爾富國際股份有限公司(Hi-Life) | String | |
25 | T0 | 高鉅科技 | String | |
26 | T1 | 藍新金流 | String | |
27 | T2 | 統一客樂得(黑貓Pay) | String | |
28 | W0 | 統振 | String | |
29 | W1 | 遊戲橘子數位 | String | |
30 | W2 | 台灣連線(LINEPay) | String | |
31 | W3 | 博經 | String | |
32 | W4 | 街口電子支付 | String | |
33 | W5 | 悠遊卡 | String | |
34 | W6 | 一卡通票證 | String | |
35 | W7 | iCash | String | |
36 | W8 | 全支付(PXPay plus) | String | |
37 | W9 | 拍付國際資訊(Pi錢包) | String | |
38 | WA | 全盈支付(全盈+Pay) | String | |
39 | E0 | MYTIX | String |
範例
//單一交易查詢API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
TransactionRepo transactionRepo = TransactionRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
QuerySingleTransactionRequest request = QuerySingleTransactionRequest(
deviceId: '設備ID',
storeUid: '特店代號',
uid: '要查詢的訂單uid',
key: '要查詢的訂單key',
);
//呼叫API
transactionRepo.callQuerySingleTransactionRestfulApi(
request,
TestQuerySingleTransaction(),
);
//實作API的Callback(class名稱請自行定義)
class TestQuerySingleTransaction implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
QuerySingleTransactionResponse response = apiResponse as QuerySingleTransactionResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
交易查詢API(callQueryTransactionRestfulApi)
Request欄位說明(QueryTransactionRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | orderId | 訂單編號 | String | 必要 |
4 | cost | 訂單總金額 | String | 必要 |
4 | userId | 消費者帳號 | String |
Response欄位說明(QueryTransactionResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String | |
4 | rows | 查詢資料清單 | List | 交易成功可能含多筆退款或取消以及發票等相關資訊 每筆『交易查詢』欄位請參考交易查詢欄位說明 |
交易查詢欄位說明(BaseTransactionResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | uid | 訂單uid | String | |
2 | key | 訂單key | String | |
3 | prc | 主要交易回傳碼(retcode) | String | |
4 | finishtime | 交易完成時間(YYYYMMDDHHmmss) | String | |
5 | cardno | 銀行端口回傳碼 | String | |
6 | acode | 授權碼 | String | |
7 | cardType | 信用卡卡別: 0=無法辨識或支付方式為非信用卡類 1=VISA 2=MasterCard 3=JCB 4=AMEX |
String | |
8 | issuingBank | 發卡行 | String | |
9 | issuingBankUid | 發卡銀行代碼 | String | |
10 | isAgentCharge | 是否為經銷商代收費模式: 0=不是經銷商代收費模式 1=是經銷商代收費模式 |
int | |
11 | transactionMode | 交易服務類型: 0=尚未進行閘道交易 1=代收代付 2=特店模式 |
String | |
12 | supplierName | 交易之金融服務商 | String | |
13 | supplierCode | 交易之金融服務商代碼 | String | 請參考金流供應商代碼欄位說明 |
14 | orderId | 訂單編號 | String | |
15 | userId | 消費者帳號 | String | |
16 | cost | 總交易金額 | String | |
17 | currency | 原交易幣別 | String | |
18 | actualCost | 實際交易金額 | String | |
19 | actualCurrency | 實際交易幣別 | String | |
20 | price | 請求交易點數/金額 | String | |
21 | actualPrice | 實際交易點數/金額 | String | |
22 | rechargeCode | 交易產品代碼 | String | |
23 | loveCost | 愛心捐款金額 | String | |
24 | retmsg | 回傳訊息 | String | |
25 | payModeUid | 付費方法編號 | String | |
26 | actualPayMode | 自行收款付款方式 | String | 請參考自行收款付款方式說明,當付費方法為【CASH】時,這裡帶入的值表示以此種方式自行收款,但在金流交易會有對應的紀錄 |
27 | pfn | 付費方法 | String | |
28 | transType | 付款種類: 1=一般 (預設) 2=分期 3=紅利 |
String | |
29 | bankId | 虛擬帳號銀行代碼 | String | |
30 | expiredDate | 有效日期(YYYYMMDDHHmmss) 虛擬帳號、超商代碼、無卡分期資訊 |
String | |
31 | appropriationDate | 預計撥款日期(YYYYMMDD) | String | |
32 | resultType | 虛擬帳號、超商代碼 資料格式類型: 0=無法辨識 1=網址 2=超連結本文 3=xml 4=json 5=csv 6=串流 |
String | |
33 | resultContentType | 資料內容所屬支付名稱 | String | 請參考資料內容所屬支付名稱欄位說明 |
34 | resultContent | 虛擬帳號、超商代碼 資料內容 | String | |
35 | refundOrder | 退款訂單資訊(多筆格式) | List | |
36 | cancelOrder | 取消訂單資訊(多筆格式) | List | |
37 | invoiceState | 發票開立狀態: 0=不處理或已無效(預設) 1=等候處理中 2=發票開立成功 3=發票開立失敗(系統或特約商店發票相關設定不正確) 4=作癈 5=發票開立失敗(系統發生錯誤) 6=折讓 |
String | |
38 | invoiceDate | 發票開立日期(YYYYMMDD) | String | |
39 | invoiceWordtrack | 發票字軌 | String | |
40 | invoiceNumber | 發票號碼 | String | |
41 | invoiceRandCode | 電子發票隨機碼 | String | |
42 | invoiceSellerBan | 賣方統一編號 | String | |
43 | invoiceSellerName | 賣方名稱 | String | |
44 | invoiceBuyerBan | 買方統一編號 | String | |
45 | invoiceBuyerName | 買方名稱 | String | |
46 | invoiceLeftQrcode | 電子發票左邊QrCode內容 | String | |
47 | invoiceMiddleBarcode | 電子發票中間Barcode內容(格式Code-39) | String | |
48 | invoiceRightQrcode | 電子發票右邊QrCode內容 | String | |
49 | invoiceTitleType | 電子發票列印標題格式: 1=文字 2=圖形(圖片網址) |
String | |
50 | invoiceTitle | 電子發票列印標題 | String | |
51 | invoicePrintType | 電子發票列印類型: 0=不列印 自行處置 1=列印 電子發票 + 商品明細 2=只印電子發票 3=只印商品明細 |
String | |
52 | invoicePrintDevice | 電子發票列印設備: 0=自行處理 1=SUNMI V2 PRO |
String | |
53 | invoiceAmount | 電子發票銷售總額 | String | |
54 | invoiceSalesAmount | 電子發票銷售額 | String | |
55 | invoiceTaxAmount | 電子發票稅額 | String | |
56 | invoiceOrderDetail | 電子發票全部產品明細(JSON格式): Description=商品名稱 Quantity=數量 UnitPrice=單價 Amount=總金額 |
String | |
57 | invoiceRatetype | 電子發票稅率別: 1=應稅(預設) 2=零稅率 3=免稅 |
String | |
58 | invoiceTaxRate | 電子發票稅率:預設0.05(零稅與免稅帶0) | double | |
59 | invoiceRemark | 發票註記(依加值中心提供註記功能) | String | |
60 | invoiceInputType | 電子發票開立類型: 0=未使用電子發票開立 1=雲端發票 2=發票捐贈 3=實體發票 |
String | |
61 | invoiceCloudType | 電子發票開立類型-雲端發票類型: 0=未使用雲端發票類型 2=手機條碼 3=自然人憑證條碼 4=以E-Mail寄送 |
String | |
62 | invoiceMobileCode | 當invoiceCloudType為2時紀錄的手機條碼 | String | |
63 | invoiceTaxId | 當invoiceCloudType為2時紀錄的統一編號 | String | |
64 | invoiceTaxTitle | 當invoiceCloudType為2時紀錄的買受人公司名稱 | String | |
65 | invoiceNaturalPerson | 當invoiceCloudType為3時紀錄的自然人憑證條碼 | String | |
66 | invoiceMPostZone | 當invoiceCloudType為4時紀錄中獎時紙本發票郵遞區號 | String | |
67 | invoiceMAddress | 當invoiceCloudType為4時紀錄中獎時紙本發票收件住址 | String | |
68 | invoiceLoveCode | 當invoiceInputType為2時紀錄的愛心碼 | String | |
69 | invoiceB2bTitle | 當invoiceInputType為3時紀錄的發票抬頭 | String | |
70 | invoiceB2bId | 當invoiceInputType為3時紀錄的統一編號 | String | |
71 | invoiceB2bPostZone | 當invoiceInputType為3時紀錄的郵遞區號 | String | |
72 | invoiceB2bAddress | 當invoiceInputType為3時紀錄的發票地址 | String | |
73 | invoiceAllowance | 電子發票折讓資訊: uid=發生之退款交易流水號(UID) allowance_date=折讓時間 allowance_no=折讓單號 cancel_date=作廢時間 amount=電子發票折讓金額 order_detail=電子發票折讓明細(JSON格式) |
List | |
74 | items | 訂單商品項目 | List | 請參考Item欄位說明 |
75 | echo0 | 自訂回傳參數 1 | String | |
76 | echo1 | 自訂回傳參數 2 | String | |
77 | echo2 | 自訂回傳參數 3 | String | |
78 | echo3 | 自訂回傳參數 4 | String | |
79 | echo4 | 自訂回傳參數 5 | String |
範例
//交易查詢API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
TransactionRepo transactionRepo = TransactionRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
QueryTransactionRequest request = QueryTransactionRequest(
deviceId: '設備ID',
storeUid: '特店代號',
orderId: '訂單編號',
cost: '訂單總金額',
);
//呼叫API
transactionRepo.callQueryTransactionRestfulApi(
request,
TestQueryTransaction(),
);
//實作API的Callback(class名稱請自行定義)
class TestQueryTransaction implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
QueryTransactionResponse response = apiResponse as QueryTransactionResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
設備相關(DeviceRepo)
更新發票資訊API(callUpdateInvoiceInfoRestfulApi)
Request欄位說明(UpdateInvoiceInfoRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | uid | 訂單uid | String | 必要 |
4 | key | 訂單key | String | 必要 |
5 | content | 發票資訊 | object | 必要,請參考發票資訊欄位說明 |
發票資訊欄位說明(InvoiceRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | mode | 發票開立模式: 0=不執行開立 1=開立紙本模式(預設) 2=非紙本模式(僅開立日期與發票號碼) |
int | 必要 |
2 | date | 發票開立日期時間(YYYYMMDDHHmmss) | String | 必要 |
3 | wordtrack | 發票字軌 | String | 必要 |
4 | number | 發票號碼 | String | 必要 |
5 | randCode | 隨機碼 | String | 必要 |
6 | sellerBan | 賣方統編 | String | 必要 |
7 | sellerName | 賣方名稱 | String | 必要 |
8 | leftQrcode | 左邊QrCode(電子發票查詢碼) | String | 必要 |
9 | middleBarcode | 中間Barcode (Code-39格式) | String | 必要 |
10 | rightQrcode | 右邊QrCode(電子發票產品資訊-精簡版) | String | 必要 |
11 | titleType | 電子發票列印標題格式: 1=文字 2=圖形(圖片網址) |
int | 必要 |
12 | title | 電子發票標題 | String | 必要 |
13 | amount | 電子發票開立總額 | int | 必要 |
14 | ratetype | 電子發票稅率別: 1=應稅(預設) 2=零稅率 3=免稅 |
int | 必要 |
15 | inputType | 電子發票開立類型: 0=未使用電子發票開立 1=雲端發票 2=發票捐贈 3=實體發票 |
int | 必要 |
16 | orderDetail | 電子發票開立之產品詳細資訊(JSON資料): Description=商品名稱 Quantity=數量 UnitPrice=單價 Amount=總金額 |
String | 必要 |
17 | taxRate | 稅率 應稅帶值0.05(default) 或特種稅率值 零稅與免稅帶0 |
double | |
18 | cloudType | 電子發票開立類型-雲端發票類型: 0=未使用雲端發票類型 2=手機條碼 3=自然人憑證條碼 4=以E-Mail寄送 |
int | |
19 | mobileCode | 當cloudType為2時紀錄的手機條碼 | String | |
20 | taxId | 當cloudType為2時紀錄的統一編號 | String | |
21 | taxTitle | 當cloudType為2時紀錄的買受人公司名稱 | String | |
22 | naturalPerson | 當cloudType為3時紀錄的自然人憑證條碼 | String | |
23 | 當cloudType為4時的E-Mail | String | ||
24 | mPostZone | 當cloudType為4時紀錄中獎時紙本發票郵遞區號 | String | |
25 | mAddress | 當cloudType為4時紀錄中獎時紙本發票收件住址 | String | |
26 | loveCode | 當inputType為2時紀錄的愛心碼 | String | |
27 | b2bTitle | 當inputType為3時紀錄的發票抬頭 | String | |
28 | b2bId | 當inputType為3時紀錄的統一編號 | String | |
29 | b2bPostZone | 當inputType為3時紀錄的郵遞區號 | String | |
30 | b2bAddress | 當inputType為3時紀錄的發票地址 | String | |
31 | mainRemark | 發票註記(依加值中心提供註記功能) | String | |
32 | name | 會員姓名 | String | |
33 | tel | 家用電話 | String | |
34 | mobilePhone | 手機號碼 | String | |
35 | hardCopy | 是否索取紙本: 0=否(預設) 1=是(非載具非捐款模式下,強制為是) |
int | |
36 | sendMail | 是否寄送mail: 0=否(預設) 1=是 |
int |
Response欄位說明(UpdateInvoiceInfoResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String | |
4 | content | 回傳訊息 | object | 請參考由設備開立發票回傳系統-發票內容欄位說明 |
由設備開立發票回傳系統-發票內容欄位說明
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | state | 發票開立狀態: 0=不處理(預設) 1=等候處理中 2=發票處理成功 3=發票處理失敗 4=作癈 |
String | |
2 | stateMsg | 發票開立狀態訊息 | String | |
3 | date | 發票開立日期時間(YYYYMMDDHHmmss) | String | |
4 | wordtrack | 發票字軌 | String | |
5 | number | 發票號碼 | String | |
6 | randCode | 隨機碼 | String | |
7 | sellerBan | 賣方統編 | String | |
8 | sellerName | 賣方名稱 | String | |
9 | buyerBan | 買方統編 | String | |
10 | buyerName | 買方名稱 | String | |
11 | leftQrcode | 左邊QrCode(電子發票查詢碼) | String | |
12 | middleBarcode | 中間Barcode (Code-39格式) | String | |
13 | rightQrcode | 右邊QrCode(電子發票產品資訊-精簡版) | String | |
14 | titleType | 電子發票列印標題格式: 1=文字 2=圖形(圖片網址) |
int | |
15 | title | 電子發票標題 | String | |
16 | amount | 電子發票開立總額 | String | |
17 | salesAmount | 電子發票銷售額 | String | |
18 | taxAmount | 電子發票稅額 | String | |
19 | orderDetail | 電子發票開立之產品詳細資訊(JSON資料): Description=商品名稱 Quantity=數量 UnitPrice=單價 Amount=總金額 |
String | |
20 | ratetype | 電子發票稅率別: 1=應稅(預設) 2=零稅率 3=免稅 |
int | |
21 | taxRate | 電子發票稅率:預設0.05(零稅與免稅帶0) | double | |
22 | remark | 發票註記(依加值中心提供註記功能) | String | |
23 | inputType | 電子發票開立類型: 0=未使用電子發票開立 1=雲端發票 2=發票捐贈 3=實體發票 |
int | |
24 | cloudType | 電子發票開立類型-雲端發票類型: 0=未使用雲端發票類型 2=手機條碼 3=自然人憑證條碼 4=以E-Mail寄送 |
String | |
25 | mobileCode | 當invoiceCloudType為2時紀錄的手機條碼 | String | |
26 | taxId | 當cloudType為2時紀錄的統一編號 | String | |
27 | taxTitle | 當cloudType為2時紀錄的買受人公司名稱 | String | |
28 | naturalPerson | 當cloudType為3時紀錄的自然人憑證條碼 | String | |
29 | mPostZone | 當cloudType為4時紀錄中獎時紙本發票郵遞區號 | String | |
30 | mAddress | 當cloudType為4時紀錄中獎時紙本發票收件住址 | String | |
31 | loveCode | 當inputType為2時紀錄的愛心碼 | String | |
32 | b2bTitle | 當inputType為3時紀錄的發票抬頭 | String | |
33 | b2bId | 當inputType為3時紀錄的統一編號 | String | |
34 | b2bPostZone | 當inputType為3時紀錄的郵遞區號 | String | |
35 | b2bAddress | 當inputType為3時紀錄的發票地址 | String |
範例
//更新發票資訊API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
DeviceRepo deviceRepo = DeviceRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
InvoiceRequest content = InvoiceRequest(
mode: 1,
date: '20241015173153',
wordtrack: 'AA',
number: '00000158',
randCode: '4525',
sellerBan: '28915188',
sellerName: '高鉅科技',
leftQrcode: 'CA12340052113031245250000000A0000000A0000000028915188UxWJIDOq7P/f9/U1f+Zl4Q==:**********:1:1:1:法式料理:1:10',
middleBarcode: '11303CA123400524525',
rightQrcode: '**',
titleType: 2,
title: 'https://s3.ap-northeast-1.amazonaws.com/usecase.mypay.static.content.bucket/invoice/title/6690f79025718.png',
amount: 1,
ratetype: 1,
inputType: 3,
orderDetail: '[{"Amount":"10","Description":"法式料理","Id":"A0001","PrintOut":"1","Quantity":"1","UnitPrice":"10"}]',
);
UpdateInvoiceInfoRequest request = UpdateInvoiceInfoRequest(
deviceId: '設備ID',
storeUid: '特店代號',
uid: '訂單uid',
key: '訂單key',
content: content,
);
//呼叫API
deviceRepo.callUpdateInvoiceInfoRestfulApi(
request,
TestUpdateInvoiceInfo(),
);
//實作API的Callback(class名稱請自行定義)
class TestUpdateInvoiceInfo implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
UpdateInvoiceInfoResponse response = apiResponse as UpdateInvoiceInfoResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
設備訂單查詢API(callGetDeviceOrderListRestfulApi)
Request欄位說明(GetDeviceOrderListRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | beginTime | 查詢起始時間,格式:YYYYMMDDHHmmss(查詢期間不可以超過3天) | String | 必要 |
4 | endTime | 查詢結束時間,格式:YYYYMMDDHHmmss | String | 必要 |
5 | codes | 查詢之金流狀態碼 | List | 必要,請參考金流交易狀態碼欄位說明 |
金流交易狀態碼欄位說明
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | 000 | 分期付款,等候交易 (資料值近似null 和空白,故以此代碼代替) | String | |
2 | 100 | 系統收到資料不正確。 | String | |
3 | 200 | 系統收到正確資料。 | String | |
4 | 210 | 交易處理中 | String | |
5 | 220 | 取消成功 | String | |
6 | 230 | 退款完成 | String | |
7 | 240 | 完成對帳 | String | |
8 | 243 | 預先授權 | String | |
9 | 245 | 授權成功 | String | |
10 | 247 | 請款中 | String | |
11 | 250 | 交易成功。 | String | |
12 | 260 | 交易成功。超商代碼繳費-請等候消費者繳費入帳 | String | |
13 | 265 | 交易成功。無卡分期等候帳號綁定 | String | |
14 | 270 | 交易成功。虛擬帳號-請等候消費者繳費入帳 | String | |
15 | 275 | 交易成功。無卡支付-請等候服務商審核入帳 | String | |
16 | 280 | 交易成功。儲值/WEBATM-線上待付款/無卡支付等候放行 | String | |
17 | 282 | 訂單成立待貨運審核確認 | String | |
18 | 284 | 訂單成立待出貨 | String | |
19 | 290 | 交易成功。但金額不符 | String | |
20 | 300 | 交易失敗。 | String | |
21 | 380 | 交易逾時 | String | |
22 | 400 | 系統錯誤。 | String | |
23 | 500 | 中斷錯誤,請等候 25 分鐘 | String | |
24 | 600 | 交易結帳 (信用卡) | String | |
25 | A0001 | 等候中斷交易驗證。 | String | |
26 | A0002 | 未完成交易。 | String | |
27 | B200 | 執行成功 | String | |
28 | B500 | 執行失敗 | String | |
29 | V200 | 驗證成功 | String | |
30 | V500 | 驗證失敗 | String | |
31 | E200 | 電子錢包執行成功 | String | |
32 | E500 | 電子錢包執行失敗 | String | |
33 | E300 | 電子錢包功能關閉 | String |
Response欄位說明(GetDeviceOrderListResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼: 100=資料不正確 400=系統錯誤 B200=執行成功 B500=執行失敗 |
String | |
3 | msg | 回傳訊息 | String | |
4 | rows | 查詢資料清單 | List | 交易成功可能含多筆退款或取消以及發票等相關資訊 每筆請參考設備交易查詢欄位說明 |
設備交易查詢欄位說明
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | uid | 訂單uid | String | |
2 | key | 訂單key | String | |
3 | prc | 主要交易回傳碼(retcode) | String | |
4 | finishtime | 交易完成時間(YYYYMMDDHHmmss) | String | |
5 | cardno | 銀行端口回傳碼 | String | |
6 | acode | 授權碼 | String | |
7 | cardType | 信用卡卡別: 0=無法辨識或支付方式為非信用卡類 1=VISA 2=MasterCard 3=JCB 4=AMEX |
String | |
8 | issuingBank | 發卡行 | String | |
9 | issuingBankUid | 發卡銀行代碼 | String | |
10 | isAgentCharge | 是否為經銷商代收費模式: 0=不是經銷商代收費模式 1=是經銷商代收費模式 |
int | |
11 | transactionMode | 交易服務類型: 0=尚未進行閘道交易 1=代收代付 2=特店模式 |
String | |
12 | supplierName | 交易之金融服務商 | String | |
13 | supplierCode | 交易之金融服務商代碼 | String | 請參考金流供應商代碼欄位說明 |
14 | orderId | 訂單編號 | String | |
15 | userId | 消費者帳號 | String | |
16 | cost | 總交易金額 | String | |
17 | currency | 原交易幣別 | String | |
18 | actualCost | 實際交易金額 | String | |
19 | actualCurrency | 實際交易幣別 | String | |
20 | price | 請求交易點數/金額 | String | |
21 | actualPrice | 實際交易點數/金額 | String | |
22 | rechargeCode | 交易產品代碼 | String | |
23 | loveCost | 愛心捐款金額 | String | |
24 | retmsg | 回傳訊息 | String | |
25 | payModeUid | 付費方法編號 | String | |
26 | actualPayMode | 自行收款付款方式 | String | 請參考自行收款付款方式說明,當付費方法為【CASH】時,這裡帶入的值表示以此種方式自行收款,但在金流交易會有對應的紀錄 |
27 | pfn | 付費方法 | String | |
28 | transType | 付款種類: 1=一般 (預設) 2=分期 3=紅利 |
String | |
29 | bankId | 虛擬帳號銀行代碼 | String | |
30 | expiredDate | 有效日期(YYYYMMDDHHmmss) 虛擬帳號、超商代碼、無卡分期資訊 |
String | |
31 | appropriationDate | 預計撥款日期(YYYYMMDD) | String | |
32 | resultType | 虛擬帳號、超商代碼 資料格式類型: 0=無法辨識 1=網址 2=超連結本文 3=xml 4=json 5=csv 6=串流 |
String | |
33 | resultContentType | 資料內容所屬支付名稱 | String | 請參考資料內容所屬支付名稱欄位說明 |
34 | resultContent | 虛擬帳號、超商代碼 資料內容 | String | |
35 | refundOrder | 退款訂單資訊(多筆格式) | List | |
36 | cancelOrder | 取消訂單資訊(多筆格式) | List | |
37 | invoiceState | 發票開立狀態: 0=不處理或已無效(預設) 1=等候處理中 2=發票開立成功 3=發票開立失敗(系統或特約商店發票相關設定不正確) 4=作癈 5=發票開立失敗(系統發生錯誤) 6=折讓 |
String | |
38 | invoiceDate | 發票開立日期(YYYYMMDD) | String | |
39 | invoiceWordtrack | 發票字軌 | String | |
40 | invoiceNumber | 發票號碼 | String | |
41 | invoiceRandCode | 電子發票隨機碼 | String | |
42 | invoiceSellerBan | 賣方統一編號 | String | |
43 | invoiceSellerName | 賣方名稱 | String | |
44 | invoiceBuyerBan | 買方統一編號 | String | |
45 | invoiceBuyerName | 買方名稱 | String | |
46 | invoiceLeftQrcode | 電子發票左邊QrCode內容 | String | |
47 | invoiceMiddleBarcode | 電子發票中間Barcode內容(格式Code-39) | String | |
48 | invoiceRightQrcode | 電子發票右邊QrCode內容 | String | |
49 | invoiceTitleType | 電子發票列印標題格式: 1=文字 2=圖形(圖片網址) |
String | |
50 | invoiceTitle | 電子發票列印標題 | String | |
51 | invoicePrintType | 電子發票列印類型: 0=不列印 自行處置 1=列印 電子發票 + 商品明細 2=只印電子發票 3=只印商品明細 |
String | |
52 | invoicePrintDevice | 電子發票列印設備: 0=自行處理 1=SUNMI V2 PRO |
String | |
53 | invoiceAmount | 電子發票銷售總額 | String | |
54 | invoiceSalesAmount | 電子發票銷售額 | String | |
55 | invoiceTaxAmount | 電子發票稅額 | String | |
56 | invoiceOrderDetail | 電子發票全部產品明細(JSON格式): Description=商品名稱 Quantity=數量 UnitPrice=單價 Amount=總金額 |
String | |
57 | invoiceRatetype | 電子發票稅率別: 1=應稅(預設) 2=零稅率 3=免稅 |
String | |
58 | invoiceTaxRate | 電子發票稅率:預設0.05(零稅與免稅帶0) | double | |
59 | invoiceRemark | 發票註記(依加值中心提供註記功能) | String | |
60 | invoiceInputType | 電子發票開立類型: 0=未使用電子發票開立 1=雲端發票 2=發票捐贈 3=實體發票 |
String | |
61 | invoiceCloudType | 電子發票開立類型-雲端發票類型: 0=未使用雲端發票類型 2=手機條碼 3=自然人憑證條碼 4=以E-Mail寄送 |
String | |
62 | invoiceMobileCode | 當invoiceCloudType為2時紀錄的手機條碼 | String | |
63 | invoiceTaxId | 當invoiceCloudType為2時紀錄的統一編號 | String | |
64 | invoiceTaxTitle | 當invoiceCloudType為2時紀錄的買受人公司名稱 | String | |
65 | invoiceNaturalPerson | 當invoiceCloudType為3時紀錄的自然人憑證條碼 | String | |
66 | invoiceMPostZone | 當invoiceCloudType為4時紀錄中獎時紙本發票郵遞區號 | String | |
67 | invoiceMAddress | 當invoiceCloudType為4時紀錄中獎時紙本發票收件住址 | String | |
68 | invoiceLoveCode | 當invoiceInputType為2時紀錄的愛心碼 | String | |
69 | invoiceB2bTitle | 當invoiceInputType為3時紀錄的發票抬頭 | String | |
70 | invoiceB2bId | 當invoiceInputType為3時紀錄的統一編號 | String | |
71 | invoiceB2bPostZone | 當invoiceInputType為3時紀錄的郵遞區號 | String | |
72 | invoiceB2bAddress | 當invoiceInputType為3時紀錄的發票地址 | String | |
73 | invoiceAllowance | 電子發票折讓資訊: uid=發生之退款交易流水號(UID) allowance_date=折讓時間 allowance_no=折讓單號 cancel_date=作廢時間 amount=電子發票折讓金額 order_detail=電子發票折讓明細(JSON格式) |
List | |
74 | items | 訂單商品項目 | List | 請參考Item欄位說明 |
75 | echo0 | 自訂回傳參數 1 | String | |
76 | echo1 | 自訂回傳參數 2 | String | |
77 | echo2 | 自訂回傳參數 3 | String | |
78 | echo3 | 自訂回傳參數 4 | String | |
79 | echo4 | 自訂回傳參數 5 | String | |
80 | deviceOrderId | 設備訂單編號 | String | |
81 | gatewayUid | 閘道編號 | int | |
82 | isRequestPayment | 0=未請款 1=已請款 2=請款中 |
int | |
83 | billingDate | 請款(結班)時間 | String | |
84 | gatewayResponse | 閘道交易回傳紀錄清單 | List | 請參考設備交易查詢欄位說明 |
設備交易查詢欄位說明
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | retCode | 金流狀態碼 | String | |
2 | gatewayRequest | 上游請求資訊(JSON格式) | String | |
3 | gatewayContent | 上游回傳資訊(JSON格式) | String | |
4 | stateMessage | 狀態訊息 | String |
範例
//設備訂單查詢API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
DeviceRepo deviceRepo = DeviceRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
GetDeviceOrderListRequest request = GetDeviceOrderListRequest(
deviceId: '設備ID',
storeUid: '特店代號',
beginTime: '查詢起始時間,格式:YYYYMMDDHHmmss(查詢期間不可以超過3天)',
endTime: '查詢結束時間,格式:YYYYMMDDHHmmss',
codes: ['查詢之金流狀態碼'],
);
//呼叫API
deviceRepo.callGetDeviceOrderListRestfulApi(
request,
TestGetDeviceOrderList(),
);
//實作API的Callback(class名稱請自行定義)
class TestGetDeviceOrderList implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
GetDeviceOrderListResponse response = apiResponse as GetDeviceOrderListResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
更新閘道設定API(callGetGatewayInfoRestfulApi)
Request欄位說明(GetGatewayInfoRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
Response欄位說明(GetGatewayInfoResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String | |
4 | content | 設備閘道設定值 | List | 請參考設備閘道定義欄位說明 |
設備閘道定義欄位說明
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | pfn | 支付方式 | String | |
2 | config | 閘道設定 | object | 請參考閘道設定欄位說明 |
閘道設定欄位說明
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | ContractIsActive | 金流合約是否啟用交易 | bool | |
2 | IsActive | 設備是否設定可用 | bool | |
3 | TransactionMode | 代收付或特店模式 | int | |
4 | GatewayUid | 閘道流水號 | int | |
5 | KeyId | 特約商店閘道設定編號 | int | |
6 | CompanyId | Merchant Id | String | |
7 | StoreUid | Sub Merchant Id | String | |
8 | TerminalId | 終端設備帳號 | String | |
9 | StoreEncryptionKey | 終端設備帳號金密 | String | |
10 | PermitCode | 終端設備許可碼 | String | |
11 | OtpCode | Opt碼 | String | |
12 | BusinessName | 對金流服務商申請之特約商店名稱 | int | |
13 | ExclusiveName | 閘道註釋名稱 | String | |
14 | ExclusiveStore | 特店模式歸屬特約商店商務代號 | String | |
15 | GatewaySettlementDate | 每日結帳時間(格式HH:II:SS) | String | |
16 | GatewaySettlementMode | 請款模式 | int | |
17 | Installment | 支援之分期期數 | List |
範例
//更新閘道設定API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
DeviceRepo deviceRepo = DeviceRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
GetGatewayInfoRequest request = GetGatewayInfoRequest(
deviceId: '設備ID',
storeUid: '特店代號',
);
//呼叫API
deviceRepo.callGetGatewayInfoRestfulApi(
request,
TestGetGatewayInfo(),
);
//實作API的Callback(class名稱請自行定義)
class TestGetGatewayInfo implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
GetGatewayInfoResponse response = apiResponse as GetGatewayInfoResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
設備回報閘道交易API(callSendGatewayTransactionRestfulApi)
Request欄位說明(SendGatewayTransactionRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | cost | 訂單總金額 | double | 必要 |
4 | orderId | 訂單編號 | String | 必要 |
5 | items | 訂單商品項目 | List | 必要,請參考Item欄位說明 |
6 | pfn | 支付方式: CREDITCARD=信用卡 IPASS=一卡通 AMEX=美國運通 UNIONPAY=銀聯 |
String | 必要 |
7 | transactionMode | 交易模式: 0=服務類型 - 無法辨識 1=服務類型 - 代收代付 2=服務類型 - 特店模式 |
int | 必要 |
8 | keyId | 閘道設定流水號 | int | 必要 |
9 | retCode | 金流交易狀態碼 | String | 必要,請參考金流交易狀態碼欄位說明 |
10 | deviceOrderId | 設備訂單UID(唯一) | String | 必要 |
11 | gatewayCost | 實際交易金額 | double | 必要 |
12 | finishedDate | 金流商處理完成時間 | String | 必要 |
13 | gatewayRequest | 閘道交易請求紀錄(JSON格式) | String | 必要 |
14 | gatewayResponse | 閘道交易回傳紀錄 特別注意:若回傳欄位有 CVV欄位資訊必須移除不可紀錄, ExpireDate有效年月請用AES加密 卡號只能顯示前六後四,中間用*號破壞性遮碼 |
object | 必要,請參考設備閘道事件資料欄位說明 |
15 | currency | 預設交易幣別(預設為TWD新台幣) | String | |
16 | sysEcho | 設備用記錄 | String | |
17 | echo0 | 自訂回傳參數 1 | String | |
18 | echo1 | 自訂回傳參數 2 | String | |
19 | echo2 | 自訂回傳參數 3 | String | |
20 | echo3 | 自訂回傳參數 4 | String | |
21 | echo4 | 自訂回傳參數 5 | String | |
22 | discount | 折價金額 (預設0) | double | |
23 | shippingFee | 運費 | double | |
24 | userId | 消費者帳號 | String | |
25 | userName | 消費者姓名 | String | |
26 | userRealName | 消費者真實姓名 | String | |
27 | userEnglishName | 消費者英文名稱 | String | |
28 | userZipcode | 消費者郵遞區號 | String | |
29 | userAddress | 消費者地址 | String | |
30 | userSnType | 證號類型: 1=身份證字號(預設) 2=統一證號 3=護照號碼 |
int | |
31 | userSn | 付款人身分證/統一證號/護照號碼 | String | |
32 | userPhone | 消費者家用電話 | String | |
33 | userCellphoneCode | 消費者行動電話國碼 | String | |
34 | userCellphone | 消費者行動電話 | String | |
35 | userEmail | 消費者 E-Mail | String | |
36 | userBirthday | 消費者生日 | String | |
37 | ip | 消費者來源 IP | String | |
38 | pan | 卡號 | String | |
39 | effectYear | 卡片有效年 | String | |
40 | effectMonth | 卡片有效月 | String | |
41 | authorityCode | 授權碼 | String | |
42 | gatewayOrderId | 金流商回應之訂單編號 | String | |
43 | gatewayRetCode | 金流商回應之狀態碼 | String | |
44 | deviceInvoice | 設備開立電子發票回報 | object | 請參考發票資訊欄位說明 |
設備閘道事件資料欄位說明
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | gatewayContent | 上游回傳資訊(JSON格式) | String | 必要 |
2 | gatewayRequest | 上游請求資訊(JSON格式) | String | |
3 | stateMessage | 狀態訊息 | String |
Response欄位說明(SendGatewayTransactionResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼: 100=資料不正確 400=系統錯誤 B200=執行成功 B250=執行成功(資料重複建立) B500=執行失敗 |
String | |
3 | msg | 回傳訊息 | String | |
4 | content | 金流交易內容 | object | 請參考設備金流交易回報回傳詳細內容欄位說明 |
5 | invoice | 發票開立內容 | object | 請參考設備金流交易回報回傳發票資訊欄位說明 |
設備金流交易回報回傳詳細內容欄位說明
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | code | 主要交易回傳碼(retcode) | String | |
2 | msg | 回傳訊息 | String | |
3 | uid | 訂單uid | String | |
4 | key | 訂單key | String | |
5 | finishtime | 交易完成時間(YYYYMMDDHHmmss) | String | |
6 | cardno | 銀行端口回傳碼 | String | |
7 | acode | 授權碼 | String | |
8 | cardType | 信用卡卡別: 0=無法辨識或支付方式為非信用卡類 1=VISA 2=MasterCard 3=JCB 4=AMEX |
String | |
9 | issuingBank | 發卡行 | String | |
10 | issuingBankUid | 發卡銀行代碼 | String | |
11 | transactionMode | 交易服務類型: 0=尚未進行閘道交易 1=代收代付 2=特店模式 |
String | |
12 | supplierName | 交易之金融服務商 | String | |
13 | supplierCode | 交易之金融服務商代碼 | String | 請參考金流供應商代碼欄位說明 |
14 | orderId | 訂單編號 | String | |
15 | userId | 消費者帳號 | String | |
16 | cost | 總交易金額 | String | |
17 | currency | 原交易幣別 | String | |
18 | actualCost | 實際交易金額 | String | |
19 | actualCurrency | 實際交易幣別 | String | |
20 | pfn | 付費方法 | String | |
21 | transType | 交易類型: 1=一般 (預設) 2=分期 3=紅利 |
String | |
22 | echo0 | 自訂回傳參數 1 | String | |
23 | echo1 | 自訂回傳參數 2 | String | |
24 | echo2 | 自訂回傳參數 3 | String | |
25 | echo3 | 自訂回傳參數 4 | String | |
26 | echo4 | 自訂回傳參數 5 | String |
設備金流交易回報回傳發票資訊欄位說明
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | code | 回傳碼: 100=資料不正確 400=系統錯誤。 B200=執行成功 B250=執行成功(資料重複建立) B500=執行失敗 |
String | |
2 | msg | 回傳訊息 | String | |
3 | content | 電子發票回傳 | object | 請參考由設備開立發票回傳系統-發票內容欄位說明 |
範例
//設備回報閘道交易API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
DeviceRepo deviceRepo = DeviceRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
List<Item> items = [
Item(
id: '商品編號',
name: '商品名稱',
cost: 商品單價,
amount: 商品數量,
total: 商品小計,
),
];
TransactionGatewayResponse gatewayResponse = TransactionGatewayResponse(
gatewayContent: '上游回傳資訊(JSON格式)',
stateMessage: '狀態訊息',
);
SendGatewayTransactionRequest request = SendGatewayTransactionRequest(
deviceId: '設備ID',
storeUid: '特店代號',
orderId: '訂單編號',
cost: 訂單總金額,
items: items,
pfn: '支付方式',
transactionMode: 交易模式,
keyId: 閘道設定流水號,
retCode: '金流交易狀態碼',
deviceOrderId: '設備訂單UID(唯一)',
gatewayCost: 實際交易金額,
finishedDate: '金流商處理完成時間',
gatewayRequest: '閘道交易請求紀錄(JSON格式)',
gatewayResponse: gatewayResponse,
);
//呼叫API
deviceRepo.callSendGatewayTransactionRestfulApi(
request,
TestSendGatewayTransaction(),
);
//實作API的Callback(class名稱請自行定義)
class TestSendGatewayTransaction implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
SendGatewayTransactionResponse response = apiResponse as SendGatewayTransactionResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
設備回報閘道退款API(callRefundGatewayTransactionRestfulApi)
Request欄位說明(RefundGatewayTransactionRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | cost | 訂單總金額 | double | 必要 |
4 | items | 訂單商品項目 | List | 必要,請參考Item欄位說明 |
5 | retCode | 金流交易狀態碼 | String | 必要,請參考金流交易狀態碼欄位說明 |
6 | deviceOrderId | 原始設備訂單UID(唯一) | String | 必要 |
7 | gatewayCost | 實際交易金額 | double | 必要 |
8 | finishedDate | 金流商處理完成時間 | String | 必要 |
9 | gatewayRequest | 閘道取消授權請求紀錄(JSON格式) | String | 必要 |
10 | gatewayResponse | 閘道取消授權回傳紀錄 | object | 必要,請參考設備閘道事件資料欄位說明 |
11 | refundDeviceOrderId | 設備退款訂單UID(唯一) | String | |
12 | gatewayOrderId | 金流商回應之訂單編號 | String | |
13 | gatewayRetCode | 金流商回應之狀態碼 | String | |
14 | invoiceState | 若有開立電子發票,須指定電子發票使用作廢或折讓(此時為必填) 注意:跨發票月份無法作廢 |
String | 0=沒有發票 4=作廢或作廢重開(預設) 6=折讓 |
Response欄位說明(RefundGatewayTransactionResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼: 100=資料不正確 400=系統錯誤 B200=執行成功 B250=執行成功(資料重複建立) B500=執行失敗 |
String | |
3 | msg | 回傳訊息 | String | |
4 | content | 退款交易內容 | object | 請參考設備退款回報回傳詳細內容欄位說明 |
設備退款回報回傳詳細內容欄位說明
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | code | 主要交易回傳碼(retcode) | String | |
2 | msg | 回傳訊息 | String | |
3 | uid | 訂單uid | String | |
4 | refundUid | 退款之交易流水號(若多次退款,每次皆會不同) | String | |
5 | key | 訂單key | String | |
6 | finishtime | 退款處理完成時間(YYYYMMDDHHmmss) | String | |
7 | orderId | 訂單編號 | String | |
8 | userId | 消費者帳號 | String | |
9 | cost | 總交易金額 | String | |
10 | currency | 原交易幣別 | String | |
11 | actualCost | 實際交易金額 | String | |
12 | actualCurrency | 實際交易幣別 | String | |
13 | pfn | 付費方法 | String | |
14 | echo0 | 自訂回傳參數 1 | String | |
15 | echo1 | 自訂回傳參數 2 | String | |
16 | echo2 | 自訂回傳參數 3 | String | |
17 | echo3 | 自訂回傳參數 4 | String | |
18 | echo4 | 自訂回傳參數 5 | String |
範例
//設備回報閘道退款API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
DeviceRepo deviceRepo = DeviceRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
List<Item> items = [
Item(
id: '商品編號',
name: '商品名稱',
cost: 商品單價,
amount: 商品數量,
total: 商品小計,
),
];
TransactionGatewayResponse gatewayResponse = TransactionGatewayResponse(
gatewayContent: '上游回傳資訊(JSON格式)',
);
RefundGatewayTransactionRequest request = RefundGatewayTransactionRequest(
deviceId: '設備ID',
storeUid: '特店代號',
cost: 退款總金額,
items: items,
retCode: '金流交易狀態碼',
deviceOrderId: '原始設備訂單UID(唯一)',
refundDeviceOrderId: '設備退款訂單UID(唯一)',
gatewayRetCode: '金流商回應之狀態碼',
gatewayCost: 實際交易金額,
finishedDate: '金流商處理完成時間',
gatewayRequest: '閘道取消授權請求紀錄(JSON格式)',
gatewayResponse: gatewayResponse,
invoiceState: 若有開立電子發票,須指定電子發票使用作廢或折讓(此時為必填)
注意:跨發票月份無法作廢,
);
//呼叫API
deviceRepo.callRefundGatewayTransactionRestfulApi(
request,
TestRefundGatewayTransaction(),
);
//實作API的Callback(class名稱請自行定義)
class TestRefundGatewayTransaction implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
RefundGatewayTransactionResponse response = apiResponse as RefundGatewayTransactionResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
設備回報閘道結帳API(callGatewaySettlementRestfulApi)
Request欄位說明(GatewaySettlementRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | deviceId | 設備ID | String | 必要 |
2 | storeUid | 特店代號 | String | 必要 |
3 | content | 請款資訊 | List | 必要,請參考設備金流批次請款回報欄位說明 |
設備金流批次請款回報欄位說明
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | billingDate | 請款(結班)的帳務日期 | String | 必要 |
2 | deviceOrderId | 原始設備訂單UID | String | 必要 |
Response欄位說明(GatewaySettlementResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String | |
4 | content | 更新內容 | List | 請參考設備金流批次請款回報內容欄位說明 |
設備金流批次請款回報內容欄位說明
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | code | 更新結果狀態碼 | String | |
2 | msg | 更新結果狀態訊息 | String | |
3 | deviceOrderId | 原始設備訂單UID | String |
範例
//設備回報閘道結帳API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
DeviceRepo deviceRepo = DeviceRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
List<GatewaySettlementContentRequest> content = [
GatewaySettlementContentRequest(
billingDate: '請款(結班)的帳務日期',
deviceOrderId: '原始設備訂單UID',
),
];
GatewaySettlementRequest request = GatewaySettlementRequest(
deviceId: '設備ID',
storeUid: '特店代號',
content: content,
);
//呼叫API
deviceRepo.callGatewaySettlementRestfulApi(
request,
TestGatewaySettlement(),
);
//實作API的Callback(class名稱請自行定義)
class TestGatewaySettlement implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
GatewaySettlementResponse response = apiResponse as GatewaySettlementResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
雲端印表機相關(PrinterRepo)
綁定雲端印表機API(callAddPrinterRestfulApi)
Request欄位說明(AddPrinterRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | printerSN | 設備ID | String | 必要 |
Response欄位說明(AddPrinterResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | sysCode | 固定回傳字串 PrintService | String | |
5 | cmd | API對應方法名稱 | String | |
6 | rspTs | 回傳時間 | String |
範例
//綁定雲端印表機API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
PrinterRepo printerRepo = PrinterRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
AddPrinterRequest request = AddPrinterRequest(
printerSN: '設備ID',
);
//呼叫API
printerRepo.callAddPrinterRestfulApi(
request,
TestAddPrinter(),
);
//實作API的Callback(class名稱請自行定義)
class TestAddPrinter implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
AddPrinterResponse response = apiResponse as AddPrinterResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
解綁雲端印表機API(callRemovePrinterRestfulApi)
Request欄位說明(RemovePrinterRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | printerSN | 設備ID | String | 必要 |
Response欄位說明(RemovePrinterResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | sysCode | 固定回傳字串 PrintService | String | |
5 | cmd | API對應方法名稱 | String | |
6 | rspTs | 回傳時間 | String |
範例
//解綁雲端印表機API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
PrinterRepo printerRepo = PrinterRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
RemovePrinterRequest request = RemovePrinterRequest(
printerSN: '設備ID',
);
//呼叫API
printerRepo.callRemovePrinterRestfulApi(
request,
TestRemovePrinter(),
);
//實作API的Callback(class名稱請自行定義)
class TestRemovePrinter implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
RemovePrinterResponse response = apiResponse as RemovePrinterResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
取得雲端印表機狀態API(callGetPrinterStatusRestfulApi)
Request欄位說明(GetPrinterStatusRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | printerSN | 設備ID | String | 必要 |
Response欄位說明(GetPrinterStatusResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | sysCode | 固定回傳字串 PrintService | String | |
5 | cmd | API對應方法名稱 | String | |
6 | rspTs | 回傳時間 | String | |
7 | printerSN | 設備ID | String | |
8 | isOnline | 設備是否啟用: 0=未啟用 1=啟用 |
String |
範例
//取得雲端印表機狀態API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
PrinterRepo printerRepo = PrinterRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
GetPrinterStatusRequest request = GetPrinterStatusRequest(
printerSN: '設備ID',
);
//呼叫API
printerRepo.callGetPrinterStatusRestfulApi(
request,
TestGetPrinterStatus(),
);
//實作API的Callback(class名稱請自行定義)
class TestGetPrinterStatus implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
GetPrinterStatusResponse response = apiResponse as GetPrinterStatusResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
列印發票API(callPrintInvoiceRestfulApi)
Request欄位說明(PrintInvoiceRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | printerSN | 設備ID | String | 必要 |
2 | products | 產品列表 | List | 必要,請參考Product欄位說明 |
3 | invoiceTotalAmount | 發票金額 | String | 必要 |
4 | invoiceInputType | 發票類型: 0=不開 1=雲端發票 2=發票捐贈 3=實體發票 |
String | 必要 |
5 | invoiceLeftQrcode | 左邊QRCode | String | 必要 |
6 | invoiceMiddleBarcode | 中間BarCode | String | 必要 |
7 | invoiceNo | 發票號碼 | String | 必要 |
8 | orderId | 訂單編號 | String | 必要 |
9 | invoicePrintType | 發票列印類型: 1=發票+明細 2=發票 3=明細 |
String | 必要 |
10 | invoiceRandomNumber | 隨機碼 | String | 必要 |
11 | invoiceRateType | 電子發票稅率種類: 1=應稅 2=零稅 3=免稅 |
String | 必要 |
12 | invoiceRightQrcode | 右邊QRCode | String | 必要 |
13 | invoiceSellerId | 發票賣方統編 | String | 必要 |
14 | invoiceTaxRate | 電子發票稅率 | String | 必要 |
15 | invoiceTitleType | 發票紙張標題類型: 1=列印文字 2=列印圖片 |
String | 必要 |
16 | invoiceType | 發票類型: 1=正式發票 2=補印發票 |
String | 必要 |
17 | pushId | 推送編號,此推送編號為系統內唯一,不可重複 | String | |
18 | invoiceBusinessDay | 營業日 | String | |
19 | invoiceBusinessName | 發票賣方名稱 | String | |
20 | invoiceBuyerId | 發票買方統編 | String | |
21 | cashDrawer | 打開錢櫃: 0=預設不開 1=打開錢櫃 |
String | |
22 | invoiceCloudType | 發票儲存方式: 2=手機條碼 3=自然人憑證條碼 4=愛心碼(捐贈) |
String | |
23 | invoiceDateTime | 發票開立時間 yyyy-MM-dd HH:mm:ss | String | |
24 | invoiceLogoUrl | 發票紙張標題圖片網址 | String | |
25 | invoiceLoveCode | 愛心碼 | String | |
26 | invoiceMobileCode | 手機條碼 | String | |
27 | invoiceNaturalPerson | 自然人憑證 | String | |
28 | invoiceSellerAddr | 發票賣方地址 | String | |
29 | invoiceSellerTel | 發票賣方電話 | String | |
30 | invoiceTitle | 發票紙張標題,發票紙張標題類型為列印文字時不可為空 | String |
Product欄位說明
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | name | 產品名稱 | String | |
2 | price | 單價 | String | |
3 | quantity | 數量 | String | |
4 | total | 金額 | String |
Response欄位說明(PrintInvoiceResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | sysCode | 固定回傳字串 PrintService | String | |
5 | cmd | API對應方法名稱 | String | |
6 | rspTs | 回傳時間 | String |
範例
//列印發票API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
PrinterRepo printerRepo = PrinterRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
List<Product> products = [
Product(
name: '產品名稱',
price: '單價',
quantity: '數量',
total: '金額',
),
];
PrintInvoiceRequest request = PrintInvoiceRequest(
printerSN: '設備ID',
orderId: '訂單編號',
products: products,
invoiceTotalAmount: '發票金額',
invoiceRateType: '電子發票稅率種類',
invoiceTaxRate: '電子發票稅率',
invoiceInputType: '發票類型',
invoicePrintType: '發票列印類型',
invoiceTitleType: '發票紙張標題類型',
invoiceLogoUrl: '發票紙張標題圖片網址',
// invoiceTitle: '發票文字標題',
invoiceNo: '發票號碼',
invoiceRandomNumber: '隨機碼',
invoiceSellerId: '發票賣方統編',
// invoiceBuyerId: '發票買方統編',
invoiceMiddleBarcode: '中間BarCode',
invoiceLeftQrcode: '左邊QRCode',
invoiceRightQrcode: '右邊QRCode',
invoiceType: '發票類型',
);
//呼叫API
printerRepo.callPrintInvoiceRestfulApi(
request,
TestPrintInvoice(),
);
//實作API的Callback(class名稱請自行定義)
class TestPrintInvoice implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
PrintInvoiceResponse response = apiResponse as PrintInvoiceResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
列印信用卡簽單API(callPrintBillRestfulApi)
Request欄位說明(PrintBillRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | printerSN | 設備ID | String | 必要 |
2 | merchantId | 商店代號 | String | 必要 |
3 | terminalId | 端末機代號 | String | 必要 |
4 | type | 簽單類別,依此判斷如果是退貨,金額自動帶負號: 1=銷售 2=退貨 |
String | 必要 |
5 | aCode | 授權碼 | String | 必要 |
6 | actNo | 序號 | String | 必要 |
7 | amount | 總金額 | String | 必要,請帶正數 |
8 | cardAction | 刷卡類型 | String | 必要 |
9 | cardType | 卡別 | String | 必要,如: VISA Master JCB |
10 | maskCardNo | 遮碼後的卡號 | String | 必要 |
11 | matchNo | 批次號碼 | String | 必要 |
12 | receiptType | 簽單收據類型: 1=列印全部 2=只列印持卡人存根 |
String | 必要 |
13 | signatureType | 簽單簽名型態: 1=免簽名 2=簽名 |
String | 必要 |
14 | storeImageType | 商店圖片格式: 1=文字 2=網址 |
String | 必要 |
15 | supplierImageUrl | 金融服務商圖片路徑 | String | 必要 |
16 | traceNo | 調閱編號 | String | 必要 |
17 | transactionMode | 交易服務類型: 1=代收代付 2=特店模式 |
String | 必要 |
18 | pushId | 推送編號,此推送編號為系統內唯一,不可重複 | String | |
19 | printTime | 列印時間 | String | 格式為yyyy/MM/dd HH:mm:ss |
20 | signBase64 | 簽名圖片Base64 | String | |
21 | signImageUrl | 簽名圖片Url | String | |
22 | storeName | 商店名稱 | String | |
23 | storeImageUrl | 商店圖片路徑 | String | |
24 | supplierName | 金融服務商 | String |
Response欄位說明(PrintBillResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | sysCode | 固定回傳字串 PrintService | String | |
5 | cmd | API對應方法名稱 | String | |
6 | rspTs | 回傳時間 | String |
範例
//列印信用卡簽單API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
PrinterRepo printerRepo = PrinterRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
PrintBillRequest request = PrintBillRequest(
printerSN: '設備ID',
transactionMode: '交易服務類型',
supplierImageUrl: '金融服務商圖片路徑',
// supplierName: '金融服務商',
storeImageType: '商店圖片格式',
// storeName: '發票文字標題',
storeImageUrl: '商店圖片路徑',
merchantId: '商店代號',
terminalId: '端末機代號',
maskCardNo: '遮碼後的卡號',
cardAction: '刷卡類型',
type: '簽單類別,依此判斷如果是退貨,金額自動帶負號',
cardType: '卡別',
matchNo: '批次號碼',
aCode: '授權碼',
traceNo: '調閱編號',
actNo: '序號',
amount: '總金額; 請帶正數',
signatureType: '簽單簽名型態',
receiptType: '簽單收據類型',
);
//呼叫API
printerRepo.callPrintBillRestfulApi(
request,
TestPrintBill(),
);
//實作API的Callback(class名稱請自行定義)
class TestPrintBill implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
PrintBillResponse response = apiResponse as PrintBillResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
列印農漁民收據API(callPrintFAFReceiptRestfulApi)
Request欄位說明(PrintFAFReceiptRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | printerSN | 設備ID | String | 必要 |
2 | products | 產品列表 | List | 必要,請參考Product欄位說明 |
3 | totalAmount | 金額 | String | 必要 |
4 | pushId | 推送編號,此推送編號為系統內唯一,不可重複 | String | |
5 | printDate | 列印日期 | String | 格式為yyyy-MM-dd |
6 | fafName | 農(漁)民姓名 | String | |
7 | linceseId | 身分證統一編號 | String | |
8 | address | 住址 | String | |
9 | fafSignBase64 | 農(漁)民簽章圖片Base64 | String | |
10 | fafSignUrl | 農(漁)民簽章圖片網址 | String |
Response欄位說明(PrintFAFReceiptResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | sysCode | 固定回傳字串 PrintService | String | |
5 | cmd | API對應方法名稱 | String | |
6 | rspTs | 回傳時間 | String |
範例
//列印農漁民收據API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
PrinterRepo printerRepo = PrinterRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
List<Product> products = [
Product(
name: '產品名稱',
price: '單價',
quantity: '數量',
total: '金額',
),
];
PrintFAFReceiptRequest request = PrintFAFReceiptRequest(
printerSN: '設備ID',
// fafName: '方大同',
// linceseId: 'A123456789',
// address: '403台中市西區台灣大道二段573號6樓E室',
fafSignUrl: '農(漁)民簽章圖片網址',
products: products,
totalAmount: '金額',
);
//呼叫API
printerRepo.callPrintFAFReceiptRestfulApi(
request,
TestPrintFAFReceipt(),
);
//實作API的Callback(class名稱請自行定義)
class TestPrintFAFReceipt implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
PrintFAFReceiptResponse response = apiResponse as PrintFAFReceiptResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
列印免用統一發票API(callPrintNoneInvoiceRestfulApi)
Request欄位說明(PrintNoneInvoiceRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | printerSN | 設備ID | String | 必要 |
2 | orderId | 訂單編號 | String | 必要 |
3 | merchantId | 商店代號 | String | 必要 |
4 | terminalId | 端末機代號 | String | 必要 |
5 | type | 收據類別,依此判斷如果是退貨,金額自動帶負號: 1=銷售 2=退貨 |
String | 必要 |
6 | transactionType | 交易類別,依傳入內容列印 | String | 必要 |
7 | actNo | 序號 | String | 必要 |
8 | products | 產品列表 | List | 必要,請參考Product欄位說明 |
9 | totalAmount | 金額 | String | 必要 |
10 | pushId | 推送編號,此推送編號為系統內唯一,不可重複 | String | |
11 | printTime | 列印時間 | String | 格式為yyyy/MM/dd HH:mm:ss |
12 | merchantSignBase64 | 商店簽章圖片Base64 | String | |
13 | merchantSignUrl | 商店簽章圖片網址 | String | |
14 | ownerSignBase64 | 負責人簽章圖片Base64 | String | |
15 | ownerSignUrl | 負責人簽章圖片網址 | String |
Response欄位說明(PrintNoneInvoiceResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | resultCode | 回傳碼 | String | |
3 | resultMsg | 回傳訊息 | String | |
4 | sysCode | 固定回傳字串 PrintService | String | |
5 | cmd | API對應方法名稱 | String | |
6 | rspTs | 回傳時間 | String |
範例
//列印免用統一發票API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
PrinterRepo printerRepo = PrinterRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
List<Product> products = [
Product(
name: '產品名稱',
price: '單價',
quantity: '數量',
total: '金額',
),
];
PrintNoneInvoiceRequest request = PrintNoneInvoiceRequest(
printerSN: '設備ID',
merchantId: '商店代號',
terminalId: '端末機代號',
type: '收據類別,依此判斷如果是退貨,金額自動帶負號',
transactionType: '交易類別,依傳入內容列印',
actNo: '序號',
orderId: '訂單編號',
merchantSignUrl: '商店簽章圖片網址',
ownerSignUrl: '負責人簽章圖片網址',
products: products,
totalAmount: '金額',
);
//呼叫API
printerRepo.callPrintNoneInvoiceRestfulApi(
request,
TestPrintNoneInvoice(),
);
//實作API的Callback(class名稱請自行定義)
class TestPrintNoneInvoice implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
PrintNoneInvoiceResponse response = apiResponse as PrintNoneInvoiceResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
合作夥伴相關(PartnerRepo)
Echo測試API(callEchoRestfulApi)
Response欄位說明(PartnerEchoResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String | |
4 | dateTime | 回應時間 | String | 格式為yyyyMMddHHmmss |
範例
//Echo測試API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
PartnerRepo partnerRepo = PartnerRepo('url', timeoutSeconds: timeout秒數);
//呼叫API
partnerRepo.callEchoRestfulApi(
TestPartnerEcho(),
);
//實作API的Callback(class名稱請自行定義)
class TestPartnerEcho implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
PartnerEchoResponse response = apiResponse as PartnerEchoResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
回傳交易結果API(callPostTransactionResultRestfulApi)
Request欄位說明(PartnerPostTransactionResultRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | data | 交易結果 | String | 必要,其內容值都必須為合法的JSON Object { ... } |
Response欄位說明(PartnerPostTransactionResultResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String | |
4 | dateTime | 回應時間 | String | 格式為yyyyMMddHHmmss |
範例
//回傳交易結果API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
PartnerRepo partnerRepo = PartnerRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
PartnerPostTransactionResultRequest request = PartnerPostTransactionResultRequest(
data: '交易結果',
);
//呼叫API
partnerRepo.callPostTransactionResultRestfulApi(
request,
TestPartnerPostTransactionResult(),
);
//實作API的Callback(class名稱請自行定義)
class TestPartnerPostTransactionResult implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
PartnerPostTransactionResultResponse response = apiResponse as PartnerPostTransactionResultResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
回傳退款結果API(callPostRefundResultRestfulApi)
Request欄位說明(PartnerPostRefundResultRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | data | 退款結果 | String | 必要,其內容值都必須為合法的JSON Object { ... } |
Response欄位說明(PartnerPostRefundResultResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String | |
4 | dateTime | 回應時間 | String | 格式為yyyyMMddHHmmss |
範例
//回傳退款結果API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
PartnerRepo partnerRepo = PartnerRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
PartnerPostRefundResultRequest request = PartnerPostRefundResultRequest(
data: '退款結果',
);
//呼叫API
partnerRepo.callPostRefundResultRestfulApi(
request,
TestPartnerPostRefundResult(),
);
//實作API的Callback(class名稱請自行定義)
class TestPartnerPostRefundResult implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
PartnerPostRefundResultResponse response = apiResponse as PartnerPostRefundResultResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
驗證折扣碼API(callQueryCouponCodeRestfulApi)
Request欄位說明(PartnerQueryCouponCodeRequest)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | data | 驗證折扣碼資料 | String | 必要,其內容值都必須為合法的JSON Object { ... } |
Response欄位說明(PartnerQueryCouponCodeResponse)
項次 | 欄位 | 說明 | 型別 | 備註 |
---|---|---|---|---|
1 | isOk | Api是否成功: true=成功 false=失敗 |
bool | |
2 | code | 回傳碼 | String | |
3 | msg | 回傳訊息 | String | |
4 | dateTime | 回應時間 | String | 格式為yyyyMMddHHmmss |
5 | result | 回傳資料 | String | 其內容值都為合法的JSON Object { ... } |
範例
//驗證折扣碼API
//初始化Repo(url請傳入API對應的url,timeoutSeconds請自行傳入timeout秒數,若不傳入則默認為30秒)
PartnerRepo partnerRepo = PartnerRepo('url', timeoutSeconds: timeout秒數);
//API的RequestModel(請參考Request欄位說明)
PartnerQueryCouponCodeRequest request = PartnerQueryCouponCodeRequest(
data: '驗證折扣碼資料''',
);
//呼叫API
partnerRepo.callQueryCouponCodeRestfulApi(
request,
TestPartnerQueryCouponCode(),
);
//實作API的Callback(class名稱請自行定義)
class TestPartnerQueryCouponCode implements RepoCallback {
@override
onResponse(BaseApiResponse apiResponse, {Response? httpResponse}) {
//API的ResponseModel(請參考Response欄位說明)
PartnerQueryCouponCodeResponse response = apiResponse as PartnerQueryCouponCodeResponse;
if(response.isOk) {
//成功之後,串接方自行實作後續事件
} else {
//失敗之後,串接方自行實作後續事件
}
}
@override
onHttpStatusNotSuccess(int? code) {
}
@override
onError(Exception e) {
}
@override
onTimeout() {
}
}
版本紀錄
MYPAY APP Api Lib(Flutter版)
版本號 | 測試更新日期 | 正式更新日期 | 異動 |
---|---|---|---|
0.0.1 | 2025-01-13 | 初版 |