:::success # 晶片金融卡元件流程 #### 卡片測試ID: `D221275272` (白卡) #### 卡片測試ID: `F229057643` (黃卡) ### 元件初始化 ><font color="#3d3d3d">等待`isSCSBWebATMInitialized` 為 *true*,代表元件已正常初始化 >>判斷`getCode`是否為 **0**、**3005**、**5070** 此3種視為安控元件有安裝,且正常執行 >>###### <註: 0: 代表執行成功, 3005代表卡片不存在, 5070: 代表使用者取消操作> >>常見安控元件未安裝或異常的錯誤 **61001**、**61006**、**5908**</font> >>###### <註: 61001: 未正常啟動安控元件, 61006: 無法與安控元件建立連線, 5908: 雙向驗證失敗> ``` mermaid graph TB; 交易-->初始化時判斷安控元件是否安裝 初始化時判斷安控元件是否安裝-->安控元件未安裝 初始化時判斷安控元件是否安裝-->安控元件已安裝 安控元件未安裝-->跳出燈箱提醒 安控元件已安裝-->視畫面邏輯處理 ``` :::warning ### 初始化後流程 ><font color="#3d3d3d">判斷`getCode`是否為 **61201**、**61202**、**61203**、**61204**</font> ###### <註: 以上代碼皆為版本異常情況,目前只做版本異常跳燈箱提醒,可繼續流程,不可使用之版本尚未定義> ``` mermaid graph TB; 檢查版本-->最低可支援版本; 檢查版本-->不可使用之版本; 最低可支援版本-->比目前版本小跳出燈箱提醒,繼續流程; 不可使用之版本-->跳出燈箱提醒,不可繼續流程; ``` ><font color="#3d3d3d">判斷`getCode`若不為**0** 跳燈箱錯誤 >>使用回傳的`data`判斷`data.length < 1` 或 `data[0]是否為空` </font> ``` mermaid graph TB; 取得讀卡機名稱並判斷是否有異常-->正常列出讀卡機 取得讀卡機名稱並判斷是否有異常-->異常跳出燈箱提醒; 正常列出讀卡機-->讀取電腦上的讀卡機名稱; 正常列出讀卡機-->找不到讀卡機跳出燈箱提醒; ``` ><font color="#3d3d3d">判斷`getCode`若是 **0** 或 **3005** 或 **5907** 可繼續流程</font> ###### <註: code為 0: 執行成功、3005: 卡片不存在、5907: 元件認證失敗(在這步可能會有此錯誤,後續流程若還有此問題再跳燈箱錯誤),以上皆可繼續流程> ``` mermaid graph TB; 連結卡片-->連結正常可繼續流程; 連結卡片-->異常情況跳出燈箱提醒; ``` ><font color="#3d3d3d">判斷`getCode`若是 **0** 或 **3005** 可繼續流程</font> ###### <註: **0** 和 **3005** 以外的都是異常情況> ``` mermaid graph TB; 取得卡片狀態-->狀態正常可繼續流程; 取得卡片狀態-->異常情況跳出燈箱提醒; ``` :::danger ### 驗證 ><font color="#3d3d3d">判斷getCode是否為 **0** 和 getData是否有值 >###### <註: getData: 取得的卡片資訊> >>若為 **0** 代表執行成功,前端檢核銀行代碼`data[0]`是否為`011`</font> >>###### <註: data[0]: 發卡單位代號> ``` mermaid graph TB; 是否為本行-->判斷卡片資訊是否為上海商業銀行卡片; 是否為本行-->若非本行,跳出燈箱提醒; ``` ><font color="#3d3d3d">判斷getCode是否為 **0** >>若為 **0** 代表驗證成功,把卡片帳號資訊`data[2]`帶到後端驗證</font> >>###### <註: data[2]: 帳號> ``` mermaid graph TB; 驗證PIN碼-->驗證PIN碼成功,把卡片資訊帶到後端; 驗證PIN碼-->驗證PIN碼失敗,跳出燈箱提醒; ``` ><font color="#3d3d3d">後端`打電文BS1801`,取得`Hashtable data = bs1801.getData(); String VerifyID = (String) data.get("IDNO");` 檢核是否與登入的`userId`相等</font> ``` mermaid graph TB; 是否為本人卡片-->若後端驗證成功則中斷卡片連結; 是否為本人卡片-->若後端驗證錯誤,跳出燈箱提醒; ``` ><font color="#3d3d3d">判斷`getCode`若是 **0** 代表執行成功 </font> ###### <註: **0** 以外的都是異常情況> ``` mermaid graph TB; 中斷卡片連結-->執行成功,卡片中斷; 中斷卡片連結-->異常情況跳出燈箱提醒; ``` ::: # 錯誤訊息 #### 全景已定義錯誤代碼 ``` "E3005": "請插入晶片金融卡!插入完成後再請按下確認,或是取消此次交易。", "E30": "輸入的晶片密碼錯誤,請重新輸入。", "E5001": "一般性錯誤。", "E5909": "輸入密碼不符合規則。", "E5079": "操作逾時。", "E3002": "無法判別的卡片種類、拔插錯誤的卡片。", "E3999": "無效的狀態。", "E31": "金融卡已被鎖卡。", "E32": "金融卡密碼長度不正確。", "E33": "金融卡密碼格式不正確。", "E1": "執行失敗。", "E5908": "請下載安裝上海商業儲蓄銀行網路銀行讀卡機安控元件並啟動,點擊下載可到下載頁面。", "E61001": "請下載安裝上海商業儲蓄銀行網路銀行讀卡機安控元件並啟動,點擊下載可到下載頁面。", "E61006": "請下載安裝上海商業儲蓄銀行網路銀行讀卡機安控元件並啟動,點擊下載可到下載頁面。", "E61201": "讀卡機安控元件己有最新版本,建議您進行軟體更新。", "E61202": "讀卡機安控元件己有最新版本,建議您進行軟體更新。", "E61203": "讀卡機安控元件己有最新版本,建議您進行軟體更新。", "E61204": "讀卡機安控元件己有最新版本,建議您進行軟體更新。", "E5070": "使用者取消操作。", "E5071": "密碼不正確。", "UNEXPECTED_ERROR": "不可預期的錯誤。" ``` >###### <註:> >>###### 1. `E3005` `E30` `E5908` `E61001` `E61006` `E61201` `E61202` `E61203` `E61204` ,為全景已定義代碼,更改為自定義錯誤訊息 >>###### 2. 若是mapping不到的代碼,則一律跳`"不可預期的錯誤。"` #### 檢核訊息 ``` "PLEASE_INSTALL_CARD_READER": "請安裝讀卡機! 安裝完讀卡機後,請按下確定。", "USE_SCSB_CARD_FOR_TRANSACTIONS": "請使用上海商業儲蓄銀行發放的晶片金融卡進行交易,謝謝!", "PLEASE_SELECT_CARD_READER": "請選擇讀卡機", "PLEASE_ENTER_6-12_DIGIT_CHIP_PIN": "請輸入6-12位晶片密碼", "CARDREMARK_INSUFFICIENT_LENGTH": "晶片卡備註欄長度不足" ```