razorpay/ifsc

Razorpay IFSC 码库

维护者

详细信息

github.com/razorpay/ifsc

源代码

问题

安装次数: 178,462

依赖项: 0

建议者: 0

安全: 0

星级: 338

关注者: 196

分支: 129

公开问题: 60

语言:HTML

v2.0.34 2024-09-23 12:27 UTC

This package is auto-updated.

Last update: 2024-09-23 12:37:01 UTC


README

这是 Razorpay 发布的 IFSC 工具集的一部分。您可以在 ifsc.razorpay.com 上找到有关整个发布的更多详细信息。

Docker Image Version (latest semver) License: MIT npm version Gem Version PHP version

数据集

如果您只想查找数据集,请转到 发布 部分,并下载最新版本。

GitHub 上的最新 scraper 工作流程应会发布一个 release-artifact

源代码

以下列出了各种官方来源,其中目前使用的是带有†标记的

SWIFT

支持少数银行的 SWIFT/BIC 码。

SBI
PNB
HDFC

安装

Ruby

将此行添加到您的应用程序的 Gemfile 中

gem "ifsc"

然后执行

$ bundle

或者自行安装

$ gem install ifsc

在您的 Ruby 程序内部

require "ifsc"

...以将其作为依赖项拉入。

PHP

composer require php-http/curl-client razorpay/ifsc

PHP 包依赖于虚拟包 php-http/client-implementation,这要求您安装一个适配器,但我们不关心您安装哪个。这是您应用程序中的一个实现细节。如果您不想使用 php-http/curl-client,也可以不使用它。您可以使用 php-http/guzzle6-adapter。有关虚拟包的更多信息,为什么这是一个好主意以及它带来的灵活性,请参阅 HTTPlug 文档。您可以在 Packagist 上找到支持的提供者列表。

支持的最低PHP版本是7.3。PHP版本可以安装PHP>=7.1。

Node.js

$ npm install ifsc

Go

此包与模块模式的现代Go版本兼容,已安装Go

go get github.com/razorpay/ifsc/v2

将解析并将包及其依赖项添加到当前开发模块

或者,如果您在包中使用import,也可以达到相同的效果

import "github.com/razorpay/ifsc/v2/src/go"

然后不带参数运行go get。

最后,要使用此仓库的顶级版本,请使用以下命令

go get github.com/razorpay/ifsc/v2@master

支持矩阵

仅考虑每个SDK的最新版本。

API文档

该仓库目前托管了5个模块的源代码:PHP/Node.js/Ruby/Go。以下是对API的文档

PHP

<?php

use Razorpay\IFSC\Bank;
use Razorpay\IFSC\IFSC;
use Razorpay\IFSC\Client;

IFSC::validate('KKBK0000261'); // Returns true
IFSC::validate('BOTM0XEEMRA'); // Returns false

IFSC::validateBankCode('PUNB'); // Returns true
IFSC::validateBankCode('ABCD'); // Returns false

IFSC::getBankName('PUNB'); // Returns 'Punjab National Bank'
IFSC::getBankName('ABCD'); // Returns null

IFSC::getBankName(Bank::PUNB); //Returns Punjab National Bank

Bank::getDetails(Bank::PUNB);
Bank::getDetails('PUNB');

// Returns an array:
// [
//    'code' => 'PUNB',
//    'type' => 'PSB',
//    'ifsc' => 'PUNB0244200',
//    'micr' => '110024001',
//    'iin' => '508568',
//    'apbs' => true,
//    'ach_credit' => true,
//    'ach_debit' => true,
//    'nach_debit' => true,
//    'name' => 'Punjab National Bank',
//    'bank_code' => '024',
//    'upi' => true
// ]

$client = new Client();
$res = $client->lookupIFSC('KKBK0000261');

