精华内容
下载资源
问答
  • 14万条数据全国银行网点联行号信息文档,(银行名称/省/城市/城市码/银行全名称/银行联号/银行号). 根据所需获取银行联行号码.
  • 全国银行网点联行号信息文档,(银行名称/省/城市/城市码/银行全名称/银行联号/银行号). 根据所需获取银行联行号码.
  • 银行联行号.xlsx

    2019-06-27 10:21:05
    最新最全银行联行号 开户行信息 开户银行地址 12兆最全开户银行号地址信息 ;所属区域编码,所属银行,联行编号,有效期,网点名称
  • 银行省市四级联行号SQL,包含省市信息和14万条的银行营业网点信息,轻松获取银行的联行号及营业网点信息,后续随时补录
  • 银联联行号开户行SQL

    2019-11-27 22:45:39
    2018最全的开户行行,支行,网点号。 CREATE TABLE [dbo].[tb_Bank]( [RecNo] [int] IDENTITY(1,1) NOT NULL, [lhh] [varchar](20) NULL, [khh] [varchar](150) NULL, [khhhh] [varchar](255) NULL, ...
  • 全国各大银行联行号,包含联行号,开户行名称、开户行行号、网点、归属地,约13.7万条。mysql导入数据。
  • 2020全国联行号&省市字段代码全11月更新 省、市、银行、网点联行号。 数据齐全,11月更新 适用于金融绑卡 联行号,开户行编号,结算卡开户银
  • 分享2020全国银行联行号对照数据库。数据来源是中国银行,数据属于公示信息,不涉及客户隐私,相比爬虫数据,数据更加准确、全面。相比CSDN上上来就要40多分50多分的,专门制作了sql的数据库文件,特此分享,后续会...
  • 最新银行联行号大全XLS版截止2020-04-25(共185644条),含联行号类别、银行码、城市码、网点全称、联行号、关联联行号、有效日期、结束日期、更新日期等信息。
  • 全国各大银行及支行联行号查询全国各大银行及支行联行号查询
  • 2021年最新最全银行联行号(共166910条),更新至2021年8月
  • 整理了全国各大银行及支行的联行号,包含信用社、城市银行等
  • 联行号的概念

    2017-06-22 14:29:28
    [quote] 银行联行号就是一个地区银行的唯一识别标志。...网点联行号,现代支付行号CNAPS?是参加银行间资金汇划和清算的银行营业网点的统一编号,这个编号通常由上级行或人民银行颁发 [/quote]...
    [quote]
    

    银行联行号就是一个地区银行的唯一识别标志。用于人民银行所组织的大额支付系统\小额支付系统\城市商业银行银行汇票系统\全国支票影像系统

    网点联行号,现代支付行号CNAPS?是参加银行间资金汇划和清算的银行营业网点的统一编号,这个编号通常由上级行或人民银行颁发

    [/quote]
    展开全文
  • 最新最全的支行/银行联行号/所属省分关系对照 JSON 数据资源, 高达15万条记录的数据资源......
  • 在人民银行那里,每个银行的每一个营业网点都有自己唯一的银行联行号,根据这个号码能快速定位一间银行具体的分支行,就像根据一个身份证号码能快速确定一个人一样。例如汇款时,汇款单上要求填写收款人开户行,然后...

    在人民银行那里,每个银行的每一个营业网点都有自己唯一的银行联行号,根据这个号码能快速定位一间银行具体的分支行,就像根据一个身份证号码能快速确定一个人一样。例如汇款时,汇款单上要求填写收款人开户行,然后银行会把收款人开户行的联行号连其他信息发到人民银行进行清算,这样能保证以最快的速度汇到收款人的手上。如果联行号不准确,那么在汇款的时候会发生分行落地,支行间调拨等操作,影响导致时间,尤其是跨行汇款的时候。一般银行的代收付接口,都会要求提供此参数。

    银行联行号一般是根据输入的分支行信息模糊查询出来的,有的银行接口也会提供类似的根据传入的信息返回联行号的接口,其实现的技术也是根据模糊匹配思路,只是不同的银行实现的水准高低不同,如输入"工行海淀支行"有的返回的是中国工商银行北京市分行海淀镇支行营业室102100000458,有的返回的是中国工商银行北京市海淀支行四季青分理处102100024537。

    本文主要是基于前两年在支付行业的代码实战,通过联行号模糊查询示例讲解KMP与Levenshtein模糊匹配算法,有关此两种算法的介绍可以参考Levenshtein字符串距离算法介绍KMP字符串匹配算法,本文只是整个查询功能的代码示例,为了专注算法重点,略去了银行同义词之间的匹配与模糊地市查询能力。(银行同义词如工行、工商银行、中国工商银行股份有限公司,模糊地市如江西省南昌市、江西南昌)

    先看整体效果

    主要代码说明:

    1. swing初始化及数据加载
       1 try {
       2             JFrame frame = new JFrame("银行模糊匹配---edited by Dimmacro");
       3             textLabel = new JLabel("请输入待匹配的字符串:");
       4             textLabel.setFont(new Font("Default", Font.PLAIN, 18));
       5             textField = new JTextField(30);
       6             textField.setFont(new Font("Default", Font.PLAIN, 18));
       7             resultArea = new JTextArea();
       8             resultArea.setFont(new Font("Default", Font.BOLD, 15));
       9             resultArea.setEditable(false);
      10             // 设置窗口初始化大小为屏幕大小的1/4,位置在最中间
      11             JPanel panel = new JPanel();
      12             panel.add(textLabel);
      13             panel.add(textField);
      14             frame.getContentPane().add(panel, BorderLayout.NORTH);
      15             frame.getContentPane().add(new JScrollPane(resultArea), BorderLayout.CENTER);
      16 
      17             frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      18             Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
      19             frame.setSize(d.width / 2, d.height / 2);
      20             frame.setLocation((d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2);
      21             frame.setVisible(true);
      22             textField.addKeyListener(new KeyAdapter() {
      23                 public void keyReleased(KeyEvent e) {
      24                     startTime = System.nanoTime();
      25                     readyCheck = true;
      26                 }
      27                 
      28                 public void keyPressed(KeyEvent e) {
      29                     startTime = System.nanoTime();
      30                     readyCheck = false;
      31                 }
      32                 
      33             });
      34         } catch (Exception e) {
      35             e.printStackTrace();
      36             resultArea.setText("执行出错!");
      37         }

       

    2. 联行号数据加载:需要把联行号数据库先加载到内存中,其单行格式为:102100000030,中国工商银行北京市分行营业部
       1 private static long initSourceData() {
       2         long counts = 0;
       3         try {
       4             InputStream bankCodeInputStream = BankMatch.class.getClassLoader().getResourceAsStream(bankCodeFile);
       5             BufferedReader bReader = new BufferedReader(new InputStreamReader(bankCodeInputStream, "GBK"),20480);
       6             String lineString;
       7             bankMap = new HashMap<String, String>();
       8             String code, name;
       9             while ((lineString = bReader.readLine()) != null) {
      10                 int firstCommaIndex = lineString.indexOf(",");
      11                 code = lineString.substring(0, firstCommaIndex);
      12                 name = lineString.substring(firstCommaIndex + 1);
      13                // System.out.println("code=" + code + " and name=" + name+"=========="+counts);
      14                 bankMap.put(code, name);
      15                 counts++;
      16             }
      17         } catch (Exception e) {
      18             e.printStackTrace();
      19         }
      20         return counts;
      21     }

       

    3. 根据传入的参数模糊查询,返回符合条件的列表,并按最佳匹配程度进行排序
       1     public List<String> handleMatch() {
       2         List<String> resultList = new ArrayList<String>();
       3         String code, name;
       4         String[] nameArray;
       5         String findResult;
       6         for (Map.Entry<String, String> entry : bankMap.entrySet()) {
       7             code = entry.getKey();
       8             name = entry.getValue();
       9             nameArray = name.split(",");
      10             findResult = code + "," + nameArray[0];
      11             List<String> arrangeList = new ArrayList<String>();
      12             resultStr = new String[nameArray.length];
      13             arrageArray(arrangeList, nameArray); // 如果有省份城市,重排其顺序以保证匹配的准确性
      14             for (String oneArrangeStr : arrangeList) {
      15                 name = oneArrangeStr.replaceAll(",", "");
      16                 // 处理BMP全字匹配的情况
      17                 if ((KMPMatchString.kmpMatch(name, matchStr) || KMPMatchString.kmpMatch(matchStr, name)) && !resultList.contains(findResult)) {
      18                     resultList.add(findResult);
      19                     match.printOut(findResult);
      20                     match.getShowArea().selectAll();
      21                 }
      22             }
      23         }
      24         // Levenshtein 模糊算法
      25         if (resultList.size() > 0) {
      26             // 根据Levenshtein 模糊算法排序
      27             Collections.sort(resultList, new Comparator<String>() {
      28                 public int compare(String s1, String s2) {
      29                     return LevenshteinMacthString.levenshteinMacth(s1.split(",")[1], matchStr)
      30                     - LevenshteinMacthString.levenshteinMacth(s2.split(",")[1], matchStr);
      31                 }
      32             });
      33         }
      34         return resultList;
      35     }

       

    4. KMP算法
       1 public static boolean kmpMatch(String source, String target)
       2     {
       3         if(null == source || null == target || "".equals(source.trim()) || "".equals(target.trim()))
       4         {
       5             return false;
       6         }
       7         
       8         int bl = source.length();
       9         int al = target.length();
      10         
      11         for(int bi = 0,ai = 0;bi < al;ai++)
      12         {
      13             if(bi == al || ai == bl)
      14             {
      15                 return false;
      16             }
      17             else if(source.charAt(ai) == target.charAt(bi))
      18             {
      19                 bi++;
      20             }
      21         }
      22         return true;
      23     }

       

    5. Levenshtein算法
       1 public static int levenshteinMacth(String source,String target) {
       2         int n = target.length();
       3         int m = source.length();
       4         int[][] d = new int[n + 1][m + 1];
       5 
       6         // Step 1
       7         if (n == 0) {
       8             return m;
       9         }
      10 
      11         if (m == 0) {
      12             return n;
      13         }
      14 
      15         // Step 2
      16         for (int i = 0; i <= n; d[i][0] = i++) {
      17         }
      18 
      19         for (int j = 0; j <= m; d[0][j] = j++) {
      20         }
      21 
      22         // Step 3
      23         for (int i = 1; i <= n; i++) {
      24             // Step 4
      25             for (int j = 1; j <= m; j++) {
      26                 // Step 5
      27                // System.out.println(t.charAt(j - 1));
      28               //  System.out.println(s.charAt(i - 1));
      29                // int cost = (t.charAt(j - 1) == s.charAt(i - 1)) ? 0 : 1;
      30                 int cost = (source.substring(j - 1, j) == target.substring(i - 1, i) ? 0 : 1);
      31 
      32                 // Step 6
      33                 d[i][j] = Math.min(Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1), d[i - 1][j - 1] + cost);
      34             }
      35         }
      36         // Step 7
      37         return d[n][m];
      38     }

       

    6.  附件下载:Eclipse工程,直接导入运行BankMatch类即可看到效果。下载
    7. 遗留代码问题:如整体效果看到的那样,每次从输入框输入完释放最后一次按键时,如果1秒内没有接着按下一个键,才会开始查询,这样既可以做到根据输入的效果实时查询,又不至于要每次输入一个字符就开始查。对于这个实现采用的是wihe(true)的方式,但是发现如果不加线程sleep的话会出现不响应查询的情况,请万能的博客园高手看看。

     

    转载于:https://www.cnblogs.com/dimmacro/p/4482903.html

    展开全文
  • 交换行号和联行号

    千次阅读 2008-08-17 15:23:50
    交换行号即同城交换行号,同城转帐 手输收款人开户行 落到后台使用这个行号 联行号即支付系统行号,手输收款人开户行的前提下 除了同城的情况之外都使用这个行号...
    交换行号即同城交换行号,同城转帐 手输收款人开户行 落到后台使用这个行号
    
    联行号即支付系统行号,手输收款人开户行的前提下 除了同城的情况之外都使用这个行号
    展开全文
  • 经过一段时间的加班,...由于做的是POS前置交易系统,涉及到和商户进件以及交易相关的业务,需要向上游支付机构上送“联行号”,但是由于系统内的数据不全,经常出现找不到银行或者联行号有误等情况,导致无法进件。

    在这里插入图片描述

    前言

      经过一段时间的加班,终于是把项目熬上线了。本以为可以轻松一点,但往往事与愿违,出现了各种各样的问题。由于做的是POS前置交易系统,涉及到和商户进件以及交易相关的业务,需要向上游支付机构上送“联行号”,但是由于系统内的数据不全,经常出现找不到银行或者联行号有误等情况,导致无法进件。

      为了解决这个问题,我找上游机构要了一份支行信息。好家伙,足足有14w条记录。在导入系统时,发现有一些异常的数据。有些是江西的银行,地区码竟然是北京的。经过一段时间排查,发现这样的数据还挺多的。这可愁死我了,本来偷个懒,等客服反馈的时候,出现一条修一条。

      经过2分钟的思考,想到以后每天都要修数据,那不得烦死。于是长痛不如短痛,还不如一次性修了。然后我反手就打开了百度,经过一段时间的遨游。发现下面3个网站的支行信息比较全,准备用来跟系统内数据作对比,然后进行修正。

    • http://www.jsons.cn/banknum/
    • http://www.5cm.cn/bank/支行编号/
    • https://www.appgate.cn/branch/bankBranchDetail/支行编号

    分析网站

      输入联行号,然后选择查询方式,点击开始查询就可以。但是呢,结果页面一闪而过,然后被广告页面给覆盖了,这个时候就非常你的手速了。对于这样的,自然是难不倒我。从前端的角度分析,很明显展示结果的table标签被隐藏了,用来显示广告。于是反手就是打开控制台,查看源代码。

    经过一顿搜寻,终于是找到了详情页的地址。

      通过上面的操作,我们要想爬到数据,需要做两步操作。先输入联行号进行查询,然后进去详情页,才能取到想要的数据。所以第一步需要先获取查询的接口,于是我又打开了熟悉的控制台。

      从上图可以发现这些请求都是在获取广告,并没有发现我们想要的接口,这个是啥情况,难道凭空变出来的嘛。并不是,主要是因为这个网站不是前后端分离的,所以这个时候我们需要从它的源码下手。

    <html>
     <body>
      <form id="form1" class="form-horizontal" action="/banknum/" method="post"> 
       <div class="form-group"> 
        <label class="col-sm-2 control-label"> 关键词:</label> 
        <div class="col-sm-10"> 
         <input class="form-control" type="text" id="keyword" name="keyword" value="102453000160"  placeholder="请输入查询关键词,例如:中关村支行" maxlength="50" /> 
        </div> 
       </div> 
       <div class="form-group"> 
        <label class="col-sm-2 control-label"> 搜索类型:</label> 
        <div class="col-sm-10"> 
         <select class="form-control" id="txtflag" name="txtflag"> 
         		<option value="0">支行关键词</option>
          	<option value="1" selected="">银行联行号</option>
          	<option value="2">支行网点地址</option> 
          </select> 
        </div> 
       </div> 
       <div class="form-group"> 
        <label class="col-sm-2 control-label"> </label> 
        <div class="col-sm-10"> 
         <button type="submit" class="btn btn-success"> 开始查询</button> 
         <a href="/banknum/" class="btn btn-danger">清空输入框</a> 
        </div> 
       </div> 
      </form>
     </body>
    </html>
    

    通过分析代码可以得出:

    • 请求地址:http://www.jsons.cn/banknum/
    • 请求方式:POST
    • 请求参数:
      • keyword: 联行号
      • txtflag :1

    我们可以用PostMan来验证一下接口是否有效,验证结果如下图所示:

      剩下的两个网站相对比较简单,只需要更改相应的联行号,进行请求就可以获取到相应的数据,所以这里不过多赘述。

    爬虫编写

      经过上面的分析了,已经取到了我们想要的接口,可谓是万事俱备,只欠代码了。爬取原理很简单,就是解析HTML元素,然后获取到相应的属性值保存下来就好了。由于使用Java进行开发,所以选用Jsoup来完成这个工作。

    <!-- HTML解析器 -->
    <dependency>
      <groupId>org.jsoup</groupId>
      <artifactId>jsoup</artifactId>
      <version>1.13.1</version>
    </dependency>
    

      由于单个网站的数据可能不全,所以我们需要逐个进行抓取。先抓取第一个,如果抓取不到,则抓取下一个网站,这样依次进行下去。这样的业务场景,我们可以使用变种的责任链设计模式来进行代码的编写。

    BankBranchVO支行信息

    @Data
    @Builder
    public class BankBranchVO {
    
        /**
         * 支行名称
         */
        private String bankName;
    
        /**
         * 联行号
         */
        private String bankCode;
    
        /**
         * 省份
         */
        private String provName;
    
        /**
         * 市
         */
        private String cityName;
    
    }
    

    BankBranchSpider抽象类

    public abstract class BankBranchSpider {
    
        /**
         * 下一个爬虫
         */
        private BankBranchSpider nextSpider;
    
        /**
         * 解析支行信息
         *
         * @param bankBranchCode 支行联行号
         * @return 支行信息
         */
        protected abstract BankBranchVO parse(String bankBranchCode);
    
        /**
         * 设置下一个爬虫
         *
         * @param nextSpider 下一个爬虫
         */
        public void setNextSpider(BankBranchSpider nextSpider) {
            this.nextSpider = nextSpider;
        }
    
        /**
         * 使用下一个爬虫
         * 根据爬取的结果进行判定是否使用下一个网站进行爬取
         *
         * @param vo 支行信息
         * @return true 或者 false
         */
        protected abstract boolean useNextSpider(BankBranchVO vo);
    
        /**
         * 查询支行信息
         *
         * @param bankBranchCode 支行联行号
         * @return 支行信息
         */
        public BankBranchVO search(String bankBranchCode) {
            BankBranchVO vo = parse(bankBranchCode);
            while (useNextSpider(vo) && this.nextSpider != null) {
                vo = nextSpider.search(bankBranchCode);
            }
            if (vo == null) {
                throw new SpiderException("无法获取支行信息:" + bankBranchCode);
            }
            return vo;
        }
    
    }
    

      针对不同的网站解析方式不太一样,简言之就是获取HTML标签的属性值,对于这步可以有很多种方式实现,下面贴出我的实现方式,仅供参考。

    JsonCnSpider

    @Slf4j
    public class JsonCnSpider extends BankBranchSpider {
    
        /**
         * 爬取URL
         */
        private static final String URL = "http://www.jsons.cn/banknum/";
    
    
        @Override
        protected BankBranchVO parse(String bankBranchCode) {
    
            try {
                log.info("json.cn-支行信息查询:{}", bankBranchCode);
    
                // 设置请求参数
                Map<String, String> map = new HashMap<>(2);
                map.put("keyword", bankBranchCode);
                map.put("txtflag", "1");
    
                // 查询支行信息
                Document doc = Jsoup.connect(URL).data(map).post();
    
    
                Elements td = doc.selectFirst("tbody")
                        .selectFirst("tr")
                        .select("td");
    
                if (td.size() < 3) {
                    return null;
                }
    
                // 获取详情url
                String detailUrl = td.get(3)
                        .selectFirst("a")
                        .attr("href");
    
                if (StringUtil.isBlank(detailUrl)) {
                    return null;
                }
    
                log.info("json.cn-支行详情-联行号:{}, 详情页:{}", bankBranchCode, detailUrl);
    
                // 获取详细信息
                Elements footers = Jsoup.connect(detailUrl).get().select("blockquote").select("footer");
    
                String bankName = footers.get(1).childNode(2).toString();
                String bankCode = footers.get(2).childNode(2).toString();
                String provName = footers.get(3).childNode(2).toString();
                String cityName = footers.get(4).childNode(2).toString();
    
                return BankBranchVO.builder()
                        .bankName(bankName)
                        .bankCode(bankCode)
                        .provName(provName)
                        .cityName(cityName)
                        .build();
    
            } catch (IOException e) {
                log.error("json.cn-支行信息查询失败:{}, 失败原因:{}", bankBranchCode, e.getLocalizedMessage());
                return null;
            }
        }
    
        @Override
        protected boolean useNextSpider(BankBranchVO vo) {
            return vo == null;
        }
    
    }
    

    FiveCmSpider

    @Slf4j
    public class FiveCmSpider extends BankBranchSpider {
    
        /**
         * 爬取URL
         */
        private static final String URL = "http://www.5cm.cn/bank/%s/";
    
        @Override
        protected BankBranchVO parse(String bankBranchCode) {
            log.info("5cm.cn-查询支行信息:{}", bankBranchCode);
    
            try {
                Document doc = Jsoup.connect(String.format(URL, bankBranchCode)).get();
                Elements tr = doc.select("tr");
    
                Elements td = tr.get(0).select("td");
                if ("".equals(td.get(1).text())) {
                    return null;
                }
    
                String bankName = doc.select("h1").get(0).text();
                String provName = td.get(1).text();
                String cityName = td.get(3).text();
    
                return BankBranchVO.builder()
                        .bankName(bankName)
                        .bankCode(bankBranchCode)
                        .provName(provName)
                        .cityName(cityName)
                        .build();
    
            } catch (IOException e) {
                log.error("5cm.cn-支行信息查询失败:{}, 失败原因:{}", bankBranchCode, e.getLocalizedMessage());
                return null;
            }
        }
    
        @Override
        protected boolean useNextSpider(BankBranchVO vo) {
            return vo == null;
        }
    
    }
    
    

    AppGateSpider

    @Slf4j
    public class AppGateSpider extends BankBranchSpider {
    
        /**
         * 爬取URL
         */
        private static final String URL = "https://www.appgate.cn/branch/bankBranchDetail/";
    
        @Override
        protected BankBranchVO parse(String bankBranchCode) {
            try {
                log.info("appgate.cn-查询支行信息:{}", bankBranchCode);
    
                Document doc = Jsoup.connect(URL + bankBranchCode).get();
                Elements tr = doc.select("tr");
    
                String bankName = tr.get(1).select("td").get(1).text();
    
                if(Boolean.FALSE.equals(StringUtils.hasText(bankName))){
                    return null;
                }
    
                String provName = tr.get(2).select("td").get(1).text();
                String cityName = tr.get(3).select("td").get(1).text();
    
                return BankBranchVO.builder()
                        .bankName(bankName)
                        .bankCode(bankBranchCode)
                        .provName(provName)
                        .cityName(cityName)
                        .build();
    
            } catch (IOException e) {
                log.error("appgate.cn-支行信息查询失败:{}, 失败原因:{}", bankBranchCode, e.getLocalizedMessage());
                return null;
            }
        }
    
        @Override
        protected boolean useNextSpider(BankBranchVO vo) {
    
    
            return vo == null;
        }
    }
    
    

    初始化爬虫

    @Component
    public class BankBranchSpiderBean {
    
        @Bean
        public BankBranchSpider bankBranchSpider() {
            JsonCnSpider jsonCnSpider = new JsonCnSpider();
            FiveCmSpider fiveCmSpider = new FiveCmSpider();
            AppGateSpider appGateSpider = new AppGateSpider();
            jsonCnSpider.setNextSpider(fiveCmSpider);
            fiveCmSpider.setNextSpider(appGateSpider);
            return jsonCnSpider;
        }
    }
    

    爬取接口

    @RestController
    @AllArgsConstructor
    @RequestMapping("/bank/branch")
    public class BankBranchController {
    
        private final BankBranchSpider bankBranchSpider;
    
        /**
         * 查询支行信息
         *
         * @param bankBranchCode 支行联行号
         * @return 支行信息
         */
        @GetMapping("/search/{bankBranchCode}")
        public BankBranchVO search(@PathVariable("bankBranchCode") String bankBranchCode) {
            return bankBranchSpider.search(bankBranchCode);
        }
    
    }
    

    演示

    爬取成功

    爬取失败的情况

    代码地址

    • https://gitee.com/huangxunhui/java-spider-data.git

    总结

       这个爬虫的难点主要是在于Jsons.cn。因为数据接口被隐藏在代码里面,所以想取到需要花费一些时间。并且请求地址和页面地址一致,只是请求方式不一样,容易被误导。比较下来其他的两个就比较简单,直接替换联行号就可以了,还有就是这个三个网站也没啥反扒的机制,所以很轻松的就拿到了数据。

    往期回顾

    结尾

      如果觉得对你有帮助,可以多多评论,多多点赞哦,也可以到我的主页看看,说不定有你喜欢的文章,也可以随手点个关注哦,谢谢。

      我是不一样的科技宅,每天进步一点点,体验不一样的生活。我们下期见!

    展开全文
  • 在人民银行那里,每个银行的每一个营业网点都有自己唯一的银行联行号,根据这个号码能快速定位一间银行具体的分支行,就像根据一个身份证号码能快速确定一个人一样。例如汇款时,汇款单上要求填写收款人开户行,然后...
  • 以前做对接银行任务的时候,经常需要用到,肯定也有很多小伙伴需要使用这些,好东西要分享出去。
  • 银行卡与开户对照文档

    万次阅读 2015-12-28 13:58:26
    银行卡与开户对照信息
  • 全国银行银联

    2018-07-26 12:13:03
    全国银行银联,对应的银行名称,支行名称。 全国银行银联,对应的银行名称,支行名称
  • 此excel文件为2020年最新银行开户行全称联行号对照表,可根据联行号和开户行全称互查,整理不易,谢谢!
  • 目录**中国银行网点全集数据**一、数据简介二、时间区间三、字段展示四、样本数据八、数据更新频率 中国银行网点全集数据 一、数据简介 经济繁荣离不开银行等金融机构的广泛参与。然而,随着经济金融深刻变化,且受...
  • BankCode.zip

    2019-12-21 18:40:38
    从某银行网站下载的全国银行联行号数据共12.44万条,可能不是很全,但绝大部分都能查到,源文件为xml文档,可以自行转换。
  • 根据银行卡账号获取所属银行php

    万次阅读 2015-04-29 09:39:25
    根据银行卡账号获取所属银行php
  • 更新时间:2018-06-14官方来源:http://v.icbc.com.cn/userfiles/Resources/ICBC/grjr/download/2016/gyasia_outletlist_20161114.xls官方网站:...xls文件中,深圳地区的网点不是在“广...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 559
精华内容 223
关键字:

网点号联行号