如何解决如何使用包含空格的信用卡号?
我的观点是,任何拒绝带有空格的信用卡号的Web应用程序都无法正常工作。当您收到信用卡号时,这样做很容易:
String ccNumber = ccNumber.replaceAll("[\\s-]+", "");
删除空格和破折号(有些也使用)。然后验证结果。如果您强迫用户删除您可以轻松完成的空间,则只会惹恼他们。
至于 验证,这取决于很多事情,例如您使用的是哪种Web框架以及选择的验证选项。例如,Struts 1可能会或可能不会使用Apache Commons Validator,而Spring MVC将(可能)使用Spring验证,依此类推。所以我不能告诉你到底如何验证,但我可以告诉你 来验证。
第一件事是带有空格的抄送号码 应该被拒绝。大多数人会发现:
4123 0987 8876 2939
容易阅读:
4123098788762939
如果用户错过或输入了错误的数字并需要查找其信用卡号验证失败的原因,这一点非常重要。这篇文章顶部的replaceAll()解决了这种情况。
第二件事是您以正确的方式显示信用卡号(即使出于安全原因,某些数字用X代替了)。我建议您通读《信用卡号剖析》。
该页面为您提供了数字位数和有效前缀的规则。健壮的Web应用程序将实现这些功能, 。向付款网关提交信用卡详细信息最多可能需要30秒钟(或更长的时间),因此在您确定可以接受付款之前,您不应该这样做。否则将提供非常糟糕的用户体验。如果失败1-2次,用户很有可能会放弃,而不是等待。
至于显示,取决于数字位数:
- 16:4组,每组4个,中间用空格隔开;
- 15:就像美国运通卡,即4-6-5,每组之间有一个空格;
- 14:就像大来卡,即4-6-4,每组之间有一个空格;
- 13:从没见过13,但脑海中浮现出4-5-4或4-4-5或5-4-4(或3-3-3-4)。
在作为标准验证例程的一部分 进行处理之前, 应根据页面中提到的校验和算法来验证信用卡号。该页面具有该例程的Java实现。
接受信用卡付款的网站都应将上述所有操作作为 否则您会因为沮丧的用户比例而放弃业务。
因此,简短的版本是两个简单的规则:
- 尽可能宽容用户的输入;和
- 在提交之前,请尽一切可能验证信用卡详细信息。
解决方法
当检测到未经训练的购物者输入信用卡/借记卡卡号时,某些高档网站会显示错误对话框,因为该密码印在其卡上带有空格。是否可以通过某种方式编写一个Java
Web应用程序来处理这些带有空格的数字,就好像它们是正确的一样?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。