---
# System prepended metadata

title: Android & iOS 實作細節討論
tags: [國光客運]

---

# Android & iOS 實作細節討論

###### tags: `國光客運`


:::warning

### [問題] 修改密碼後，需要幫使用者用新的密碼重新登入，更新 `access token` 嗎？

:::



## 「訂票服務選擇起訖站頁面」實作細節
- 起訖站交換按鈕。若查詢結果未有該站時，顯示警告視窗並且不套用


## 「個人資料」實作細節
非會員的個人資料，在登入帳號登出帳號後，不要清除
非會員資料保存後，登入帳號不清除手機內的非會員資料，因此在登出帳號後仍可看見非會員資料


## 推播設定 
與會員登入帳號無關，需記憶在 user preference 內
- 優惠提醒：預設「開」
- 好康快報：預設「開」
- 緊急訊息：預設「開」


## 「註冊表單」實作細節
- 有選擇器的欄位，都預填第一可選擇項目
- 性別預填為 **男性**
- 生日預填為 **今天**
- 註冊會員的密碼規則:
    - 英文大小寫和十個阿拉伯數字，特殊字元可接受底線 "_"
    - 長度介於 8 ~ 16（含）
- 電話號碼規則：（不分本國人與外國人）
    - 只接受數字
    - 長度介於 6 ~ 15（含）
- 外國人護照字串限制
    - 接受英文大小寫與十個阿拉伯數字
    - 長度介於 3 ~ 20（含）
- 本國人身分證號限制
    - 參考 http://www2.lssh.tp.edu.tw/~hlf/class-1/lang-c/id/index.htm
    - 不檢查是否為居留證號碼
- 信箱：
    - 長度限制512
- 姓名：
    - 判斷限制最多50個字(一個中文字或一個英文字母，代表一個長度)


## 票種代號對應關係
票種代號對應關係可以 Hard Code 寫死在程式內(2020.03.23 17:20 已與 Joy 確認)
- "1" = 全票
- "2" = 孩童票
- "3" = 來回票
- "4" = 敬老票
- "5" = 愛心票


---
## [問題][已解決] iOS 的時間選擇器能否顯示年份？
#### Q: 「訂票服務選擇起訖站頁面」需要顯示時間選擇器選擇去程與返程時間。iOS 的時間選擇器能否顯示年份？
#### A: 原生的元件無法同時顯示 又有年份又有時間 的時間選擇器


## [問題][已解決] 居住地交換格式？
#### Q: 與 `居住地` 相關的 api 有 api013, api014, api015，app要傳什麼樣的格式給伺服器？
#### A: 居住地字串是以地點代碼的方式交換。地點對應表參照下方附錄。




## 附錄：訂單狀態

TradingStatus|可取消訂票|可付款|可更改班次|可取票|備註
:----:|:----:|:----:|:----:|:----:|:----:|
00 |✅ |✅ |❌ |❌ |未付
01 |❌ |❌ |❌ |❌ |未付(已在實體通路取票)
10 |✅ |❌ |✅ |✅ |已付未取
11 |❌ |❌ |❌ |❌ |已付未取(回數票)
66 |❌ |❌ |❌ |❌ |票務系統顯示此訂單已取消
77 |❌ |❌ |❌ |❌ |票務系統查無此訂單
88 |❌ |❌ |❌ |❌ |票務系統顯示此訂單違約



## 附錄：地點代碼

cityID | CityName
:-----:|:----------:
00     | 基隆市
01     | 台北市
02     | 新北市
03     | 桃園市
04     | 新竹市
05     | 新竹縣
06     | 苗栗縣
07     | 台中市
08     | 彰化縣
09     | 南投縣
10     | 雲林縣
11     | 嘉義市
12     | 嘉義縣
13     | 台南市
14     | 高雄市
15     | 屏東縣
16     | 台東縣
17     | 花蓮縣
18     | 宜蘭縣
19     | 澎湖縣
20     | 金門縣
21     | 連江縣

## 金流規則
- 進入信用卡付款頁面
http://ip位置/KuoKuang/KKBus_GFlow.aspx?kktoken=xxxxx&OInfo=xxxxxx
    - kktoken => app token
    - OInfo => 請依下面規則組成OInfo
        - 0到5位為金額(000150) 
        - 6位為刷卡類型(1:一般信用卡 2:國民旅遊卡) 
        - 7與8位為旅遊地區(若為一般信用卡請代入99) 
        - 9位後為訂單編號14碼(20200330_90134)


- 資料處理完畢後會導向 `TicketList.aspx?listtype=x`
    - listtype：
        - 0:使用者取消交易，導向未付款頁籤。
            - 提示視窗訊息：「交易取消」
        - 1:代表授權失敗，導向未付款頁籤。
            - 提示視窗訊息：「信用卡授權失敗，請洽發卡銀行」
        - 2:則是授權成功，導向已付款待取票頁。
            - 提示視窗訊息：「信用卡付款成功」
        - 3:代表當前授權失敗，請於15分鐘後再次確認是否有付款成功。
            - 提示視窗訊息：「信用卡授權失敗，請於15分鐘後再次確認是否有付款成功！」


以上在網頁處理資料的過程中若有擷取到轉跳 `Error.aspx` 的頁面，請在畫面跳出視窗顯示「此筆訂單資料處理時發生系統錯誤，請盡速洽國光客服人員!」，當使用者點下確認後，轉跳到未付款的頁籤

## PTX車輛動態
https://ptx.transportdata.tw/MOTC#/

- 車輛動態 /v2/Bus/RealTimeByFrequency/InterCity/{RouteName} 
用車牌過濾(OData, ex: "PlateNumb eq 299")，沒有車牌就全部顯示

OData: https://ptxmotc.gitbooks.io/ptx-api-documentation/content/api-te-se/odata.html

```
https://ptx.transportdata.tw/MOTC/v2/Bus/RealTimeByFrequency/InterCity/123?$format=JSON&filter=PlateNumb eq '299'
```

## Token失效
- 已登入
1. 顯示dialog並導向登入頁且清空view stack
2. 呼叫API04
- 未登入
1. 呼叫API04