NAV

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回傳結果後,串接方自行實作後續動作。 如:onResponseonHttpStatusNotSuccessonErroronTimeout
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 WECHAT 微信支付線上 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 WECHAT 微信支付線上 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 email 當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 初版