如今随着互联网产业的多元化发展,尤其是互联网金融,O2O,共享经济等新兴商业形式的兴起,企业对实名认证业务的数据形式和数据质量有了更高的需求。如今也衍生出银行卡实名认证业务,通过接口将银行卡号、手机号、身份证号码、姓名上传至阿里云,再与银行系统进行匹配,判断信息的一致性。

在使用接口服务的方面我推荐使用技术实力强大的阿里云;

首先点击阿里云API接口获取相应的订单后在控制台中可以得到您的appcode

发送数据:


Map<String, String> bodys = new HashMap<String, String>();
bodys.put("ReturnBankInfo", "YES");
bodys.put("cardNo", "62155811111111111");
bodys.put("idNo", "340421199922225555");
bodys.put("name", "张三");
bodys.put("phoneNo", "13522221111");

返回数据:

{"name": "张三","cardNo": "6225756663322156","idNo": "34042158962596321","phoneNo": "13699995555","respMessage": "结果匹配","respCode": "0000","bankName": "招商银行","bankKind": "招商银行信用卡","bankType": "信用卡","bankCode": "CMB"
}

具体实现类:(以java为例,其他语言在产品页面详细查看)

import java.util.HashMap;
import java.util.Map;import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;import com.netgate.util.send.HttpUtils;public class AlipayBankNoCheck {public static void main(String[] args) {String host = "https://yunyidata.market.alicloudapi.com";String path = "/bankAuthenticate4";String method = "POST";String appcode = "你的appcode";Map<String, String> headers = new HashMap<String, String>();//最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105headers.put("Authorization", "APPCODE " + appcode);//根据API的要求,定义相对应的Content-Typeheaders.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("cardNo", "621555888555222669");bodys.put("idNo", "3404251111122222255555");bodys.put("name", "张三");bodys.put("phoneNo", "13355558888");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的bodySystem.out.println(EntityUtils.toString(response.getEntity()));} catch (Exception e) {e.printStackTrace();}}}

工具类HttpUtils:

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;public class HttpUtils {/*** get* * @param host* @param path* @param method* @param headers* @param querys* @return* @throws Exception*/public static HttpResponse doGet(String host, String path, String method, Map<String, String> headers, Map<String, String> querys)throws Exception {       HttpClient httpClient = wrapClient(host);HttpGet request = new HttpGet(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}return httpClient.execute(request);}/*** post form* * @param host* @param path* @param method* @param headers* @param querys* @param bodys* @return* @throws Exception*/public static HttpResponse doPost(String host, String path, String method, Map<String, String> headers, Map<String, String> querys, Map<String, String> bodys)throws Exception {        HttpClient httpClient = wrapClient(host);HttpPost request = new HttpPost(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}if (bodys != null) {List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();for (String key : bodys.keySet()) {nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));}UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");request.setEntity(formEntity);}return httpClient.execute(request);}  /*** Post String* * @param host* @param path* @param method* @param headers* @param querys* @param body* @return* @throws Exception*/public static HttpResponse doPost(String host, String path, String method, Map<String, String> headers, Map<String, String> querys, String body)throws Exception {     HttpClient httpClient = wrapClient(host);HttpPost request = new HttpPost(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}if (StringUtils.isNotBlank(body)) {request.setEntity(new StringEntity(body, "utf-8"));}return httpClient.execute(request);}/*** Post stream* * @param host* @param path* @param method* @param headers* @param querys* @param body* @return* @throws Exception*/public static HttpResponse doPost(String host, String path, String method, Map<String, String> headers, Map<String, String> querys, byte[] body)throws Exception {        HttpClient httpClient = wrapClient(host);HttpPost request = new HttpPost(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}if (body != null) {request.setEntity(new ByteArrayEntity(body));}return httpClient.execute(request);}/*** Put String* @param host* @param path* @param method* @param headers* @param querys* @param body* @return* @throws Exception*/public static HttpResponse doPut(String host, String path, String method, Map<String, String> headers, Map<String, String> querys, String body)throws Exception {       HttpClient httpClient = wrapClient(host);HttpPut request = new HttpPut(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}if (StringUtils.isNotBlank(body)) {request.setEntity(new StringEntity(body, "utf-8"));}return httpClient.execute(request);}/*** Put stream* @param host* @param path* @param method* @param headers* @param querys* @param body* @return* @throws Exception*/public static HttpResponse doPut(String host, String path, String method, Map<String, String> headers, Map<String, String> querys, byte[] body)throws Exception {      HttpClient httpClient = wrapClient(host);HttpPut request = new HttpPut(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}if (body != null) {request.setEntity(new ByteArrayEntity(body));}return httpClient.execute(request);}/*** Delete*  * @param host* @param path* @param method* @param headers* @param querys* @return* @throws Exception*/public static HttpResponse doDelete(String host, String path, String method, Map<String, String> headers, Map<String, String> querys)throws Exception {      HttpClient httpClient = wrapClient(host);HttpDelete request = new HttpDelete(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}return httpClient.execute(request);}private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException {StringBuilder sbUrl = new StringBuilder();sbUrl.append(host);if (!StringUtils.isBlank(path)) {sbUrl.append(path);}if (null != querys) {StringBuilder sbQuery = new StringBuilder();for (Map.Entry<String, String> query : querys.entrySet()) {if (0 < sbQuery.length()) {sbQuery.append("&");}if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {sbQuery.append(query.getValue());}if (!StringUtils.isBlank(query.getKey())) {sbQuery.append(query.getKey());if (!StringUtils.isBlank(query.getValue())) {sbQuery.append("=");sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));}                    }}if (0 < sbQuery.length()) {sbUrl.append("?").append(sbQuery);}}return sbUrl.toString();}private static HttpClient wrapClient(String host) {HttpClient httpClient = new DefaultHttpClient();if (host.startsWith("https://")) {sslClient(httpClient);}return httpClient;}private static void sslClient(HttpClient httpClient) {try {SSLContext ctx = SSLContext.getInstance("TLS");X509TrustManager tm = new X509TrustManager() {public X509Certificate[] getAcceptedIssuers() {return null;}public void checkClientTrusted(X509Certificate[] xcs, String str) {}public void checkServerTrusted(X509Certificate[] xcs, String str) {}};ctx.init(null, new TrustManager[] { tm }, null);SSLSocketFactory ssf = new SSLSocketFactory(ctx);ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);ClientConnectionManager ccm = httpClient.getConnectionManager();SchemeRegistry registry = ccm.getSchemeRegistry();registry.register(new Scheme("https", 443, ssf));} catch (KeyManagementException ex) {throw new RuntimeException(ex);} catch (NoSuchAlgorithmException ex) {throw new RuntimeException(ex);}}
}

使用阿里云接口进行银行卡四要素实名认证相关推荐

  1. 使用阿里云接口进行银行卡三要素实名认证

    如今随着互联网产业的多元化发展,尤其是互联网金融,O2O,共享经济等新兴商业形式的兴起,企业对实名认证业务的数据形式和数据质量有了更高的需求.如今也衍生出银行卡实名认证业务,通过接口将[银行卡号.身份 ...

  2. 调用阿里云接口实现短信消息的发送源码——CSDN博客

    在调用阿里云接口之前首先需要购买接口,获得accessKeySecret,然后使用下列代码就可以直接调用了!! /** * @Title: TestPhoneVerification.java * @ ...

  3. .Net 调用阿里云接口-识别车牌

    参考文档:生成URL - 阿里云视觉智能开放平台 - 阿里云 参考文档:https://next.api.aliyun.com/api/ocr/2019-12-30/RecognizeLicenseP ...

  4. 阿里云接口实现发送短信验证码

    java 阿里云接口实现发送短信验证码 1. 阿里云后台配置短信相关 1.1 开通短信服务 1.2 添加模板签名 1.3 创建秘钥 1.4 短信需要后台授权--注意点 2 java--简单实现短信验证 ...

  5. 调用阿里云接口一键实现人像动漫化

    调用阿里云接口一键实现人像动漫化 前言 一.整体流程 二.生成效果 总结 前言 在一篇博客中学到了调用API实现人像动漫化,不过有些东西还不是特别明白,所以写下这篇文章,参考链接在末尾,通过调用阿里云 ...

  6. 阿里云接口实现短信发送java版

    阿里云接口实现短信发送java版 1. 前期准备 1.1.开通阿里云短信服务 1.2.申请签名管理和模板管理 1.3.获取Access_key和Access_secret 2.代码部分 2.1.在po ...

  7. 阿里云第三方:_身份证二要素API接口

    ** 身份证实名认证查询接口 ** 由于公司业务需要,需核实进来的用户个人信息是否真实性,对比阿里云提供的第三方API接口,货比三家,最终选定了这一家,传参只需:身份证号+姓名即可解析获取详细的用户身 ...

  8. python连接阿里云接口进行实名认证

    阿里云上有很多身份证实名认证接口,有身份证二要素验证也有身份证图片验证,根据自己的需求选择. 几乎每个套餐都会有20次的免费试用,并且会给出不同语言的请求示例. 我使用的是下面这个链接,同样用pych ...

  9. java 阿里云接口实现发送短信验证码

    1.先去阿里云开通短信服务: 2.添加模板及签名:需要审核,个人账户审核就几分钟就OK 先解释一下模板及签名: 标准参照:https://help.aliyun.com/document_detail ...

  10. 【阿里云总监课第四期】时髦的云原生应用怎么写?

    为什么80%的码农都做不了架构师?>>>    概述 应用已经跨入了云原生的时代.要写一个时髦的云原生应用,首先当然要了解什么是云原生.CNCF,也就是云原生计算基金会,作为目前人气 ...

最新文章

  1. linux系统格式化磁盘
  2. gin使用 GET, POST, PUT, PATCH, DELETE, OPTIONS
  3. wordpress 添加自定义的一定级菜单
  4. 设计模式学习笔记——命令(Command)模式
  5. 浏览器js 获取手机标识信息_手机软件多次要求获取手机信息,习惯性让其通过有安全隐患?...
  6. python自动化办公要学多久-深圳用python进行办公自动化都需要学习什么知识呢,谁来说下...
  7. 运营前线1:一线运营专家的运营方法、技巧与实践03 与用户沟通,请避免这6个“坑”!...
  8. border 0px和border none的区别
  9. 隐马尔可夫模型python_机器学习中的隐马尔科夫模型(HMM)详解
  10. C/C++经典项目开发:教你破解Windows系统密码,手把手教你做解密项目
  11. 转自腾讯空间的文章看了心里有说不…
  12. 杏子语录(2019年07月)
  13. SQLServer 大容量导入导致死锁和系统变慢问题
  14. Vagrant + VMBox 踩坑记录
  15. 第二届“中国制造(深圳)高峰论坛”举行
  16. 记录微信支付解密错误Tag mismatch
  17. 狸窝音频剪辑软件_5分钟学会影视剪辑:账号注册、素材寻找、剪辑使用、获取收益...
  18. 使用Lucene对doc、docx、pdf、txt文档进行全文检索功能的实现
  19. 全局地址池 与接口地址池
  20. 阿里面试官问我:如何设计秒杀系统?我给出接近满分的回答

热门文章

  1. 高效人士的七个管理习惯
  2. 802.11电源管理模式
  3. Kotlin中let、also、with、run和apply使用
  4. 用C语言画空心三角形
  5. 《线性代数》学习之———第一章 矩阵与方程组(1.1线性方程组)
  6. Python微信自动回复脚本
  7. mac注销快捷键_Mac小技巧 - 快捷键符号解释及用法介绍
  8. 端口映射不能访问80端口
  9. 1-MySQL事务特性
  10. win7计算机不在桌面了,怎么办Win7系统开机后不显示桌面