刷卡机刷卡密码错误受限,错误码设计思考
网上关于刷卡机刷卡密码错误受限,错误码设计思考的刷卡知识比较多,也有关于刷卡机刷卡密码错误受限的问题,今天第一pos网(www.pos-diy.com)为大家整理刷卡常见知识,未来的我们终成一代卡神。
本文目录一览:
刷卡机刷卡密码错误受限
在微服务化的今天,服务间的交互越来越复杂,统一异常处理规范作为框架的基础,一旦上线后很难再更改,如果设计不好,会导致后期的维护成本越来越来大。 对于错误码的设计,不同的开发团队有不同的风格习惯。本文分享作者从实践中总结的经验及对应的思考,期望对读者有所启发。
本文中涉及的源码: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、异常绑定错误码定义两个父类,分别用于首检查异常和非受检查异常。可支持传入错误码,同时需要支持原始的异常传参,这种场景会赋予一个默认的错误码,比如: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.pos-diy.com/shuaka/41799.html