echo $res->bank; // 'KOTAK MAHINDRA BANK LIMITED'
echo $res->branch; // 'GURGAON'
echo $res->address; // 'KOTAK MAHINDRA BANK LTD. UNIT NO. 8&9, SEWA CORPORATE PARK, MG ROAD, REVENUE STATE OF SARHAUL TEHSIL, DISTT,- GURGAON- 122001'
echo $res->contact; // '4131000'
echo $res->city; // 'GURGAON'
echo $res->district; // 'GURGAON'
echo $res->state; // 'HARYANA'
echo $res->centre; // 'GURGAON'
echo $res->getBankCode(); // KKBK
echo $res->getBankName(); // 'Kotak Mahindra Bank'
echo $res->micr; // '110485003'
// Boolean fields: $res->upi, $res->rtgs, $res->neft, res->imps

// You will get a SWIFT code where possible:

echo $client->lookupIFSC('https://ifsc.razorpay.com/HDFC0CAGSBK')->swift; // 'HDFCINBB'

// lookupIFSC may throw `Razorpay\IFSC\Exception\ServerError`
// in case of server not responding in time
// or Razorpay\IFSC\Exception\InvalidCode in case
// the IFSC code is invalid

Node.js

var ifsc = require('ifsc');

ifsc.validate('KKBK0000261'); // returns true
ifsc.validate('BOTM0XEEMRA'); // returns false

ifsc.fetchDetails('KKBK0000261').then(function(res) {
   console.log(res);
    // {
    //   MICR: '560226263',
    //   BRANCH: 'THE AGS EMPLOYEES COOP BANK LTD',
    //   ADDRESS: 'SANGMESH BIRADAR BANGALORE',
    //   STATE: 'KARNATAKA',
    //   CONTACT: '+91802265658',
    //   UPI: true,
    //   RTGS: true,
    //   CITY: 'BANGALORE',
    //   CENTRE: 'BANGALORE URBAN',
    //   DISTRICT: 'BANGALORE URBAN',
    //   NEFT: true,
    //   IMPS: true,
    //   SWIFT: 'HDFCINBB',
    //   BANK: 'HDFC Bank',
    //   BANKCODE: 'HDFC',
    //   IFSC: 'HDFC0CAGSBK'
    // }
});

console.log(ifsc.bank.PUNB); // prints PUNB
// Prints the entire JSON from https://ifsc.razorpay.com/KKBK0000261
// res is an object, not string

Ruby

确保您的代码中包含require 'ifsc'。离线验证代码。(记得保持gem最新!)

# valid?

Razorpay::IFSC::IFSC.valid? 'KKBK0000261' # => true
Razorpay::IFSC::IFSC.valid? 'BOTM0XEEMRA' # => false

# validate!

Razorpay::IFSC::IFSC.validate! 'KKBK0000261' # => true
Razorpay::IFSC::IFSC.validate! 'BOTM0XEEMRA' # => Razorpay::IFSC::InvalidCodeError

# bank_name_for(code) gets you the bank name offline
Razorpay::IFSC::IFSC.bank_name_for 'PUNB0026200' -> "Punjab National Bank"
Razorpay::IFSC::IFSC.bank_name_for 'KSCB0006001' -> "Tumkur District Central Bank"

# get_details gets you the bank details from `banks.json`
Razorpay::IFSC::Bank.get_details 'PUNB'
{
   code: 'PUNB',
   type: 'PSB',
   ifsc: 'PUNB0244200',
   micr: '110024001',
   bank_code: '024',
   iin: '508568',
   apbs: true,
   ach_credit: true,
   ach_debit: true,
   nach_debit: true
}

# constants

Razorpay::IFSC::Bank::PUNB
'PUNB'

在线验证并从服务器检索详细信息

如果在调用code.get之前调用code.valid?,则验证将离线执行。

# 1. using find
code = Razorpay::IFSC::IFSC.find 'KKBK0000261'

# 2. using new(...).get
code = Razorpay::IFSC::IFSC.new 'KKBK0000261'
code.get

# result
code.valid?
# => true
code.bank
# => "Kotak Mahindra Bank"
code.branch
# => "GURGAON"
code.address
# => "KOTAK MAHINDRA BANK LTD. UNIT NO. 8&9, SEWA CORPORATE PARK, MG ROAD, REVENUE STATE OF SARHAUL TEHSIL, DISTT,- GURGAON- 122001"
code.contact
# => "4131000"
code.city
# => "GURGAON"
code.district
# => "GURGAON"
code.state
# => "HARYANA"
code.centre
# => GURGAON
code.neft
# => true
code.upi
# => true
code.imps
# => true
code.rtgs
# => true
code.swift
# => ""

