如何根据银行卡号获取对应的银行编号,如:ICBC

妖狐艹你老母 2022-05-10 12:20 430阅读 0赞

最近项目里面需要使用一个东西,就是如何根据银行卡号获取对应的银行编号,如:ICBC,所以就在网上找了些资源,在此整理分享给大家。都是干货哦!

废话少说,直接上代码了。

  1. package com.whb.utils;
  2. import java.io.InputStream;
  3. import org.apache.commons.io.IOUtils;
  4. import org.apache.commons.lang.StringUtils;
  5. import org.apache.http.HttpResponse;
  6. import org.apache.http.HttpStatus;
  7. import org.apache.http.client.config.RequestConfig;
  8. import org.apache.http.client.methods.HttpGet;
  9. import org.apache.http.impl.client.CloseableHttpClient;
  10. import org.apache.http.impl.client.HttpClients;
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13. import com.alibaba.fastjson.JSON;
  14. import com.alibaba.fastjson.JSONObject;
  15. /**
  16. * @author whb
  17. * @date 2018年9月28日 下午3:31:12
  18. * @Description: 根据银行卡号获取对应的银行变化如:ICBC
  19. * https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardBinCheck=true&cardNo=6217360599000454941
  20. * {"cardType":"DC","bank":"ZJNX","key":"6217360599000454941","messages":[],"validated":true,"stat":"ok"}
  21. */
  22. public class BankCardNoUtil {
  23. private static Logger log = LoggerFactory.getLogger(BankCardNoUtil.class);
  24. private static CloseableHttpClient httpClient = HttpClients.createDefault();
  25. private static int TIMEOUT = 1800000;
  26. private static RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(TIMEOUT)
  27. .setSocketTimeout(TIMEOUT).build();
  28. private static String RequestUrl = "https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardBinCheck=true&cardNo=";
  29. /**
  30. * 根据银行卡号获取对应的银行变化如:ICBC
  31. * @param bankCardId
  32. * @return
  33. */
  34. public static String getBankCardNo(String bankCardId){
  35. try {
  36. String result = getString(RequestUrl+bankCardId, "UTF-8");
  37. if(StringUtils.isNotBlank(result)){
  38. JSONObject json = JSON.parseObject(result);
  39. boolean validated = json.getBoolean("validated");
  40. if(validated){
  41. return json.getString("bank");
  42. }
  43. }
  44. } catch (Exception e) {
  45. log.info("获取银行卡有误");
  46. }
  47. return null;
  48. }
  49. public static void main(String[] args) {
  50. System.out.println(BankCardNoUtil.getBankCardNo("6217360599000454941"));
  51. }
  52. /**
  53. * get方式调用http,返回byte[]
  54. * @param String url
  55. * @return byte[]
  56. * @throws Exception
  57. */
  58. private static byte[] getBytes(String url) throws Exception {
  59. HttpGet request = null;
  60. try {
  61. // HTTP请求
  62. request = new HttpGet(url);
  63. request.setConfig(requestConfig);
  64. log.debug(request.getRequestLine().toString());
  65. // 发送请求,返回响应
  66. HttpResponse response = httpClient.execute(request);
  67. // 响应成功
  68. int statusCode = response.getStatusLine().getStatusCode();
  69. if (statusCode == HttpStatus.SC_OK) {
  70. InputStream stream = response.getEntity().getContent();
  71. return IOUtils.toByteArray(stream);
  72. }
  73. } catch (Exception e) {
  74. throw new Exception("GET请求失败:[" + url + "]", e);
  75. } finally {
  76. if (request != null) {
  77. try {
  78. request.releaseConnection();
  79. } catch (Exception e) {
  80. }
  81. }
  82. }
  83. return null;
  84. }
  85. /**
  86. * get方式调用http,返回String
  87. *
  88. * @param String url
  89. * @param String charsetName
  90. * @return String
  91. * @throws Exception
  92. */
  93. private static String getString(String url, String charsetName) throws Exception {
  94. byte[] bytes = getBytes(url);
  95. if (bytes == null || bytes.length <= 0) {
  96. return "";
  97. }
  98. return new String(bytes, charsetName);
  99. }
  100. }

如果还想其他渠道去查询的话,这里有提供相关地址:查询银行卡归属http://www.guabu.com/bank/。

好了,满满的爱都给你们了。

发表评论

表情:
评论列表 (有 0 条评论,430人围观)

还没有评论,来说两句吧...

相关阅读