国际银行账号(IBAN)验证应用程序界面(API)V4版资料

该应用程序界面(API)是本网站 国际银行账号(IBAN)组件 服务的组成部分

1. 国际银行账号(IBAN)验证应用程序界面(API)V4版新增了哪些功能?


平台致力于不断提升服务和提供更完善的支付验证解决方案。
您可能已注意到,国际银行账号(IBAN)组件应用程序界面(API)经版本迭代,从V2版升级到了V4版。
版本迭代的原因在于,平台将其他的应用程序界面(API),如SoftWare v3与单迭代版本,如v4进行了整合。

变更记录(从v2到v4):


添加新验证(错误代码206和成功代码006) - 现在,V4版应用程序界面(API)可以通过校验,发现输入国际银行账号(IBAN)中的非法字符。
新增错误代码 - 206(验证成功)包含信息为:国际银行账号(IBAN)包含非法字符。
新增成功代码 - 006(验证成功)包含信息为:国际银行账号(IBAN)未包含非法字符。
借助该错误代码,您能在向局域网输入非字母数字国际银行账号(IBAN)时,获知更多信息。
旧版本操作是先找出所有非字母数字字符,再对其进行验证。

新增验证(错误代码207和成功代码007) - 该国不支持未采用国际银行账号(IBAN)。
本次验证会在就提交的国际银行账号(IBAN)对应国家代码,未包含在正式支持国际银行账号(IBAN)支付国家对应代码表中的情况进行举报。
例如,某人使用不可靠第三发软件生成了一个美国的国际银行账号(IBAN)。
假设该账号为US64SVBKUS6S3300958879
您会注意到,该账号的校验码是正确的,且该账号可以通过参数验证,但该账号仍无效。原因在于美国并未将国际银行账号(IBAN)用于银行支付。


2. 特点


使用国际银行账号(IBAN)验证应用程序界面(API)V4版,您可以完成以下操作:

  • 用校验码验证国际银行账号(IBAN)是否有效
  • 验证国际银行账号(IBAN)所包含的国内银行代码和账号校验码是否有效*
  • 验证国际银行账号(IBAN)长度满足特定国家标准
  • 验证国际银行账号(IBAN)构成/格式满足特定国家标准
  • 验证国际银行账号(IBAN)字符(找出非字母数字字符)
  • 验证国家代码是否符合国际银行账号(IBAN)标准

  • 识别该国际银行账号(IBAN)对应的付款行
  • 识别国际银行账号(IBAN)对应国家和国家代码
  • 识别该国际银行账号(IBAN)对应付款行的地址
  • 识别银行及银行代码(BIC)
  • 识别银行、单一欧元支付区(SEPA)方案:B2B(企业对企业)方案、COR1方案、SCC(单一欧元支付区(SEPA)直接贷记方案)、SCT(单一欧元支付区(SEPA)信用转账方案)及SDD(单一欧元支付区(SEPA)直接借记方案)。

* 仅对特定银行和国家执行银行代码(BIC)和账号验证。

3. 应用程序界面(API)V4版请求



使用该应用程序界面(API)系统,您可以借助单次HTTP GET或POST请求,执行国际银行账号(IBAN)自动验证。
接受参数如下表所示:

字段名称 长度 类型 说明
国际银行账号(IBAN) 最多100个字符 字符串 您希望验证的国际银行账号(IBAN)。
api_key 128 字符串 您的专属应用程序界面(API)秘钥。
格式 5 字符串 XML和JSON支持的响应格式

*要获取应用程序界面(API)秘钥,请发送电子邮件至 contact@iban.com,联系本网站 或订阅服务。 登陆本网站订单页面即可购买。

示例 – 验证国际银行账号(IBAN)
您可以随意使用以下的示例代码,用最常用的编程语言验证该应用程序界面(API)。

curl "https://api.iban.com/clients/api/v4/iban/" \
    -X POST \
    -d format=json \
	-d api_key=[YOUR_API_KEY] \
	-d iban=DE46500700100927353010
<?php
$curl = curl_init();

$post = [
    'format' => 'json',
    'api_key' => '[YOUR_API_KEY]',
    'iban'   => 'DE46500700100927353010',
];

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.iban.com/clients/api/v4/iban/',
	CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => $post
));

$output = curl_exec($curl);
$result = json_decode($output);

print_r($result);

curl_close($curl);
?>
require 'net/http'

uri = URI('https://api.iban.com/clients/api/v4/iban/')

res = Net::HTTP.post_form(uri, "format" => "json", "api_key" => "[YOUR_API_KEY]","iban" => "DE46500700100927353010")

puts res.body
import requests

