JAVA --银行卡正则校验工具类

package com.allinpay.utils;

import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;

import java.util.HashMap;

/**
 * @author 林少爷
 * @version V1.0
 * @Package com.allinpay.utils
 * @date 2022-10-12 15:55
 * @Copyright © IBM
 */
public class BankCardUtil {

    private static final HashMap<String, String> BANK_NAME_MAP;
    private static final HashMap<String, String> BANK_TYPE;

    static {
        BANK_NAME_MAP = new HashMap<>(256);
        BANK_TYPE = new HashMap<>(2);
        BANK_TYPE.put("DC", "储蓄卡");
        BANK_TYPE.put("CC", "信用卡");
        BANK_NAME_MAP.put("CDB", " 国家开发银行");
        BANK_NAME_MAP.put("ICBC", " 中国工商银行");
        BANK_NAME_MAP.put("ABC", " 中国农业银行");
        BANK_NAME_MAP.put("BOC", " 中国银行");
        BANK_NAME_MAP.put("CCB", " 中国建设银行");
        BANK_NAME_MAP.put("PSBC", " 中国邮政储蓄银行");
        BANK_NAME_MAP.put("COMM", " 交通银行");
        BANK_NAME_MAP.put("CMB", " 招商银行");
        BANK_NAME_MAP.put("SPDB", " 上海浦东发展银行");
        BANK_NAME_MAP.put("CIB", " 兴业银行");
        BANK_NAME_MAP.put("HXBANK", " 华夏银行");
        BANK_NAME_MAP.put("GDB", " 广东发展银行");
        BANK_NAME_MAP.put("CMBC", " 中国民生银行");
        BANK_NAME_MAP.put("CITIC", " 中信银行");
        BANK_NAME_MAP.put("CEB", " 中国光大银行");
        BANK_NAME_MAP.put("EGBANK", " 恒丰银行");
        BANK_NAME_MAP.put("CZBANK", " 浙商银行");
        BANK_NAME_MAP.put("BOHAIB", " 渤海银行");
        BANK_NAME_MAP.put("SPABANK", " 平安银行");
        BANK_NAME_MAP.put("SHRCB", " 上海农村商业银行");
        BANK_NAME_MAP.put("YXCCB", " 玉溪市商业银行");
        BANK_NAME_MAP.put("YDRCB", " 尧都农商行");
        BANK_NAME_MAP.put("BJBANK", " 北京银行");
        BANK_NAME_MAP.put("SHBANK", " 上海银行");
        BANK_NAME_MAP.put("JSBANK", " 江苏银行");
        BANK_NAME_MAP.put("HZCB", " 杭州银行");
        BANK_NAME_MAP.put("NJCB", " 南京银行");
        BANK_NAME_MAP.put("NBBANK", " 宁波银行");
        BANK_NAME_MAP.put("HSBANK", " 徽商银行");
        BANK_NAME_MAP.put("CSCB", " 长沙银行");
        BANK_NAME_MAP.put("CDCB", " 成都银行");
        BANK_NAME_MAP.put("CQBANK", " 重庆银行");
        BANK_NAME_MAP.put("DLB", " 大连银行");
        BANK_NAME_MAP.put("NCB", " 南昌银行");
        BANK_NAME_MAP.put("FJHXBC", " 福建海峡银行");
        BANK_NAME_MAP.put("HKB", " 汉口银行");
        BANK_NAME_MAP.put("WZCB", " 温州银行");
        BANK_NAME_MAP.put("QDCCB", " 青岛银行");
        BANK_NAME_MAP.put("TZCB", " 台州银行");
        BANK_NAME_MAP.put("JXBANK", " 嘉兴银行");
        BANK_NAME_MAP.put("CSRCB", " 常熟农村商业银行");
        BANK_NAME_MAP.put("NHB", " 南海农村信用联社");
        BANK_NAME_MAP.put("CZRCB", " 常州农村信用联社");
        BANK_NAME_MAP.put("H3CB", " 内蒙古银行");
        BANK_NAME_MAP.put("SXCB", " 绍兴银行");
        BANK_NAME_MAP.put("SDEB", " 顺德农商银行");
        BANK_NAME_MAP.put("WJRCB", " 吴江农商银行");
        BANK_NAME_MAP.put("ZBCB", " 齐商银行");
        BANK_NAME_MAP.put("GYCB", " 贵阳市商业银行");
        BANK_NAME_MAP.put("ZYCBANK", " 遵义市商业银行");
        BANK_NAME_MAP.put("HZCCB", " 湖州市商业银行");
        BANK_NAME_MAP.put("DAQINGB", " 龙江银行");
        BANK_NAME_MAP.put("JINCHB", " 晋城银行JCBANK");
        BANK_NAME_MAP.put("ZJTLCB", " 浙江泰隆商业银行");
        BANK_NAME_MAP.put("GDRCC", " 广东省农村信用社联合社");
        BANK_NAME_MAP.put("DRCBCL", " 东莞农村商业银行");
        BANK_NAME_MAP.put("MTBANK", " 浙江民泰商业银行");
        BANK_NAME_MAP.put("GCB", " 广州银行");
        BANK_NAME_MAP.put("LYCB", " 辽阳市商业银行");
        BANK_NAME_MAP.put("JSRCU", " 江苏省农村信用联合社");
        BANK_NAME_MAP.put("LANGFB", " 廊坊银行");
        BANK_NAME_MAP.put("CZCB", " 浙江稠州商业银行");
        BANK_NAME_MAP.put("DYCB", " 德阳商业银行");
        BANK_NAME_MAP.put("JZBANK", " 晋中市商业银行");
        BANK_NAME_MAP.put("BOSZ", " 苏州银行");
        BANK_NAME_MAP.put("GLBANK", " 桂林银行");
        BANK_NAME_MAP.put("URMQCCB", " 乌鲁木齐市商业银行");
        BANK_NAME_MAP.put("CDRCB", " 成都农商银行");
        BANK_NAME_MAP.put("ZRCBANK", " 张家港农村商业银行");
        BANK_NAME_MAP.put("BOD", " 东莞银行");
        BANK_NAME_MAP.put("LSBANK", " 莱商银行");
        BANK_NAME_MAP.put("BJRCB", " 北京农村商业银行");
        BANK_NAME_MAP.put("TRCB", " 天津农商银行");
        BANK_NAME_MAP.put("SRBANK", " 上饶银行");
        BANK_NAME_MAP.put("FDB", " 富滇银行");
        BANK_NAME_MAP.put("CRCBANK", " 重庆农村商业银行");
        BANK_NAME_MAP.put("ASCB", " 鞍山银行");
        BANK_NAME_MAP.put("NXBANK", " 宁夏银行");
        BANK_NAME_MAP.put("BHB", " 河北银行");
        BANK_NAME_MAP.put("HRXJB", " 华融湘江银行");
        BANK_NAME_MAP.put("ZGCCB", " 自贡市商业银行");
        BANK_NAME_MAP.put("YNRCC", " 云南省农村信用社");
        BANK_NAME_MAP.put("JLBANK", " 吉林银行");
        BANK_NAME_MAP.put("DYCCB", " 东营市商业银行");
        BANK_NAME_MAP.put("KLB", " 昆仑银行");
        BANK_NAME_MAP.put("ORBANK", " 鄂尔多斯银行");
        BANK_NAME_MAP.put("XTB", " 邢台银行");
        BANK_NAME_MAP.put("JSB", " 晋商银行");
        BANK_NAME_MAP.put("TCCB", " 天津银行");
        BANK_NAME_MAP.put("BOYK", " 营口银行");
        BANK_NAME_MAP.put("JLRCU", " 吉林农信");
        BANK_NAME_MAP.put("SDRCU", " 山东农信");
        BANK_NAME_MAP.put("XABANK", " 西安银行");
        BANK_NAME_MAP.put("HBRCU", " 河北省农村信用社");
        BANK_NAME_MAP.put("NXRCU", " 宁夏黄河农村商业银行");
        BANK_NAME_MAP.put("GZRCU", " 贵州省农村信用社");
        BANK_NAME_MAP.put("FXCB", " 阜新银行");
        BANK_NAME_MAP.put("HBHSBANK", " 湖北银行黄石分行");
        BANK_NAME_MAP.put("ZJNX", " 浙江省农村信用社联合社");
        BANK_NAME_MAP.put("XXBANK", " 新乡银行");
        BANK_NAME_MAP.put("HBYCBANK", " 湖北银行宜昌分行");
        BANK_NAME_MAP.put("LSCCB", " 乐山市商业银行");
        BANK_NAME_MAP.put("TCRCB", " 江苏太仓农村商业银行");
        BANK_NAME_MAP.put("BZMD", " 驻马店银行");
        BANK_NAME_MAP.put("GZB", " 赣州银行");
        BANK_NAME_MAP.put("WRCB", " 无锡农村商业银行");
        BANK_NAME_MAP.put("BGB", " 广西北部湾银行");
        BANK_NAME_MAP.put("GRCB", " 广州农商银行");
        BANK_NAME_MAP.put("JRCB", " 江苏江阴农村商业银行");
        BANK_NAME_MAP.put("BOP", " 平顶山银行");
        BANK_NAME_MAP.put("TACCB", " 泰安市商业银行");
        BANK_NAME_MAP.put("CGNB", " 南充市商业银行");
        BANK_NAME_MAP.put("CCQTGB", " 重庆三峡银行");
        BANK_NAME_MAP.put("XLBANK", " 中山小榄村镇银行");
        BANK_NAME_MAP.put("HDBANK", " 邯郸银行");
        BANK_NAME_MAP.put("KORLABANK", " 库尔勒市商业银行");
        BANK_NAME_MAP.put("BOJZ", " 锦州银行");
        BANK_NAME_MAP.put("QLBANK", " 齐鲁银行");
        BANK_NAME_MAP.put("BOQH", " 青海银行");
        BANK_NAME_MAP.put("YQCCB", " 阳泉银行");
        BANK_NAME_MAP.put("SJBANK", " 盛京银行");
        BANK_NAME_MAP.put("FSCB", " 抚顺银行");
        BANK_NAME_MAP.put("ZZBANK", " 郑州银行");
        BANK_NAME_MAP.put("SRCB", " 深圳农村商业银行");
        BANK_NAME_MAP.put("BANKWF", " 潍坊银行");
        BANK_NAME_MAP.put("JJBANK", " 九江银行");
        BANK_NAME_MAP.put("JXRCU", " 江西省农村信用");
        BANK_NAME_MAP.put("HNRCU", " 河南省农村信用");
        BANK_NAME_MAP.put("GSRCU", " 甘肃省农村信用");
        BANK_NAME_MAP.put("SCRCU", " 四川省农村信用");
        BANK_NAME_MAP.put("GXRCU", " 广西省农村信用");
        BANK_NAME_MAP.put("SXRCCU", " 陕西信合");
        BANK_NAME_MAP.put("WHRCB", " 武汉农村商业银行");
        BANK_NAME_MAP.put("YBCCB", " 宜宾市商业银行");
        BANK_NAME_MAP.put("KSRB", " 昆山农村商业银行");
        BANK_NAME_MAP.put("SZSBK", " 石嘴山银行");
        BANK_NAME_MAP.put("HSBK", " 衡水银行");
        BANK_NAME_MAP.put("XYBANK", " 信阳银行");
        BANK_NAME_MAP.put("NBYZ", " 鄞州银行");
        BANK_NAME_MAP.put("ZJKCCB", " 张家口市商业银行");
        BANK_NAME_MAP.put("XCYH", " 许昌银行");
        BANK_NAME_MAP.put("JNBANK", " 济宁银行");
        BANK_NAME_MAP.put("CBKF", " 开封市商业银行");
        BANK_NAME_MAP.put("WHCCB", " 威海市商业银行");
        BANK_NAME_MAP.put("HBC", " 湖北银行");
        BANK_NAME_MAP.put("BOCD", " 承德银行");
        BANK_NAME_MAP.put("BODD", " 丹东银行");
        BANK_NAME_MAP.put("JHBANK", " 金华银行");
        BANK_NAME_MAP.put("BOCY", " 朝阳银行");
        BANK_NAME_MAP.put("LSBC", " 临商银行");
        BANK_NAME_MAP.put("BSB", " 包商银行");
        BANK_NAME_MAP.put("LZYH", " 兰州银行");
        BANK_NAME_MAP.put("BOZK", " 周口银行");
        BANK_NAME_MAP.put("DZBANK", " 德州银行");
        BANK_NAME_MAP.put("SCCB", " 三门峡银行");
        BANK_NAME_MAP.put("AYCB", " 安阳银行");
        BANK_NAME_MAP.put("ARCU", " 安徽省农村信用社");
        BANK_NAME_MAP.put("HURCB", " 湖北省农村信用社");
        BANK_NAME_MAP.put("HNRCC", " 湖南省农村信用社");
        BANK_NAME_MAP.put("NYNB", " 广东南粤银行");
        BANK_NAME_MAP.put("LYBANK", " 洛阳银行");
        BANK_NAME_MAP.put("NHQS", " 农信银清算中心");
        BANK_NAME_MAP.put("CBBQS", " 城市商业银行资金清算中心");

    }

