刷卡機刷卡密碼錯誤受限,錯誤碼設計思考
網上關于刷卡機刷卡密碼錯誤受限,錯誤碼設計思考的刷卡知識比較多,也有關于刷卡機刷卡密碼錯誤受限的問題,今天第一pos網(www.fzog.com.cn)為大家整理刷卡常見知識,未來的我們終成一代卡神。
本文目錄一覽:
刷卡機刷卡密碼錯誤受限
在微服務化的今天,服務間的交互越來越復雜,統一異常處理規范作為框架的基礎,一旦上線后很難再更改,如果設計不好,會導致后期的維護成本越來越來大。 對于錯誤碼的設計,不同的開發團隊有不同的風格習慣。本文分享作者從實踐中總結的經驗及對應的思考,期望對讀者有所啟發。
本文中涉及的源碼:https://github.com/sofn/app-engine/tree/master/common-error
什么是錯誤碼引自阿里巴巴《Java 開發手冊》- 異常日志-錯誤碼
錯誤碼的制定原則:快速溯源、簡單易記、溝通標準化。
正例:錯誤碼回答的問題是誰的錯?錯在哪?
1)錯誤碼必須能夠快速知曉錯誤來源,可快速判斷是誰的問題。
2)錯誤碼易于記憶和比對(代碼中容易 equals)。
3)錯誤碼能夠脫離文檔和系統平臺達到線下輕量化地自由溝通的目的。
那么用Java異常能表示出來嗎?答案顯然是否定的
必須能夠快速知曉錯誤來源:異常類因為復用性不能很快的定位,異常類和代碼行數也不是一個穩定的值必須易于記憶和對比:異常類不具有可比性,且不利于前后端交互能夠脫離代碼溝通:異常類只能存在于Java代碼中錯誤碼設計錯誤碼的設計是比較簡單的,一般只需要定義一個數字和描述信息即可。不過想設計一套完善錯誤碼系統還有很多需要考慮的場景。
1、錯誤碼的分層大部分項目錯誤碼設計分為3級能滿足業務場景,即項目、模塊、錯誤編碼。比如錯誤碼是6位,前兩位是項目碼、中間兩位是模塊碼,最后兩位是異常編號。以下是錯誤碼10203的對應說明:
2、錯誤的表示方法:枚舉or 類推薦使用枚舉,因為枚舉具有不可變性,且所有值都在一個文件里描述。
3、多模塊錯誤碼定義及接口定義最原始的錯誤定義方法是項目中所有的錯誤碼都定義在一個類里,但是這樣會隨著業務的發展錯誤碼越來越多,最終導致難以維護,推薦的做法是按照項目+模塊粒度定義成多個錯誤碼枚舉類。有兩個問題需要考慮:
(1)項目編碼、模塊編碼的維護:推薦另建一個枚舉類統一維護
(2)異常類的統一引用:定義接口,枚舉類實現接口
示例:
//異常接口定義public interface ErrorCode {}//模塊定義public enum UserProjectCodes { LOGIN(1, 1, "登錄模塊"), USER(1, 2, "用戶模塊")}//登錄模塊異常碼定義public enum LoginErrorCodes implements ErrorCode { USER_NOT_EXIST(0, "用戶名不存在"), //錯誤碼: 10100 PASSWORD_ERROR(1, "密碼錯誤"); //錯誤碼: 10101 private final int nodeNum; private final String msg; UserLoginErrorCodes(int nodeNum, String msg) { this.nodeNum = nodeNum; this.msg = msg; ErrorManager.register(UserProjectCodes.LOGIN, this); }}4、防重設計
錯誤碼本質上就是一個數字,且每一個都需要由RD編碼定義,在錯誤碼多的項目很容易重復。最佳實踐是在枚舉的構造方法里調用Helper類,Helper類統一維護所有的異常碼,如有重復則枚舉初始化失敗。
5、錯誤擴展信息只有錯誤碼是不夠的,還需要反饋給調用方詳細的錯誤信息以方便修正。固定的錯誤信息字符串在某些場景寫也是不夠的,這里推薦使用slf4j打日志時使用的動態參數,這種方式相比于String.format格式的好處是不需要關心參數的類型以及記憶%s、%d等的區別,且打印日志時經常使用,降低了團隊成員的學習成本。
示例:
//錯誤碼定義PARAM_ERROR(17, "參數非法,期望得到:{},實際得到:{}")//錯誤碼使用ErrorCodes.PARAM_ERROR.format(arg1, arg2);
實現方式:
org.slf4j.helpers.MessageFormatter.arrayFormat(this.message, args).getMessage() 錯誤碼和異常
在日常業務開發中,對于異常使用最多的還是拋出Java異常(Exception),異常又分為受檢查異常(Exception)和不受檢查異常(RuntimeException):
受檢查的異常:這種在編譯時被強制檢查的異常稱為"受檢查的異常"。即在方法的聲明中聲明的異常。不受檢查的異常:在方法的聲明中沒有聲明,但在方法的運行過程中發生的各種異常被稱為"不被檢查的異常"。這種異常是錯誤,會被自動捕獲。1、異常綁定錯誤碼定義兩個父類,分別用于首檢查異常和非受檢查異常??芍С謧魅脲e誤碼,同時需要支持原始的異常傳參,這種場景會賦予一個默認的錯誤碼,比如:500服務器內部異常
//父類定義public abstract class BaseException extends Exception { protected BaseException(String message) {...} protected BaseException(String message, Throwable cause) {...} protected BaseException(Throwable cause) {...} protected BaseException(ErrorInfo errorInfo) {...} protected BaseException(ErrorCode errorCode) {...} protected BaseException(ErrorCode errorCode, Object... args) {...}}2、部分異常
使用異常能適用于大部分場景,不過對于多條目的場景不是很適合,比如需要批量保存10條記錄,某些成功、某些失敗,這種場景就不適合直接拋出異常。
在Node.js和Go語言中異常處理采用多返回值方式處理,第一個值是異常,如果為null則表示無異常。在Java里建議采用vavr庫中的Either來實現,通常使用左值表示異常,而右值表示正常調用后的返回結果,即: Either<ErrorCode, T>
注意不推薦Pair、Tuple來實現,因為Either只能設置一個左值或右值,而Pair、Tuple無此限制。
錯誤碼和統一返回值在前后端的交互中,后端一般使用JSON方式返回結果,整合前面說的錯誤碼,可定義以下格式:
{ "code": number, "msg": string, "data": object}
在SpringMVC中實現方式是自定義ResponseBodyAdvice和異常攔截,具體實現方式直接查看:源碼
實現了以上步驟之后就可以在SpringMVC框架中愉快的使用了,會自動處理異常及封裝成統一返回格式
@GetMapping("/order") public Order getOrder(Long orderId) { return service.findById(orderId); }總結
本文總結了設計錯誤碼需要考慮的各種因素,并給出了參考示例,基本能滿足一般中大型項目。規范有了最重要的還是落地,讓團隊成員遵守規范才能讓項目健康的迭代。
源碼地址:https://github.com/sofn/app-engine/tree/master/common-error
本文來自https://www.cnblogs.com/lesofn/p/16051008.html
POS機刷卡錯誤是怎么回事?
pos機刷卡錯誤代碼速查表: 00 ——pos機交易成功 承兌或交易成功 01 ——pos機交易失敗,請聯系發卡行 查發卡行或檢查卡內余額 02 ——同上 03—— 商戶未登記,無權使用銀聯pos機終端 聯系銀行卡服務中心處理 04—— 沒收卡,請聯系收單行 操作員沒收卡(這種情況為高風險卡片,有黑卡或仿卡的嫌疑)
05 ——交易失敗,請聯系發卡行 發卡不予承兌,與發銀行聯系查詢 06 ——交易失敗,請聯系發卡行 發卡行故障,稍等重新刷卡 07 ——沒收卡,請聯系收單行 特殊條件下沒收卡,這種情況為高風險卡片,有黑卡或仿卡的嫌疑 09 ——交易失敗,請重試 重做該交易,稍等重新刷卡 12—— 交易失敗,請重試 發卡行不支持的交易,這種情況為部分銀行卡不識別銀聯pos機上的刷卡器或未和銀聯簽訂支付清算協議。
13—— 交易金額超限,請重試交易金額無效,采用小金額交易或與發卡行聯系,可向銀行申請暫時提升信譽額度,或小額刷卡。
14 ——無效卡號,請聯系發卡行無效卡號,與銀行卡服務中心或發卡行聯系,長時間未使用或未交年費管理費情況造成,或者注銷卡。
15 ——此卡不能受理 與銀行卡服務中心聯系處理,未接入銀聯網絡,銀聯不予以清算和結賬。
19 ——交易失敗,請聯系發卡行 刷卡讀取數據有誤,重新刷卡 20 ——交易失敗,請聯系發卡行 與銀行卡服務中心或發卡行聯系 21 ——交易失敗,請聯系發卡行 與銀行卡服務中心或發卡行聯系 22 ——操作有誤,請重試 POS狀態與中心不符,重新簽到,確定操作員號碼和密碼正確,重新刷卡。
23 ——交易失敗,請聯系發卡行 不可接受的交易費,這筆交易資金存在風險或者未簽訂銀聯協議。
25—— 交易失敗,請聯系發卡行發卡行未能找到有關記錄,核對有關資料重做該交易或與發卡行聯系 30 ——交易失敗,請重試 檢查卡磁條是否完好或反方向刷卡或者銀聯pos機的磁條沒有問題,以及其他接口正常。
31—— 此卡不能受理 此發卡方未與中心開通業務,檢查此卡是否是簽訂銀聯協議的銀行卡。 33—— 過期卡,請聯系發卡行 過期的卡或與發卡行聯系,暫時凍結結算功能 34 ——沒收卡,請聯系收單行 有作弊嫌疑的卡,操作員可以沒收(黑卡仿卡,高風險卡)
35 ——沒收卡,請聯系收單行 有作弊嫌疑的卡,操作員可以沒收(黑卡仿卡,高風險卡)
36 ——此卡有誤,請換卡重試 有作弊嫌疑的卡,操作員可以沒收(黑卡仿卡,高風險卡)
37 ——沒收卡,請聯系收單行 有作弊嫌疑的卡,操作員可以沒收(黑卡仿卡,高風險卡)
38 ——密碼錯誤次數超限 密碼輸錯的次數超限,一般pos機結算刷卡為保護持卡人利益,連續輸入3次未能輸入正確,發卡行系統自動凍結此卡,24小時后自動解凍。
39 ——交易失敗,請聯系發卡行 可能刷卡操作有誤,請重新刷卡 40 ——交易失敗,請聯系發卡行 發卡行不支持的交易類型,查看卡內余額以及操作流程得當,重新刷卡。
41 ——沒收卡,請聯系收單行 掛失的卡,與發卡行聯系處理,此卡已經掛失,一般為盜卡,高風險卡。
42 ——交易失敗,請聯系發卡方 發卡行找不到此帳戶,此卡為黑卡,防范風險。
43 ——沒收卡,請聯系收單行 被竊卡, 操作員可以沒收,黑卡、盜卡防范風險 44 ——交易失敗,請聯系發卡行 可能刷卡操作有誤,重新刷卡,確定刷卡流程和步驟正確。 51 ——余額不足,請查詢 帳戶內余額不足,小額刷卡。
52 ——交易失敗,請聯系發卡行 無此支票賬戶,信用卡信息不全或者不準確,核實后補充資料 53—— 交易失敗,請聯系發卡行 無此儲蓄卡賬戶,沒有登記的卡,過期卡、實效卡、仿卡 54 ——過期卡,請聯系發卡行 過期的卡,像銀行提出申請重新補辦或開通 55 ——密碼錯,請重試 密碼輸錯,可重新輸入,注意只可以聯系刷如3次要是還沒有輸入正確此卡將被暫時凍結。 56 ——交易失敗,請聯系發卡行 發卡行找不到此帳戶,與發卡行聯系,黑卡、盜卡、仿卡注意防范風險 57 ——交易失敗,請聯系發卡行不允許持卡人進行的交易,與發卡行聯系,持卡人之前交易有套現嫌疑,屬于銀行的風險持卡人,銀行對此持卡人已提升監控。 58 ——終端無效,請聯系收單行或銀聯重新簽到再試或與銀行卡服務中心聯系 59 ——交易失敗,請聯系發卡行,是否開通結算功能,或者超出額度 60 ——交易失敗,請聯系發卡行 查詢卡內余額或者詢問此卡是否簽訂銀聯協議 61 ——金額太大 超出去款金額限制,可向銀行提出暫時額度,根據持卡人消費核定暫時額度的金額 62 ——交易失敗,請聯系發卡行 受限制的卡,此持卡人為銀行的風險持卡人,已被銀行監控,注意防范風險 63 ——交易失敗,請聯系發卡行 違反安全保密規定,存在惡意透支或者沒有按時還款 64 ——交易失敗,請聯系發卡行原始金額不正確,核對原始資料或與發卡行聯系,持卡人資料有問題,請核實持卡人身份資料,及卡片資料。 65 ——超出取款次數限制 超出取款次數限制,銀行系統風險控制,聯系銀行解決 66 ——交易失敗,請聯系收單行或銀聯 銀聯磁條不識別或者卡片消磁 67 ——沒收卡 黑卡、盜卡、仿卡高風險卡片,注意防范風險 68 ——交易超時,請重試發卡行規定時間內沒有應答,與銀行卡服務中心或發卡行聯系,重新簽到或操作刷卡。 75 ——密碼錯誤次數超限允許的輸入PIN次數超限,該卡要重置密碼方能使用,撥打銀行客戶服務電話解決 77—— 請向網絡中心簽到 重做簽到,輸入密碼和操作員號碼 79 ——POS終端重傳脫機數據 POS終端上傳的脫機數據對帳不平,檢查接口是否鏈接好 90 ——交易失敗,請稍后重試日期切換正在處理,與銀行卡服務中心或發卡行聯系 91 ——交易失敗,請稍后重試 電話查詢發卡方或銀聯,可重作,重新輸入操作員號碼和密碼 92 ——交易失敗,請稍后重試銀行通訊故障,電話查詢發卡方或網絡中心 93 ——交易失敗,請聯系發卡行 交易違法、不能完成。有套現或惡意透支嫌疑可重新簽到后再試 94 ——交易失敗,請稍后重試重新簽到后再交易或與銀行卡服務中心聯系 95 ——交易失敗,請稍后重試 發卡行調節控制錯,與發卡行聯系,銀行系統風險控制 96 ——交易失敗,請稍后重試 與發卡行或銀行卡服務中心聯系銀行或銀聯風險系統自動報警 97 ——終端未登記,請聯系收單行或銀聯 與銀行卡服務中心聯系,及時遞交資料解決 98 ——交易超時,請重試銀聯收不到發卡行應答,與銀行卡服務中心或發卡行聯系 99 ——校驗錯,請重新簽到 重新簽到再作交易 A0—— 校驗錯,請重新簽到 重新簽到作交易
以上就是關于刷卡機刷卡密碼錯誤受限,錯誤碼設計思考的知識,后面我們會繼續為大家整理關于刷卡機刷卡密碼錯誤受限的知識,希望能夠幫助到大家!
轉載請帶上網址:http://www.fzog.com.cn/shuaka/41799.html