post_data = {'format':'json', 'api_key':'[YOUR_API_KEY]','iban':'DE46500700100927353010'}

response = requests.post('https://api.iban.com/clients/api/v4/iban/',post_data)
print(response.text)
use LWP::UserAgent;

my $ua = LWP::UserAgent->new;
my $server_endpoint = "https://api.iban.com/clients/api/v4/iban/";

my $format = 'json';
my $api_key = '[YOUR_API_KEY]';
my $iban = 'DE02100500000024290661';


my $req = HTTP::Request->new( POST => $server_endpoint );
$req->content_type('application/x-www-form-urlencoded');

my $post_data = 'format=' . $format . '&api_key=' . $api_key . '&iban=' . $iban;

$req->content($post_data);

my $resp = $ua->request($req);

if ( $resp->is_success ) {
    my $message = $resp->decoded_content;
	print $message;
}

JAVA

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;


public class ibanapi {

	private final String USER_AGENT = "API Client/1.0";

	public static void main(String[] args) throws Exception {

		ibanapi http = new ibanapi();

		
		System.out.println("\nTesting API - Send API POST request");
		http.sendPost();

	}

	// HTTP POST request
	private void sendPost() throws Exception {

		String url = "https://api.iban.com/clients/api/v4/iban/";
		URL obj = new URL(url);
		HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();

		//add reuqest header
		con.setRequestMethod("POST");
		con.setRequestProperty("User-Agent", USER_AGENT);
		con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

		String urlParameters = "api_key=[YOUR_API_KEY]&format=json&iban=DE02100500000024290661";

		// Send post request
		con.setDoOutput(true);
		DataOutputStream wr = new DataOutputStream(con.getOutputStream());
		wr.writeBytes(urlParameters);
		wr.flush();
		wr.close();

		int responseCode = con.getResponseCode();
		System.out.println("\nSending 'POST' request to URL : " + url);
		System.out.println("Post parameters : " + urlParameters);
		System.out.println("Response Code : " + responseCode);

		BufferedReader in = new BufferedReader(
		new InputStreamReader(con.getInputStream()));
		String inputLine;
		StringBuffer response = new StringBuffer();

		while ((inputLine = in.readLine()) != null) {
			response.append(inputLine);
		}
		in.close();

		//print result
		System.out.println(response.toString());

	}

}

.NET

public static void Main(string[] args)
		{						
			var request = (HttpWebRequest)WebRequest.Create("https://api.iban.com/clients/api/v4/iban/");
 
			var postData = "api_key=[YOUR_API_KEY]";
			 postData += "&format=json";
			 postData += "&iban=DE02100500000024290661";
			 
			var data = Encoding.ASCII.GetBytes(postData);
			 
			request.Method = "POST";
			request.ContentType = "application/x-www-form-urlencoded";
			request.ContentLength = data.Length;
			 
			using (var stream = request.GetRequestStream())
			{
			 stream.Write(data, 0, data.Length);
			}
			 
			var response = (HttpWebResponse)request.GetResponse();
			 
			var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
			
			Console.WriteLine(responseString);
			
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}

NODE

var request = require('request');

var headers = {
    'User-Agent':       'IBAN API Client/0.0.1',
    'Content-Type':     'application/x-www-form-urlencoded'
}

var options = {
    url: 'https://api.iban.com/clients/api/v4/iban/',
    method: 'POST',
    headers: headers,
    form: {'api_key': '[YOUR_API_KEY]', 'format': 'json', 'iban': 'GB04BARC20474473160944'}
}

request(options, function (error, response, body) {
    if (!error && response.statusCode == 200) {
     
		var data = JSON.parse(body);

		console.log(data.errors);
		
		console.log("Bank Name: " + data.bank_data.bank);
		console.log("Bank BIC: " + data.bank_data.bic);
		console.log("Bank City: " + data.bank_data.city);
		console.log("Bank Address: " + data.bank_data.address);
		console.log("Bank Zip: " + data.bank_data.zip);
		console.log("Bank Phone: " + data.bank_data.phone);
		console.log("Bank FAX: " + data.bank_data.fax);
		console.log("Bank www: " + data.bank_data.www);
		console.log("Bank email: " + data.bank_data.email);
		console.log("Bank Country Name: " + data.bank_data.country);
		console.log("Bank Country Code: " + data.bank_data.country_iso);
		console.log("Domestic Account Number: " + data.bank_data.account);
		
    }
})


借助GET请求利用该国际银行账号(IBAN)验证应用程序界面(API)执行验证的示例如下:

https://api.iban.com/clients/api/v4/iban/?api_key=key&format=xml&iban=IBAN

