# 登入

{% hint style="info" %}
此API為必要串接
{% endhint %}

{% hint style="warning" %}
執行悠遊卡機操作前, 需要先進行登入, 登入超過30小時之後, 需要重新叫用登入
{% endhint %}

## Request

### Header

| 欄位          | 必填  | 型別        | 範例             | 說明                   |
| ----------- | --- | --------- | -------------- | -------------------- |
| Method      | YES | String(5) | 31800          | 支付方式, 悠遊卡使用31800     |
| ServiceType | YES | String    | **SignOn**     | 服務代碼                 |
| MchId       | YES | String    | Account0001    | 特店帳號                 |
| TradeKey    | YES | String    | sha256...hash  | 交易密碼(sha256編碼)       |
| CreateTime  | YES | String    | 20180101120000 | 建立日期, yyyyMMddHHmmss |

### Data

| 欄位       | 必填  | 型別     | 範例       | 說明         |
| -------- | --- | ------ | -------- | ---------- |
| DeviceId | YES | String | 01301234 | 終端機(讀卡機)編號 |
| Retry    | YES | String | 0        | 重試次數, 請帶入0 |

## Response

### Header

| 欄位           | 型別        | 範例             | 說明                                                                          |
| ------------ | --------- | -------------- | --------------------------------------------------------------------------- |
| StatusCode   | String(4) | 0000           | [交易結果代碼](https://intella.gitbook.io/scan2pay/appendix/scan2pay-error-codes) |
| StatusDesc   | String    | 交易成功           | 交易結果代碼說明                                                                    |
| Method       | String(5) | 31800          | 支付方式, 悠遊卡使用31800                                                            |
| ServiceType  | String    | **SignOn**     | 服務代碼                                                                        |
| MchId        | String    | Account0001    | 特店帳號                                                                        |
| ResponseTime | String    | 20180101120000 | 交易回應時間, yyyyMMddHHmmss                                                      |

### Data

| 欄位             | 型別     | 範例               | 說明                                                                          |
| -------------- | ------ | ---------------- | --------------------------------------------------------------------------- |
| DeviceID       | String | 0220131325       |                                                                             |
| NewDeviceID    | String | 0830000001304104 |                                                                             |
| **TXNResult**  | String | Success          | 交易結果                                                                        |
| Retry          | String | 0                |                                                                             |
| ErrorCode      | String | 000000           | [交易結果代碼](https://intella.gitbook.io/scan2pay/appendix/easycard-error-codes) |
| DongleDeviceID | String | 08100DE0A57E     |                                                                             |
| NewAESKey      | String | 2406cbf...e9672  |                                                                             |

## API Example

### Request

```
{
  "Header": {
    "Method": "31800",
    "ServiceType": "SignOn",
    "MchId": "ACCOUNT001",
    "TradeKey": "9af15b3.....606529a0",
    "CreateTime": "20170830192040"
  },
  "Data": "{\"DeviceId\":\"12341234\",\"Retry\":\"0\"}"
}
```

### Response

```
{
  "Header": {
    "StatusCode": "0000",
    "StatusDesc": "STATUS_SUCCESS",
    "Method": "31800",
    "ServiceType": "SignOn",
    "MchId": "S2PT00391",
    "ResponseTime": "20170830192043"
  },
  "Data": {
    "DeviceID": "0220131329",
    "NewDeviceID": "0830000012341234",
    "TXNResult": "Success",
    "Retry": "0",
    "ErrorCode": "000000",
    "DongleDeviceID": "0C100DE0A57E",
    "NewAESKey": "2fb7....4786"
  }
}
```