    /**
     * 判断验证银行卡
     *
     * @param bankCardNo 银行卡号
     * @return boolean
     */
    public boolean verifyBankCard(String bankCardNo) {
        String result = HttpRequest.get("https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=" + bankCardNo + "&cardBinCheck=true")
                .execute().body();

        if (StrUtil.isNotBlank(result)) {
            JSONObject data = JSONUtil.parseObj(result);
            return "ok".equals(data.getStr("stat", "fail")) && "true".equals(data.getStr("validated", "false"));
        }

        return false;
    }

    /**
     * 获取银行卡信息
     *
     * @param bankCardNo 银行卡号
     * @return JSONObject
     */
    public JSONObject getBankCardInfo(String bankCardNo) {

        String result = HttpRequest.get("https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo=" + bankCardNo + "&cardBinCheck=true")
                .execute().body();

        if (StrUtil.isNotBlank(result)) {
            JSONObject data = JSONUtil.parseObj(result);
            if ("ok".equals(data.getStr("stat", "fail")) && "true".equals(data.getStr("validated", "false"))) {
                JSONObject res = JSONUtil.createObj();
                res.putOpt("cardType", BANK_TYPE.get(data.getStr("cardType")));
                res.putOpt("bankName", BANK_NAME_MAP.get(data.getStr("bank")));
                res.putOpt("bankCardNo", bankCardNo);
                return res;
            }
        }
        return null;
    }

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值