• 使用阿里云接口进行银行卡四要素实名认证


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

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

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

    具体实现类:

     1 import java.util.HashMap;
     2 import java.util.Map;
     3 
     4 import org.apache.http.HttpResponse;
     5 import org.apache.http.util.EntityUtils;
     6 
     7 import com.netgate.util.send.HttpUtils;
     8 
     9 public class AlipayBankNoCheck {
    10 
    11     public static void main(String[] args) {
    12         String host = "https://yunyidata.market.alicloudapi.com";
    13         String path = "/bankAuthenticate4";
    14         String method = "POST";
    15         String appcode = "你的appcode";
    16         Map<String, String> headers = new HashMap<String, String>();
    17         //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
    18         headers.put("Authorization", "APPCODE " + appcode);
    19         //根据API的要求,定义相对应的Content-Type
    20         headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    21         Map<String, String> querys = new HashMap<String, String>();
    22         Map<String, String> bodys = new HashMap<String, String>();
    23         bodys.put("cardNo", "621555888555222669");
    24         bodys.put("idNo", "3404251111122222255555");
    25         bodys.put("name", "张三");
    26         bodys.put("phoneNo", "13355558888");
    27         
    28         try {
    29             /**
    30             * 重要提示如下:
    31             * HttpUtils请从
    32             * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
    33             * 下载
    34             *
    35             * 相应的依赖请参照
    36             * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
    37             */
    38             HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
    39             System.out.println(response.toString());
    40             //获取response的body
    41             System.out.println(EntityUtils.toString(response.getEntity()));
    42         } catch (Exception e) {
    43             e.printStackTrace();
    44         }
    45     }
    46     
    47 }

    工具类HttpUtils:

      1 import java.io.UnsupportedEncodingException;
      2 import java.net.URLEncoder;
      3 import java.security.KeyManagementException;
      4 import java.security.NoSuchAlgorithmException;
      5 import java.security.cert.X509Certificate;
      6 import java.util.ArrayList;
      7 import java.util.List;
      8 import java.util.Map;
      9 
     10 import javax.net.ssl.SSLContext;
     11 import javax.net.ssl.TrustManager;
     12 import javax.net.ssl.X509TrustManager;
     13 
     14 import org.apache.commons.lang.StringUtils;
     15 import org.apache.http.HttpResponse;
     16 import org.apache.http.NameValuePair;
     17 import org.apache.http.client.HttpClient;
     18 import org.apache.http.client.entity.UrlEncodedFormEntity;
     19 import org.apache.http.client.methods.HttpDelete;
     20 import org.apache.http.client.methods.HttpGet;
     21 import org.apache.http.client.methods.HttpPost;
     22 import org.apache.http.client.methods.HttpPut;
     23 import org.apache.http.conn.ClientConnectionManager;
     24 import org.apache.http.conn.scheme.Scheme;
     25 import org.apache.http.conn.scheme.SchemeRegistry;
     26 import org.apache.http.conn.ssl.SSLSocketFactory;
     27 import org.apache.http.entity.ByteArrayEntity;
     28 import org.apache.http.entity.StringEntity;
     29 import org.apache.http.impl.client.DefaultHttpClient;
     30 import org.apache.http.message.BasicNameValuePair;
     31 
     32 public class HttpUtils {
     33     
     34     /**
     35      * get
     36      * 
     37      * @param host
     38      * @param path
     39      * @param method
     40      * @param headers
     41      * @param querys
     42      * @return
     43      * @throws Exception
     44      */
     45     public static HttpResponse doGet(String host, String path, String method, 
     46             Map<String, String> headers, 
     47             Map<String, String> querys)
     48             throws Exception {        
     49         HttpClient httpClient = wrapClient(host);
     50 
     51         HttpGet request = new HttpGet(buildUrl(host, path, querys));
     52         for (Map.Entry<String, String> e : headers.entrySet()) {
     53             request.addHeader(e.getKey(), e.getValue());
     54         }
     55         
     56         return httpClient.execute(request);
     57     }
     58     
     59     /**
     60      * post form
     61      * 
     62      * @param host
     63      * @param path
     64      * @param method
     65      * @param headers
     66      * @param querys
     67      * @param bodys
     68      * @return
     69      * @throws Exception
     70      */
     71     public static HttpResponse doPost(String host, String path, String method, 
     72             Map<String, String> headers, 
     73             Map<String, String> querys, 
     74             Map<String, String> bodys)
     75             throws Exception {        
     76         HttpClient httpClient = wrapClient(host);
     77 
     78         HttpPost request = new HttpPost(buildUrl(host, path, querys));
     79         for (Map.Entry<String, String> e : headers.entrySet()) {
     80             request.addHeader(e.getKey(), e.getValue());
     81         }
     82 
     83         if (bodys != null) {
     84             List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
     85 
     86             for (String key : bodys.keySet()) {
     87                 nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
     88             }
     89             UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
     90             formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
     91             request.setEntity(formEntity);
     92         }
     93 
     94         return httpClient.execute(request);
     95     }    
     96     
     97     /**
     98      * Post String
     99      * 
    100      * @param host
    101      * @param path
    102      * @param method
    103      * @param headers
    104      * @param querys
    105      * @param body
    106      * @return
    107      * @throws Exception
    108      */
    109     public static HttpResponse doPost(String host, String path, String method, 
    110             Map<String, String> headers, 
    111             Map<String, String> querys, 
    112             String body)
    113             throws Exception {        
    114         HttpClient httpClient = wrapClient(host);
    115 
    116         HttpPost request = new HttpPost(buildUrl(host, path, querys));
    117         for (Map.Entry<String, String> e : headers.entrySet()) {
    118             request.addHeader(e.getKey(), e.getValue());
    119         }
    120 
    121         if (StringUtils.isNotBlank(body)) {
    122             request.setEntity(new StringEntity(body, "utf-8"));
    123         }
    124 
    125         return httpClient.execute(request);
    126     }
    127     
    128     /**
    129      * Post stream
    130      * 
    131      * @param host
    132      * @param path
    133      * @param method
    134      * @param headers
    135      * @param querys
    136      * @param body
    137      * @return
    138      * @throws Exception
    139      */
    140     public static HttpResponse doPost(String host, String path, String method, 
    141             Map<String, String> headers, 
    142             Map<String, String> querys, 
    143             byte[] body)
    144             throws Exception {        
    145         HttpClient httpClient = wrapClient(host);
    146 
    147         HttpPost request = new HttpPost(buildUrl(host, path, querys));
    148         for (Map.Entry<String, String> e : headers.entrySet()) {
    149             request.addHeader(e.getKey(), e.getValue());
    150         }
    151 
    152         if (body != null) {
    153             request.setEntity(new ByteArrayEntity(body));
    154         }
    155 
    156         return httpClient.execute(request);
    157     }
    158     
    159     /**
    160      * Put String
    161      * @param host
    162      * @param path
    163      * @param method
    164      * @param headers
    165      * @param querys
    166      * @param body
    167      * @return
    168      * @throws Exception
    169      */
    170     public static HttpResponse doPut(String host, String path, String method, 
    171             Map<String, String> headers, 
    172             Map<String, String> querys, 
    173             String body)
    174             throws Exception {        
    175         HttpClient httpClient = wrapClient(host);
    176 
    177         HttpPut request = new HttpPut(buildUrl(host, path, querys));
    178         for (Map.Entry<String, String> e : headers.entrySet()) {
    179             request.addHeader(e.getKey(), e.getValue());
    180         }
    181 
    182         if (StringUtils.isNotBlank(body)) {
    183             request.setEntity(new StringEntity(body, "utf-8"));
    184         }
    185 
    186         return httpClient.execute(request);
    187     }
    188     
    189     /**
    190      * Put stream
    191      * @param host
    192      * @param path
    193      * @param method
    194      * @param headers
    195      * @param querys
    196      * @param body
    197      * @return
    198      * @throws Exception
    199      */
    200     public static HttpResponse doPut(String host, String path, String method, 
    201             Map<String, String> headers, 
    202             Map<String, String> querys, 
    203             byte[] body)
    204             throws Exception {        
    205         HttpClient httpClient = wrapClient(host);
    206 
    207         HttpPut request = new HttpPut(buildUrl(host, path, querys));
    208         for (Map.Entry<String, String> e : headers.entrySet()) {
    209             request.addHeader(e.getKey(), e.getValue());
    210         }
    211 
    212         if (body != null) {
    213             request.setEntity(new ByteArrayEntity(body));
    214         }
    215 
    216         return httpClient.execute(request);
    217     }
    218     
    219     /**
    220      * Delete
    221      *  
    222      * @param host
    223      * @param path
    224      * @param method
    225      * @param headers
    226      * @param querys
    227      * @return
    228      * @throws Exception
    229      */
    230     public static HttpResponse doDelete(String host, String path, String method, 
    231             Map<String, String> headers, 
    232             Map<String, String> querys)
    233             throws Exception {        
    234         HttpClient httpClient = wrapClient(host);
    235 
    236         HttpDelete request = new HttpDelete(buildUrl(host, path, querys));
    237         for (Map.Entry<String, String> e : headers.entrySet()) {
    238             request.addHeader(e.getKey(), e.getValue());
    239         }
    240         
    241         return httpClient.execute(request);
    242     }
    243     
    244     private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException {
    245         StringBuilder sbUrl = new StringBuilder();
    246         sbUrl.append(host);
    247         if (!StringUtils.isBlank(path)) {
    248             sbUrl.append(path);
    249         }
    250         if (null != querys) {
    251             StringBuilder sbQuery = new StringBuilder();
    252             for (Map.Entry<String, String> query : querys.entrySet()) {
    253                 if (0 < sbQuery.length()) {
    254                     sbQuery.append("&");
    255                 }
    256                 if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
    257                     sbQuery.append(query.getValue());
    258                 }
    259                 if (!StringUtils.isBlank(query.getKey())) {
    260                     sbQuery.append(query.getKey());
    261                     if (!StringUtils.isBlank(query.getValue())) {
    262                         sbQuery.append("=");
    263                         sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
    264                     }                    
    265                 }
    266             }
    267             if (0 < sbQuery.length()) {
    268                 sbUrl.append("?").append(sbQuery);
    269             }
    270         }
    271         
    272         return sbUrl.toString();
    273     }
    274     
    275     private static HttpClient wrapClient(String host) {
    276         HttpClient httpClient = new DefaultHttpClient();
    277         if (host.startsWith("https://")) {
    278             sslClient(httpClient);
    279         }
    280         
    281         return httpClient;
    282     }
    283     
    284     private static void sslClient(HttpClient httpClient) {
    285         try {
    286             SSLContext ctx = SSLContext.getInstance("TLS");
    287             X509TrustManager tm = new X509TrustManager() {
    288                 public X509Certificate[] getAcceptedIssuers() {
    289                     return null;
    290                 }
    291                 public void checkClientTrusted(X509Certificate[] xcs, String str) {
    292                     
    293                 }
    294                 public void checkServerTrusted(X509Certificate[] xcs, String str) {
    295                     
    296                 }
    297             };
    298             ctx.init(null, new TrustManager[] { tm }, null);
    299             SSLSocketFactory ssf = new SSLSocketFactory(ctx);
    300             ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
    301             ClientConnectionManager ccm = httpClient.getConnectionManager();
    302             SchemeRegistry registry = ccm.getSchemeRegistry();
    303             registry.register(new Scheme("https", 443, ssf));
    304         } catch (KeyManagementException ex) {
    305             throw new RuntimeException(ex);
    306         } catch (NoSuchAlgorithmException ex) {
    307             throw new RuntimeException(ex);
    308         }
    309     }
    310 }
  • 相关阅读:
    Python 爬虫简介
    Python 线程池(小节)
    Python platform 模块
    Python term 模块
    python 统计使用技巧
    ArcGIS中的WKID(转)
    c#二维码资料
    How to remove live visual tree?
    新书预告 ArcGIS跨平台开发系列第一本
    visual studio 中删除多余的空白行
  • 原文地址:https://www.cnblogs.com/ruidongjun/p/7624457.html
Copyright © 2020-2023  润新知