Java实现获取银行卡所属银行,验证银行卡号是否正确的方法详解
本文实例讲述了Java实现获取银行卡所属银行,验证银行卡号是否正确的方法。分享给大家供大家参考,具体如下:
需求:用户输入银行卡卡号,需要验证卡号格式,自动填充所属银行。
第一想到的是正则表达式,后面尝试多次,卡号验证不太准确。
换一种思路:用户输入卡号,进入java后台,对卡号进行验证,返回结果。可行!
第一点:
如何验证卡号格式以及所属银行?
js/html此处就不写出来了。直接给后台代码,我提供给各位一个简单的main调用,可自行修改(建议放入service):
/**
*TODO
*@paramcardNo银行卡卡号
*@return{"bank":"CMB","validated":true,"cardType":"DC","key":"(卡号)","messages":[],"stat":"ok"}
*2017年5月22日下午4:35:23
*/
publicstaticStringgetCardDetail(StringcardNo){
//创建HttpClient实例
Stringurl="https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=";
url+=cardNo;
url+="&cardBinCheck=true";
StringBuildersb=newStringBuilder();
try{
URLurlObject=newURL(url);
URLConnectionuc=urlObject.openConnection();
BufferedReaderin=newBufferedReader(newInputStreamReader(uc.getInputStream()));
StringinputLine=null;
while((inputLine=in.readLine())!=null){
sb.append(inputLine);
}
in.close();
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
returnsb.toString();
}
publicstaticvoidmain(String[]args){
System.out.println(getCardDetail("卡号"));
}
得到的json字符串{"bank":"CMB","validated":true,"cardType":"DC","key":"(卡号)","messages":[],"stat":"ok"}后,后面的操作我就不多嘴了。
bank银行的名称代码
validated是否通过验证
不花钱就是程序员的原则!
上面调用的也是支付宝的api地址,完全免费哦~~
第二点:
如何获得所有银行的列表?
下面是我从支付宝页面抓取的银行卡列表json,很全面。你们copy后放入自己的json文件,或改写到你们的数据库,或者放入map
{
"SRCB":"深圳农村商业银行",
"BGB":"广西北部湾银行",
"SHRCB":"上海农村商业银行",
"BJBANK":"北京银行",
"WHCCB":"威海市商业银行",
"BOZK":"周口银行",
"KORLABANK":"库尔勒市商业银行",
"SPABANK":"平安银行",
"SDEB":"顺德农商银行",
"HURCB":"湖北省农村信用社",
"WRCB":"无锡农村商业银行",
"BOCY":"朝阳银行",
"CZBANK":"浙商银行",
"HDBANK":"邯郸银行",
"BOC":"中国银行",
"BOD":"东莞银行",
"CCB":"中国建设银行",
"ZYCBANK":"遵义市商业银行",
"SXCB":"绍兴银行",
"GZRCU":"贵州省农村信用社",
"ZJKCCB":"张家口市商业银行",
"BOJZ":"锦州银行",
"BOP":"平顶山银行",
"HKB":"汉口银行",
"SPDB":"上海浦东发展银行",
"NXRCU":"宁夏黄河农村商业银行",
"NYNB":"广东南粤银行",
"GRCB":"广州农商银行",
"BOSZ":"苏州银行",
"HZCB":"杭州银行",
"HSBK":"衡水银行",
"HBC":"湖北银行",
"JXBANK":"嘉兴银行",
"HRXJB":"华融湘江银行",
"BODD":"丹东银行",
"AYCB":"安阳银行",
"EGBANK":"恒丰银行",
"CDB":"国家开发银行",
"TCRCB":"江苏太仓农村商业银行",
"NJCB":"南京银行",
"ZZBANK":"郑州银行",
"DYCB":"德阳商业银行",
"YBCCB":"宜宾市商业银行",
"SCRCU":"四川省农村信用",
"KLB":"昆仑银行",
"LSBANK":"莱商银行",
"YDRCB":"尧都农商行",
"CCQTGB":"重庆三峡银行",
"FDB":"富滇银行",
"JSRCU":"江苏省农村信用联合社",
"JNBANK":"济宁银行",
"CMB":"招商银行",
"JINCHB":"晋城银行JCBANK",
"FXCB":"阜新银行",
"WHRCB":"武汉农村商业银行",
"HBYCBANK":"湖北银行宜昌分行",
"TZCB":"台州银行",
"TACCB":"泰安市商业银行",
"XCYH":"许昌银行",
"CEB":"中国光大银行",
"NXBANK":"宁夏银行",
"HSBANK":"徽商银行",
"JJBANK":"九江银行",
"NHQS":"农信银清算中心",
"MTBANK":"浙江民泰商业银行",
"LANGFB":"廊坊银行",
"ASCB":"鞍山银行",
"KSRB":"昆山农村商业银行",
"YXCCB":"玉溪市商业银行",
"DLB":"大连银行",
"DRCBCL":"东莞农村商业银行",
"GCB":"广州银行",
"NBBANK":"宁波银行",
"BOYK":"营口银行",
"SXRCCU":"陕西信合",
"GLBANK":"桂林银行",
"BOQH":"青海银行",
"CDRCB":"成都农商银行",
"QDCCB":"青岛银行",
"HKBEA":"东亚银行",
"HBHSBANK":"湖北银行黄石分行",
"WZCB":"温州银行",
"TRCB":"天津农商银行",
"QLBANK":"齐鲁银行",
"GDRCC":"广东省农村信用社联合社",
"ZJTLCB":"浙江泰隆商业银行",
"GZB":"赣州银行",
"GYCB":"贵阳市商业银行",
"CQBANK":"重庆银行",
"DAQINGB":"龙江银行",
"CGNB":"南充市商业银行",
"SCCB":"三门峡银行",
"CSRCB":"常熟农村商业银行",
"SHBANK":"上海银行",
"JLBANK":"吉林银行",
"CZRCB":"常州农村信用联社",
"BANKWF":"潍坊银行",
"ZRCBANK":"张家港农村商业银行",
"FJHXBC":"福建海峡银行",
"ZJNX":"浙江省农村信用社联合社",
"LZYH":"兰州银行",
"JSB":"晋商银行",
"BOHAIB":"渤海银行",
"CZCB":"浙江稠州商业银行",
"YQCCB":"阳泉银行",
"SJBANK":"盛京银行",
"XABANK":"西安银行",
"BSB":"包商银行",
"JSBANK":"江苏银行",
"FSCB":"抚顺银行",
"HNRCU":"河南省农村信用",
"COMM":"交通银行",
"XTB":"邢台银行",
"CITIC":"中信银行",
"HXBANK":"华夏银行",
"HNRCC":"湖南省农村信用社",
"DYCCB":"东营市商业银行",
"ORBANK":"鄂尔多斯银行",
"BJRCB":"北京农村商业银行",
"XYBANK":"信阳银行",
"ZGCCB":"自贡市商业银行",
"CDCB":"成都银行",
"HANABANK":"韩亚银行",
"CMBC":"中国民生银行",
"LYBANK":"洛阳银行",
"GDB":"广东发展银行",
"ZBCB":"齐商银行",
"CBKF":"开封市商业银行",
"H3CB":"内蒙古银行",
"CIB":"兴业银行",
"CRCBANK":"重庆农村商业银行",
"SZSBK":"石嘴山银行",
"DZBANK":"德州银行",
"SRBANK":"上饶银行",
"LSCCB":"乐山市商业银行",
"JXRCU":"江西省农村信用",
"ICBC":"中国工商银行",
"JZBANK":"晋中市商业银行",
"HZCCB":"湖州市商业银行",
"NHB":"南海农村信用联社",
"XXBANK":"新乡银行",
"JRCB":"江苏江阴农村商业银行",
"YNRCC":"云南省农村信用社",
"ABC":"中国农业银行",
"GXRCU":"广西省农村信用",
"PSBC":"中国邮政储蓄银行",
"BZMD":"驻马店银行",
"ARCU":"安徽省农村信用社",
"GSRCU":"甘肃省农村信用",
"LYCB":"辽阳市商业银行",
"JLRCU":"吉林农信",
"URMQCCB":"乌鲁木齐市商业银行",
"XLBANK":"中山小榄村镇银行",
"CSCB":"长沙银行",
"JHBANK":"金华银行",
"BHB":"河北银行",
"NBYZ":"鄞州银行",
"LSBC":"临商银行",
"BOCD":"承德银行",
"SDRCU":"山东农信",
"NCB":"南昌银行",
"TCCB":"天津银行",
"WJRCB":"吴江农商银行",
"CBBQS":"城市商业银行资金清算中心",
"HBRCU":"河北省农村信用社"
}
第三点:
如何显示银行对应的logo?
银行的LOGO也可以用过支付宝提供的一个图片API获取。第一点中我们通过卡号获取到了银行名称代码等信息,此处即可使用以下链接显示图片:
https://apimg.alipay.com/combo.png?d=cashier&t=ABC(银行简称-大写)
完成整个需求,其实很简单,也就这3个基本步骤。
写的不够完整,希望能帮到各位。
PS:这里再为大家推荐一款相关在线工具供大家参考:
在线银行卡号归属地信息查询工具:
http://tools.jb51.net/bianmin/bankinfo
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。