此处:
  • 秘钥代表您的应用程序界面(API)秘钥
  • 界面模块发送账号以便执行验证
  • xml代表响应格式。对于json格式响应而言,还可以指定一个json关键词。

一旦使用正确的应用程序界面(API)秘钥发送一个HTTP GET或POST请求,系统将返回指定格式的结果。 示例响应如下所示;应用程序界面(API)响应构成;

4. 应用程序界面(API)V4版响应

应用程序界面(API)的一个XSD方案响应如下所示:




	 
		   
				 
					   
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
							 
					   
				 
		   
		   
				 
					   
							 
							 
							 
							 
							 
					   
				 
		   
		   
				 
					   
							 
								   
										 
											   
											   
										 
								   
							 
							 
								   
										 
											   
											   
										 
								   
							 
							 
								   
										 
											   
											   
										 
								   
							 
							 
								   
										 
											   
											   
										 
								   
							 
							 
								   
										 
											   
											   
										 
								   
							 
							 
								   
										 
											   
											   
										 
								   
							 
					   
				 
		   
		   
	 



返回银行数据目标字段的详细说明如下表所示:

字段名称 长度 类型 说明
银行代码(BIC) 最多11个字符 字符串 该代码对应付款银行/分行或机构
银行 最多256个字符 字符串 该国际银行账号(IBAN)对应付款银行/机构的名称
分行 最多256个字符 字符串 特定银行分行,如有,的名称。
国家 最多32个字符 字符串 银行所在国家的名称,如美国
国家_ISO 2 字符串 2个字母组成的国家代码缩写,如US、UK、AU、FR等。
所在城市 最多128个字符 字符串 付款行所在城市的名称
所在州 最多128个字符 字符串 银行/分行所在州的名称。
邮编 最多11个字符 字符串 所在城市邮编或邮政代码。
地址 最多128个字符 字符串 付款行地址
账号 最多128个字符 字符串 T依据国际银行账号(IBAN)获知的国内银行账号。
返回单一欧元支付区(SEPA)数据主题字段的详细说明如下表所示:

字段名称 长度 类型 说明
单一欧元支付区信用转账(SCT)方案 最多3个字符 字符串 该银行是否支持单一欧元支付区(SEPA)信用转账方案。
单一欧元支付区直接借记(SDD)方案。 最多3个字符 字符串 该银行是否支持单一欧元支付区(SEPA)直接借记方案。
COR1方案 最多3字符 字符串 该银行是否支持单一欧元支付区(SEPA)COR1方案。
企业对企业(B2B)方案 最多3个字符 字符串 该银行是否支持单一欧元支付区(SEPA)企业对企业方案。
单一欧元支付区信用卡结算方案 最多3个字符 字符串 该银行是否支持单一欧元支付区(SEPA)信用卡结算方案。


该应用程序界面(API)针对国际银行账号(IBAN)验证查询的XML响应示例如下所示:

	
		BARCGB22
		国际银行2 
		英国巴克莱银行
		
地址:PO Box 69999 1 Churchill Place Canary Wharf
伦敦 E14 1QE 020 71147000 GB 73160944
006 国际银行账号(IBAN)不包含非法字符 001 国际银行账号(IBAN)校验码正确 002 账号校验码正确 005 国际银行账号(IBAN)构成正确 003 国际银行账号(IBAN)长度正确 007 该国支持国际银行账号(IBAN)标准

5. 应用程序界面(API)V4版状态代码

返回的数学校验码和格式验证包含在“验证”主题中
在该界面V4版本中,系统用每次验证的自有主题对验证进行分解,以便能更轻松地实现对代码的每一次指定验证。
这基本上意味着您无需重复“验证”主题,而只需依据主题名称直接查看特定验证主题,如$验证->构成即可。

状态代码 类型 说明
301 账号错误 应用程序界面(API)秘钥无效
302 账号错误 订阅过期
303 账号错误 无可用查询
304 您尚未进入该应用程序界面(API)
305 账号错误 IP地址未经许可
201 验证失败 账号校验码不正确
202 验证失败 国际银行账号(IBAN)校验码不正确
203 验证失败 国际银行账号(IBAN)长度不正确
205 验证失败 国际银行账号(IBAN)构成不正确
206 验证失败 国际银行账号(IBAN)包含非法字符
207 验证失败 该国不支持国际银行账号(IBAN)标准
001 验证成功 国际银行账号(IBAN)校验码正确
002 验证成功 账号校验码正确
003 验证成功 国际银行账号(IBAN)长度正确
004 验证成功 未针对该银行或分行执行账号校验码校验
005 验证成功 国际银行账号(IBAN)构成正确
006 验证成功 国际银行账号(IBAN)未包含非法字符
007 验证成功 该国支持国际银行账号(IBAN)标准