BankUtils.java 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. package com.izouma.nineth.utils;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.serializer.SerializerFeature;
  4. import com.github.kevinsawicki.http.HttpRequest;
  5. import com.izouma.nineth.dto.BankValidate;
  6. import lombok.extern.slf4j.Slf4j;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9. @Slf4j
  10. public class BankUtils {
  11. private static final Map<String, String> nameMap = new HashMap<>() {{
  12. put("ABC", "中国农业银行");
  13. put("ARCU", "安徽省农村信用社");
  14. put("ASCB", "鞍山银行");
  15. put("AYCB", "安阳银行");
  16. put("BANKWF", "潍坊银行");
  17. put("BGB", "广西北部湾银行");
  18. put("BHB", "河北银行");
  19. put("BJBANK", "北京银行");
  20. put("BJRCB", "北京农村商业银行");
  21. put("BOC", "中国银行");
  22. put("BOCD", "承德银行");
  23. put("BOCY", "朝阳银行");
  24. put("BOD", "东莞银行");
  25. put("BODD", "丹东银行");
  26. put("BOHAIB", "渤海银行");
  27. put("BOJZ", "锦州银行");
  28. put("BOP", "平顶山银行");
  29. put("BOQH", "青海银行");
  30. put("BOSZ", "苏州银行");
  31. put("BOYK", "营口银行");
  32. put("BOZK", "周口银行");
  33. put("BSB", "包商银行");
  34. put("BZMD", "驻马店银行");
  35. put("CBBQS", "城市商业银行资金清算中心");
  36. put("CBKF", "开封市商业银行");
  37. put("CCB", "中国建设银行");
  38. put("CCQTGB", "重庆三峡银行");
  39. put("CDB", "国家开发银行");
  40. put("CDCB", "成都银行");
  41. put("CDRCB", "成都农商银行");
  42. put("CEB", "中国光大银行");
  43. put("CGNB", "南充市商业银行");
  44. put("CIB", "兴业银行");
  45. put("CITIC", "中信银行");
  46. put("CMB", "招商银行");
  47. put("CMBC", "中国民生银行");
  48. put("COMM", "交通银行");
  49. put("CQBANK", "重庆银行");
  50. put("CRCBANK", "重庆农村商业银行");
  51. put("CSCB", "长沙银行");
  52. put("CSRCB", "常熟农村商业银行");
  53. put("CZBANK", "浙商银行");
  54. put("CZCB", "浙江稠州商业银行");
  55. put("CZRCB", "常州农村信用联社");
  56. put("DAQINGB", "龙江银行");
  57. put("DLB", "大连银行");
  58. put("DRCBCL", "东莞农村商业银行");
  59. put("DYCB", "德阳商业银行");
  60. put("DYCCB", "东营市商业银行");
  61. put("DZBANK", "德州银行");
  62. put("EGBANK", "恒丰银行");
  63. put("FDB", "富滇银行");
  64. put("FJHXBC", "福建海峡银行");
  65. put("FJNX", "福建省农村信用社联合社");
  66. put("FSCB", "抚顺银行");
  67. put("FXCB", "阜新银行");
  68. put("GCB", "广州银行");
  69. put("GDB", "广东发展银行");
  70. put("GDRCC", "广东省农村信用社联合社");
  71. put("GLBANK", "桂林银行");
  72. put("GRCB", "广州农商银行");
  73. put("GSRCU", "甘肃省农村信用");
  74. put("GXRCU", "广西省农村信用");
  75. put("GYCB", "贵阳市商业银行");
  76. put("GZB", "赣州银行");
  77. put("GZRCU", "贵州省农村信用社");
  78. put("H3CB", "内蒙古银行");
  79. put("HANABANK", "韩亚银行");
  80. put("HBC", "湖北银行");
  81. put("HBHSBANK", "湖北银行黄石分行");
  82. put("HBRCU", "河北省农村信用社");
  83. put("HBYCBANK", "湖北银行宜昌分行");
  84. put("HDBANK", "邯郸银行");
  85. put("HKB", "汉口银行");
  86. put("HKBEA", "东亚银行");
  87. put("HNRCC", "湖南省农村信用社");
  88. put("HNRCU", "河南省农村信用");
  89. put("HRXJB", "华融湘江银行");
  90. put("HSBANK", "徽商银行");
  91. put("HSBK", "衡水银行");
  92. put("HURCB", "湖北省农村信用社");
  93. put("HXBANK", "华夏银行");
  94. put("HZCB", "杭州银行");
  95. put("HZCCB", "湖州市商业银行");
  96. put("ICBC", "中国工商银行");
  97. put("JHBANK", "金华银行");
  98. put("JINCHB", "晋城银行JCBANK");
  99. put("JJBANK", "九江银行");
  100. put("JLBANK", "吉林银行");
  101. put("JLRCU", "吉林农信");
  102. put("JNBANK", "济宁银行");
  103. put("JRCB", "江苏江阴农村商业银行");
  104. put("JSB", "晋商银行");
  105. put("JSBANK", "江苏银行");
  106. put("JSRCU", "江苏省农村信用联合社");
  107. put("JXBANK", "嘉兴银行");
  108. put("JXRCU", "江西省农村信用");
  109. put("JZBANK", "晋中市商业银行");
  110. put("KLB", "昆仑银行");
  111. put("KORLABANK", "库尔勒市商业银行");
  112. put("KSRB", "昆山农村商业银行");
  113. put("LANGFB", "廊坊银行");
  114. put("LSBANK", "莱商银行");
  115. put("LSBC", "临商银行");
  116. put("LSCCB", "乐山市商业银行");
  117. put("LYBANK", "洛阳银行");
  118. put("LYCB", "辽阳市商业银行");
  119. put("LZYH", "兰州银行");
  120. put("MTBANK", "浙江民泰商业银行");
  121. put("NBBANK", "宁波银行");
  122. put("NBYZ", "鄞州银行");
  123. put("NCB", "南昌银行");
  124. put("NHB", "南海农村信用联社");
  125. put("NHQS", "农信银清算中心");
  126. put("NJCB", "南京银行");
  127. put("NXBANK", "宁夏银行");
  128. put("NXRCU", "宁夏黄河农村商业银行");
  129. put("NYBANK", "广东南粤银行");
  130. put("ORBANK", "鄂尔多斯银行");
  131. put("PSBC", "中国邮政储蓄银行");
  132. put("QDCCB", "青岛银行");
  133. put("QLBANK", "齐鲁银行");
  134. put("SCCB", "三门峡银行");
  135. put("SCRCU", "四川省农村信用");
  136. put("SDEB", "顺德农商银行");
  137. put("SDRCU", "山东农信");
  138. put("SHBANK", "上海银行");
  139. put("SHRCB", "上海农村商业银行");
  140. put("SJBANK", "盛京银行");
  141. put("SPABANK", "平安银行");
  142. put("SPDB", "上海浦东发展银行");
  143. put("SRBANK", "上饶银行");
  144. put("SRCB", "深圳农村商业银行");
  145. put("SXCB", "绍兴银行");
  146. put("SXRCCU", "陕西信合");
  147. put("SZSBK", "石嘴山银行");
  148. put("TACCB", "泰安市商业银行");
  149. put("TCCB", "天津银行");
  150. put("TCRCB", "江苏太仓农村商业银行");
  151. put("TRCB", "天津农商银行");
  152. put("TZCB", "台州银行");
  153. put("URMQCCB", "乌鲁木齐市商业银行");
  154. put("WHCCB", "威海市商业银行");
  155. put("WHRCB", "武汉农村商业银行");
  156. put("WJRCB", "吴江农商银行");
  157. put("WRCB", "无锡农村商业银行");
  158. put("WZCB", "温州银行");
  159. put("XABANK", "西安银行");
  160. put("XCYH", "许昌银行");
  161. put("XJRCU", "新疆农村信用社");
  162. put("XLBANK", "中山小榄村镇银行");
  163. put("XMBANK", "厦门银行");
  164. put("XTB", "邢台银行");
  165. put("XXBANK", "新乡银行");
  166. put("XYBANK", "信阳银行");
  167. put("YBCCB", "宜宾市商业银行");
  168. put("YDRCB", "尧都农商行");
  169. put("YNRCC", "云南省农村信用社");
  170. put("YQCCB", "阳泉银行");
  171. put("YXCCB", "玉溪市商业银行");
  172. put("ZBCB", "齐商银行");
  173. put("ZGCCB", "自贡市商业银行");
  174. put("ZJKCCB", "张家口市商业银行");
  175. put("ZJNX", "浙江省农村信用社联合社");
  176. put("ZJTLCB", "浙江泰隆商业银行");
  177. put("ZRCBANK", "张家港农村商业银行");
  178. put("ZYCBANK", "遵义市商业银行");
  179. put("ZZBANK", "郑州银行");
  180. }};
  181. public static BankValidate validate(String bankNo) {
  182. String body = HttpRequest
  183. .get("https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=" + bankNo + "&cardBinCheck=true")
  184. .body();
  185. BankValidate bankValidate = JSON.parseObject(body, BankValidate.class);
  186. log.info(JSON.toJSONString(bankValidate, SerializerFeature.PrettyFormat));
  187. if (bankValidate.isValidated()) {
  188. bankValidate.setBankName(nameMap.get(bankValidate.getBank()));
  189. if ("DC".equals(bankValidate.getCardType())) {
  190. bankValidate.setCardTypeDesc("储蓄卡");
  191. } else if ("CC".equals(bankValidate.getCardType())) {
  192. bankValidate.setCardTypeDesc("信用卡");
  193. }
  194. }
  195. return bankValidate;
  196. }
  197. public static void main(String[] args) {
  198. BankValidate res = BankUtils.validate("6222024301070380165");
  199. log.info(JSON.toJSONString(res, SerializerFeature.PrettyFormat));
  200. res = BankUtils.validate("6217770007358827");
  201. log.info(JSON.toJSONString(res, SerializerFeature.PrettyFormat));
  202. }
  203. }