一、用户痛点
不少电商、金融小程序、支付服务商这类需要做实名认证、提现鉴权、绑卡校验的企业,常常分不清该选用银行卡几要素接口。
选二要素只能校验姓名卡号,无法确认身份证;选三要素手机号填错也能返回通过,容易产生虚假绑卡;选四要素又拉高用户操作门槛,流失用户。
二、接口说明
探数银行卡要素核验API是依托官方权威数据源打造的实时实名校验服务,支持二要素、三要素、四要素分级银行卡核验能力。戳这里查看
请求参数
银行卡二要素:姓名 + 银行卡,校验二者一致性。
银行卡三要素:姓名 + 身份证号 + 银行卡号,校验三者一致性。
银行卡四要素:姓名 + 身份证号 + 银行卡号 + 银行预留手机号,校验四者一致性。
返回参数
| 名称 | 类型 | 说明 |
|---|---|---|
| result | string | 验证结果 0一致 1不一致 2未认证 3已注销 |
| msg | string | 描述 |
| desc | string | 描述信息 |
| bank_info.bin_digits | string | 银行卡bin码长度 |
| bank_info.card_bin | string | 银行卡bin码 |
| bank_info.city | string | 银行卡开户市 |
| bank_info.type | string | 银行卡类型 |
| bank_info.abbreviation | string | 银联支付网关简码 |
| bank_info.bank | string | 银行名称 |
| bank_info.province | string | 银行卡开户省 |
| bank_info.card_digits | string | 银行卡号长度 |
| bank_info.weburl | string | 银行官方网站 |
| bank_info.card_name | string | 银行卡名称 |
| bank_info.logo | string | 银行logo |
| bank_info.tel | string | 银行电话 |
| bank_info.isLuhn | string | 是否支持luhn校验 true 校验成功 false 校验失败 |
注意事项
- 所有业务风控逻辑仅以
result状态码为准,bank_info仅为辅助展示信息,不做实名核验依据; bank_info相关解析数据(省市、logo等)针对小众银行、老旧银行卡可能存在空值,属于正常现象;isLuhn仅为卡号格式合法性校验,不代表银行卡真实有效、状态正常。
result 状态码解读
| result值 | 状态含义 | 业务处理建议 |
|---|---|---|
| 0 | 核验一致 | 可进入后续业务流程(仅代表信息匹配,不校验卡片冻结、挂失、余额等状态) |
| 1 | 核验不一致 | 信息匹配失败,引导用户核对姓名、身份证、卡号、预留手机号,重点区分银行预留手机号与日常手机号 |
| 2 | 未认证 | 该银行卡未完成实名登记,引导用户前往银行完成实名 |
| 3 | 已注销 | 银行卡已注销失效,无法用于绑卡、提现等业务,提示用户更换有效银行卡 |
三、应用场景
二要素(姓名 + 卡号)
简单绑卡展示、卡号初步校验
内部业务核对,低风控要求场景
风险:无法核验身份证,防冒用能力弱
三要素(姓名 + 身份证 + 卡号)
用户实名认证、账号绑卡
平台提现、佣金结算、打款前校验
会员资质核验、企业后台实名备案
特点:使用最广,不校验预留手机号
四要素(姓名 + 身份证 + 卡号 + 预留手机号)
高风控场景:网贷、理财、支付开户
资金类业务、钱包开户、风险等级高的绑卡
需要确认本人持有银行卡,防范盗卡冒用
特点:校验强度最高,用户填错预留手机容易失败
💡选型小总结
内部轻校验选二要素;普通实名提现选三要素;涉及资金风险、强实名必须选四要素。
四、如何调用接口
以四要素为例
JAVA
public static void main(String[] args) {
String host = "https://market.aliyun.com/detail/cmapi00068858";//地址
String path = "/check_bankcard_4";
String method = "POST";
String appcode = "你自己的AppCode";
Map<String, String> headers = new HashMap<String, String>();
//最后在header中的格式(中间是英文空格)为Authorization:APPCODE
headers.put("Authorization", "APPCODE " + appcode);
//根据API的要求,定义相对应的Content-Type
headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
Map<String, String> querys = new HashMap<String, String>();
Map<String, String> bodys = new HashMap<String, String>();
bodys.put("name", "张三");
bodys.put("bankcard", "6217111123452345433");
bodys.put("idcard", "330333333333333333");
bodys.put("mobile", "13011112222");
try {
/**
* 重要提示如下:
* HttpUtils请从
* https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
* 下载
*
* 相应的依赖请参照
* https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
*/
HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
System.out.println(response.toString());
//获取response的body
//System.out.println(EntityUtils.toString(response.getEntity()));
} catch (Exception e) {
e.printStackTrace();
}
}
API #实名认证 #银行卡核验 #风控