---
title: 車麻吉介接 API v1.1
---
# 車麻吉介接 API
| 版本: v1.1 |
| ---------- |
[TOC]
> :bulb: Auth required為YES的API請在Header中加上Bearer token,token即使用Login或RefreshToken中回傳的 Token值
> :warning: 判讀 ErrorCode 時, 需連 HTTP StatusCode 一併判讀
---
<font size="5">**修改紀錄**</font>
| Version | Date | Description |
|:-------:|:----------:|:------------------------------------------------------------------------------------------------------ |
| v1.1 | 2023-05-19 | 修正載具 Carrier (1) 說明<br/>修改 Status 403 ErrorCode 1 說明<br/>修改 Status 404 ErrorCode 2000 說明 |
| v1.1 | 2023-05-19 | 新增 Status 500 ErrorCode |
| v1.1 | 2023-05-19 | 新增 查詢交易狀態 API |
| v1.1 | 2023-05-22 | 修正關閉交易(close) RequestData SessionId 的說明 |
| | | |
---
## 登入
**URL** : `https://Ip:Port/mochipay/v1/Login`
**Method** : `POST`
**Auth required** : NO
> 說明:首次介接時需透過登入的方式取得驗證Token
* **Request Data**
```json!
{
"Username": "[Username]",
"Password": "[password in plain text]"
}
```
**Data Example**
```json!
{
"Username": "Autopass",
"Password": "mochipay9999"
}
```
* **Response**
**Code**:`200 OK`
```json!
{
"Username": "string",
"Password": null,
"Token": "string",
"ValidateTime": "DateTime"
}
```
**Data Example**
```json!
{
"Username": "Autopass",
"Password": null,
"Token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IkF1dG9wYXNzIiwibmJmIjoxNjU1MDg1ODc1LCJleHAiOjE2NTU5NDk4NzUsImlhdCI6MTY1NTA4NTg3NSwiaXNzIjoiVEVMRVhQRVIiLCJhdWQiOiJBVVRPUEFTUyJ9.Bj1T5BAFxIbe9eNGiIZr1L4bYCyI7j0RIIWf3bM3Jqg",
"ValidateTime": "2022-06-23T10:04:35.4853115+08:00"
}
```
**Code**:`400 BadRequest`
```json!
{
"Message": [
"Username or password is incorrect"
]
}
```
---
## 更新驗證 Token
**URL**: `https://Ip:Port/mochipay/v1/RefreshToken `
**Method** : `POST`
**Auth required** : YES
* **Request Data**
```json!
{
"Username": "[Username]",
"Password": "[password in plain text]"
}
```
**Data Example**
```json!
{
"Username": "Autopass",
"Password": "mochipay9999"
}
```
* **Response**
**Code**:`200 OK`
```json!
{
"Username": "string",
"Password": null,
"Token": "string",
"ValidateTime": "DateTime"
}
```
**Data Example**
```json!
{
"Username": "Autopass",
"Password": null,
"Token":
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IkFjZXIiLCJuYmYiOjE1NDA1MjE2MTIsImV4cCI6MTU0MTEyNjQxMiwiaWF0IjoxNTQwNTIxNjEyfQ.nJl8LXxPKOEBTNIF0jFO8z05D_fo2wUT4B31rccYbug",
"ValidateTime": "12/25/2015 10:30:00 AM"
}
```
**Code**:`400 BadRequest`
```json!
{
"Message": [
"Username or password is incorrect"
]
}
```
---
## 查車
**URL**: ` https://Ip:Port/{FieldNo}/mochipay/v1/parking_records/query_parking
`
**Method** : `POST`
**Auth required** : YES
**Route Data**: `FieldNo請填場地代碼`
* **Request Data**
```json!
{
"vehicle_type": "string",
"plate_number": "string",
"plate_number_fuzzy": "string"
}
```
**Data Example**
```json!
{
"vehicle_type": "car",
"plate_number": "1111", // plate_number_fuzzy請填相同值
"plate_number_fuzzy": "1111" // 和plate_number請填相同值
}
```
* **Response**
**Code**:`200 OK`
```json!
{
"Results":[
{
"vehicle_type": "string",
"plate_number": "string",
"parking_record_id": "string",
"checked_in_at":"string",
"checked_out_at":"string",
"checked_in_image":"string",
"parking_ticket_id":"string",
"amount": int
},
{
"vehicle_type": "string",
"plate_number": "string",
"parking_record_id": "string",
"checked_in_at":"string",
"checked_out_at":"string",
"checked_in_image":"string",
"parking_ticket_id":"string",
"amount": int
}
]
}
```
**Data Example**
```json!
{
"Results": [
{
"vehicle_type": "car",
"plate_number": "1111",
"parking_record_id": "287",
"checked_in_at":"2022/05/17 14:30:00",
"checked_out_at":"",
"checked_in_image":"string",
"parking_ticket_id":"",
"amount": -1
},
]
}
```
> :bulb: 這時候還不會拿到checked\_out\_at、parking\_ticket\_id和amount,amount先填-1
>
> :bulb: 圖片的部分是先壓縮後轉base64的string
**Code**:` 404 NotFound`
```json!
{
"Message": [
"Username or password is incorrect"
]
}
```
---
## 選車開始交易
**URL**: ` https://Ip:Port/{FieldNo}/mochipay/v1/parking_tickets/create
`
**Method** : `POST`
**Auth required** : YES
**Route Data**: `FieldNo請填場地代碼`
* **Request Data**
```json!
{
"vehicle_type": "string",
"plate_number": "string",
"parking_record_id": "string"
}
```
**Data Example**
```json!
{
"vehicle_type": "car",
"plate_number": "1111", // plate_number_fuzzy請填相同值
"parking_record_id": "287" // 和plate_number請填相同值
}
```
* **Response**
**Code**:`200 OK`
```json!
{
"vehicle_type": "string",
"plate_number": "string",
"parking_record_id": "string",
"checked_in_at":"string",
"checked_out_at":"string",
"request_amount":"string",
"should_leave_before":"string",
"parking_ticket_id":"string",
"checked_in_image":"string",
"SessionId":"string",
"pay_by_autopass": bool,
"autopass_pay_amount": uint
}
```
**Data Example**
```json!
{
"vehicle_type": "car",
"plate_number": "1111",
"parking_record_id": "287",
"checked_in_at":"2022/05/17 14:30:00",
"checked_out_at":"2022/06/13 10:41:52",
"request_amount":"25",
"should_leave_before":"2022/06/13 10:56:52",
"parking_ticket_id":"55678",
"checked_in_image":"string",
"SessionId":"34f117a1-d66c-4d77-a22a-6116c870145a",
"pay_by_autopass": true,
"autopass_pay_amount": 40
}
```
**Code**:[ErrorCode請參照下方錯誤代碼列舉](#ErrorCodes)
```json!
{
"ErrorCode": "[ErrorCode]"
}
```
---
## 更新選車框車時間
**URL**: ` https://Ip:Port/{FieldNo}/mochipay/v1/parking_tickets/update_timeout
`
**Method** : `POST`
**Auth required** : YES
**Route Data**: `FieldNo請填場地代碼`
* **Request Data**
```json!
{
"SessionId": "string", // 就是parking_ticket_id
"Sec": "int" // 要延長的時間秒數
}
```
**Data Example**
```json!
{
"SessionId": "654321", // 就是parking_ticket_id
"Sec": "300"
}
```
* **Response**
**Code**:`200 OK`
```json!
{
"Message": "string"
}
```
**Data Example**
```json!
{
"Message": "The session expire time is extended."
}
```
**Code**:[ErrorCode請參照下方錯誤代碼列舉](#ErrorCodes)
```json!
{
"ErrorCode": "[ErrorCode]"
}
```
---
## 繳費完成通知
**URL**: ` https://Ip:Port/{FieldNo}/mochipay/v1/parking_tickets/pay
`
**Method** : `POST`
**Auth required** : YES
**Route Data**: `FieldNo請填場地代碼`
* **Request Data**
```json!
{
"plate_number": "string",
"parking_ticket_id":"string",
"parking_record_id": "string",
"checked_in_at":"string",
"checked_out_at":"string",
"amount":"string",
"paid_at":"string",
"CreditCard_No":"string", // 信用卡號
"CustomerVAT":"string", // 客戶輸入的統編
"CarrierCode":"string", // 會員載具碼
"CarrierCode_CreditCard":"string", // 信用卡載具
"ReceiptType":int,
"SessionId":"string"
}
```
**Data Example**
```json!
{
"plate_number": "1111",
"parking_ticket_id":"55678",
"parking_record_id": "287",
"checked_in_at":"2022/05/17 14:30:00",
"checked_out_at":"string",
"amount":"25",
"paid_at":"string",
"CreditCard_No":"1234-5678-8765-4321", // 信用卡號
"CustomerVAT":"12345678", // 客戶輸入的統編
"CarrierCode":"/ABC1234", // 會員載具碼
"CarrierCode_CreditCard":"string", // 信用卡載具
"ReceiptType":1,
"SessionId":"34f117a1-d66c-4d77-a22a-6116c870145a"
}
```
Receive Type
Variable Type : Number
| 編號 | 類型 | 說明 |
| ---- | ------------------ | ------------------------- |
| 0 | Unknown | 保留 |
| 1 | Carrier | 手機條碼 (預設請使用此項) |
| 2 | Print | 列印 (雲端支付不適用) |
| 3 | Donate | 捐贈 |
| 4 | Carrier_CreditCard | 信用卡載具 |
| 5 | iPass | 一卡通 |
| 6 | EasyCard | 悠遊卡 |
| 7 | iCash | iCash |
| 8 | HappyCash | HappyGO |
| 9 | NPC | 自然人憑證 |
* **Response**
**Code**:`200 OK`
```json!
{
"data": {
"result": "string"
}
}
```
**Data Example**
```json!
{
"data": {
"result": "2022/06/13 10:57:19"
}
}
```
**Code**:[ErrorCode請參照下方錯誤代碼列舉](#ErrorCodes)
```json!
{
"ErrorCode": "[ErrorCode]"
}
```
---
## 關閉交易
**URL**: ` https://Ip:Port/{FieldNo}/mochipay/v1/parking_tickets/close
`
**Method** : `POST`
**Auth required** : YES
**Route Data**: `FieldNo請填場地代碼`
* **Request Data**
```json!
{
"SessionId": "[Session ID]",
}
```
**Data Example**
```json!
{
"SessionId": "34f117a1-d66c-4d77-a22a-6116c870145a",
}
```
* **Response**
**Code**:`200 OK`
```json!
{
"data": {
"result": "string"
}
}
```
**Code**:[ErrorCode請參照下方錯誤代碼列舉](#ErrorCodes)
```json!
{
"ErrorCode": "[ErrorCode]"
}
```
---
## Health Check
**URL**: ` https://Ip:Port/mochipay/v1/HealthCheck
`
**Method** : `POST`
**Auth required** : YES
* **Request Data**
```json!
{
"Username": "[Username]",
"Password": "[password in plain text]"
}
```
**Data Example**
```json!
{
"Username": "Autopass",
"Password": "mochipay9999"
}
```
* **Response**
**Code**:`200 OK`
```json!
{
"Message": [
"string"
]
}
```
**Data Example**
```json!
{
"Message": [
"Hi, Autopass"
]
}
```
**Code**:`400 BadRequest`
```json!
{
"Message": [
"Username or password is incorrect"
]
}
```
---
## 查詢交易狀態
**URL**: ` https://Ip:Port/mochipay/v1/parking_tickets/query
`
**Method** : `POST`
**Auth required** : YES
* **Request Data**
```json!
{
"parking_record_id":"287",
"parking_ticket_id":"55678",
}
```
**Data Example**
```json!
{
"parking_record_id":"287",
"parking_ticket_id":"55678",
}
```
* **Response**
**Code**:`200 OK`
```json!
{
"parking_record_id": "string",
"parking_ticket_id": "string",
"plate_number": "string",
"checked_in_at": "string",
"checked_out_at": "string",
"recevied_amount": "string",
"pay_by_autopass": bool,
"Status": int
}
```
**Data Example**
```json!
{
"parking_record_id": "287",
"parking_ticket_id": "55678",
"plate_number": "1111",
"checked_in_at": "2022/05/17 14:30:00",
"checked_out_at": "2022/06/13 10:41:52",
"recevied_amount": "25",
"pay_by_autopass": true,
"Status": 1
}
```
| Status | 類型 | 說明 |
| ------ | ------------------- | ---------- |
| 0 | TransactionNotFound | 查無此交易 |
| 1 | PaidCompleted | 已繳清 |
| 2 | InProgress | 交易進行中 |
| 3 | Unpaid | 未繳清 |
**Code**:[ErrorCode請參照下方錯誤代碼列舉](#ErrorCodes)
```json!
{
"ErrorCode": "[ErrorCode]"
}
```
---
# ErrorCodes
## Status 400 BadRequest 資料格式錯誤
提供的資料格式有誤
錯誤代碼列舉
| ErrorCode | Name | Description |
| --------- | -------------- | ------------------------ |
| 0 | UNKNOWN | 保留 |
| 2000 | QRCODE_INVALID | QRCODE不合規範,無法解析 |
## Status 403 Forbidden 拒絕要求
現場 APS 折扣失敗
```json!
{
"ErrorCode": "[ErrorCode]"
}
```
錯誤代碼列舉
| ErrorCode | Name | Description |
| --------- | --------------------------- | --------------------------------------------------- |
| 0 | UNKNOWN | 保留 |
| 1 | SESSION_UNAVAILABLE | 指定的 SESSION_ID 已被 Server 端關閉, 例如 Timeout) |
| 2 | CAR_IS_BUSY | 已有其他繳費機或 SESSION 正在處理查詢的車輛 |
| 3 | STORE_NOT_FOUND | 拒絕使用折扣: 找不到指定的店家 |
| 4 | CODE_USED | 拒絕使用折扣: 已使用過 |
| 5 | DATE_NOT_MATCH | 拒絕使用折扣: 非當日票券 |
| 6 | LIMIT_DISCOUNT_TIME_REACHED | 拒絕使用折扣: 折扣時數已達上限 |
| 7 | NOT_COBRANDER | 拒絕使用折扣: 非聯名卡 |
| 8 | CREDITCARD_DISCOUNT_REACHED | 拒絕使用折扣: 信用卡使用次數已達上限 |
## Status 404 NotFound
查無車輛, SessionId 錯誤
```json!
{
"ErrorCode": "[ErrorCode]"
}
```
| ErrorCode | Name | Description |
| --------- | ----------------- | ----------------------------------- |
| 0 | UNKNOWN | 保留 |
| 1 | CAR_NOT_FOUND | 找不到指定的車輛 |
| 2000 | SESSION_NOT_FOUND | SessionId 不正確, 或 Session 已關閉 |
## Status 500 InternalServerError
```json!
{
"ErrorCode": "[ErrorCode]"
}
```
| ErrorCode | Name | Description |
| --------- | ---------------- | ------------------ |
| 0 | UNKNOWN | 保留 |
| 1 | RECEIVED_ERROR | 現場主機回應錯誤 |
| 2 | CONNECTION_ERROR | 與現場主機連線錯誤 |