子租赁分支

您可以使用code.bank_name方法获取考虑子租赁分支的银行名称。

code = Razorpay::IFSC::IFSC.find 'HDFC0CKUB01'
code.bank_name "Khamgaon Urban Co-operative Bank"

此操作离线进行,不需要网络调用。此信息存储在2个文件中

  1. src/sublet.json - 从NPCI网站自动生成
  2. src/custom-sublets.json - 手动维护。覆盖范围不是100%。欢迎PR。

子租赁(或子会员)分支是大银行的IFSC代码,但租赁给小银行。在某些情况下,整个范围都租给特定银行。例如,所有以YESB0TSS开头的IFSC都属于Satara Shakari Bank。这些在custom-sublets.json中手动维护。

错误处理

# all these `Razorpay::IFSC::InvalidCodeError` for an invalid code
Razorpay::IFSC::IFSC.validate! '...'
Razorpay::IFSC::IFSC.find '...'
code = Razorpay::IFSC::IFSC.new '...'; code.get

# these raise `Razorpay::IFSC::ServerError` if there is an error
# communicating with the server
Razorpay::IFSC::IFSC.find '...'
code = Razorpay::IFSC::IFSC.new '...'; code.get

Go

package main

import (
	ifsc "github.com/razorpay/ifsc/v2/src/go"
)

// todo: change funcs not required to lower case.

func main() {

	ifsc.Validate("KKBK0000261") // Returns true
	ifsc.Validate("BOTM0XEEMRA") // Returns false

	ifsc.ValidateBankCode("PUNB") // Returns true
	ifsc.ValidateBankCode("ABCD") // Returns false

	ifsc.GetBankName("PUNB") // Returns "Punjab National Bank", nil
	ifsc.GetBankName("ABCD") // Returns "", errors.New(invalid bank code)
	ifsc.GetBankName(ifsc.HDFC) // Returns "HDFC Bank", nil


	ifsc.GetBankDetails("PUNB")
	// or
	ifsc.GetBankDetails(ifsc.PUNB)

	/* Returns
		(*ifsc.Bank){
		Name	  : "Punjab National Bank",
		BankCode  : "024",
		Code	  : "PUNB",
		Type	  : "PSB",
		IFSC	  : "PUNB0244200",
		MICR      : "110024001",
		IIN       : "508568",
		APBS      : true,
		AchCredit : true,
		AchDebit  : true,
		NachDebit : true,
		Upi       : true
	}), nil
	*/

	ifsc.LookUP("KKBK0000261")

	/*
	Returns
	(*ifsc.IFSCResponse)({
	 Bank	  :  "Kotak Mahindra Bank",
	 Branch	  :  "GURGAON",
	 Address  :  "KOTAK MAHINDRA BANK LTD. UNIT NO. 8&9, SEWA CORPORATE PARK, MG ROAD, REVENUE STATE OF SARHAUL TEHSIL, DISTT,- GURGAON- 122001",
	 Contact  :  "4131000",
	 City	  :  "GURGAON",
	 District :  "GURGAON",
	 State	  :  "HARYANA",
	 IFSC	  :  "KKBK0000261",
	 BankCode :  "KKBK"
	}), nil
	 */
}

代码说明

这两个包都附带一个300kb的JSON文件,其中包含整个IFSC代码列表,以压缩但可读的格式。

银行代码和名称列表是手动维护的,但通过测试验证,以确保与最新的RBI出版物准确无误。这使得我们可以在不担心它们在新构建中被删除的情况下,将旧银行代码添加到名称列表中。

API开发

IFSC API维护在https://github.com/razorpay/ifsc-api的单独仓库中。

许可证

该仓库中的代码受MIT许可证的许可。许可证文本可在LICENSE文件中找到。数据集本身属于公共领域。