AlipayCertificationHelper.java
7.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
package com.yohoufo.user.helper;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayUserCertifyOpenCertifyRequest;
import com.alipay.api.request.AlipayUserCertifyOpenInitializeRequest;
import com.alipay.api.request.AlipayUserCertifyOpenQueryRequest;
import com.alipay.api.request.ZhimaCustomerCertificationQueryRequest;
import com.alipay.api.response.AlipayUserCertifyOpenCertifyResponse;
import com.alipay.api.response.AlipayUserCertifyOpenInitializeResponse;
import com.alipay.api.response.AlipayUserCertifyOpenQueryResponse;
import com.alipay.api.response.ZhimaCustomerCertificationQueryResponse;
import java.util.UUID;
/**
* 支付宝刷脸实名认证
*
* 1. 身份认证初始化
* 2. 执行身份认证能力
* 3. 查询身份认证结果
*
* @ClassName AliCertificationHelper
* @Author xinfei
* @Date 2019/7/26
* @Created add by xinfei/Kelvin 2019/7/26
**/
public class AlipayCertificationHelper {
private static String APP_ID = "2016091401906455";
private static String APP_PRIVATE_KEY =
"MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCIUEvqn36aBznEQ0LaoM6Cjb8Mf4iNI+XZc41DUumEj0IQCEBXx60Nil5IKZRETiXcKxMV24T1k1Ep8LfulIuaa4DOgxZgm0LlmJi/S8QlJXjDdMATyU84anGcoT8TQbC9Tq9HEtkCMcYBJHIOJA4ZdLEhEH9gmoArsHI5K6ucaOjDRgmzgKxX1slg8kiYr8ysLq2nRUarwBuZ1k0B5hypALzwkiJoFKBgiJYAibIYd/wWW1A+NOCYDJw+ASRw5gUwdXjuykuwoWj2Q9jG5nVg9hRHcbYo+mpTq6Dhx2EAYyWVMj3pBGlymaDzzmr4gK+DnZslbOYSGjPDAT72QTThAgMBAAECggEAKZ6qr0Znd0wBfUU0ImC67O2uiXhfDwkI4u3/EbE9D3ZWK2L5klOrKNk4lDvtwzVBJgoY17Gg1QJX48BVyIieX1W3jFZF/NUrBcMj0DSn/NeGGdeJ1gC/KXCGo9Yv1gdWmVZu+fptO9hKpoqkMGEd1PPmKTxKSAqkW7KSDZah3S1Qytfug/9T67ici1Z+PGIlQzMtb9TSds3rmTGP66WZ7FVUizcR0X/3B4P8KomLz6dsRpsrYmpfdEBBjbPi7Tw1BZBfuNfQto1lARzdtoNvyRhpSp62Zom0w0FWbeg0unpbOEHl4HmbnSGj6LAPxopQ0bwPc9PiMJjRaRiqL73g4QKBgQDCS8bCMe3ThLnPe7eNEsI2VS/Q74hlfaz/mzNkqqMAnPgNkn7mBws0knwY5zUVKppS/iWZiVnRby2GHGUZ5UCWnHBcnb9wv0OcrtkFAQfCQzN2dtPRlPB3SycpSXJx8SMnKKX9pj2LctjsCcAUQuiTW8Ve72ne53XWFqQDltpBRQKBgQCzmpFnPDVt21HjGQ5LAUd0PY5l9GBNIx5Pt7605SY6I24giGAwXxHBejzaQVpDaOYhe2SW7rYjd8k8y0kUVL9FkJlYr9LGFaXOWFUEMR3lcIG47JVihzFWRhQ4WmcRKJfQIQAICn3XFL5qhy/63oHH0c8pghdRhE/0II4CpAAo7QKBgQC9TzXe2uUd9bFRrvp90uw2IjRPwEPGl3grKJ4flH7zxv2Nw9Iu8GgDlkKhxQ0cjYEGIiiie4hvHoNdq2b6nzuaQ9za8Lyp70HCdT5wuLtFlVKcN1VVXGgb47bJbI285TXaHqn1BbfrmkAvY6SqWTLg+UbKpD0keaN/sFmoQaBwfQKBgQCtcXJDiNBsE6XDsvmrk0OmzJ9MdC/fri9ieqZvWO+Oq5J5VlnVvKmP93T2rK/3c0DySpA8dbBtFgu/au1a9fB0xIxiKgFZC6TAXWtUjf46CWks5UPqD3akwy5ZsWvhFRtugb/fBAq8fyrYA09hbClWh5YQlrHgJe90aU/a2vfQjQKBgQCWqyADlcPf/H+B/jyeajpevx8MFTwJU2bCJpwBq9xxOICBbozjSK2RJPCxbwrSUwvHZcPL9hRgCOF4o2vGP5t0ghNGdMJPUSVypUarL1B7ag76hjjhGQ1KzRy2sz0O74WrBdW2rP79FK3GkXSEaLF4UxtIQpnv1s3GQT6zm6F12g==";
private static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn3F+OpzvomabsyafmGUNrpMhFnBw/AJkJHDQa93vMSl5nk6mjje8/e39HfS/0Y7FQDu1bSA3jEgNpkDwjBpsa2fMMk+QdMb/I/fWQumibx8Mnc3/TjsSNPOP81Gkvz3yX8QRWHJIe+tMfZ51BoljKhSx5FQcHKQ2zq49IMuMi0IFzAgaPGOcvtT7Z3czrYtIpF3cAAj/PzflwfzXm3/5Krtuj71LdeRZeIKuYUXL7REP6/MoUJHvFjmLdWak7Uh+9PqX8lt8MZ0sOv21doMEkDhqrumDoSIPNB3/+nQQgpaekkogqcz5JnfTdJC8SEs79Enhgwisjt2Utb83b73qZQIDAQAB";
private static String ALI_URL="https://openapi.alipay.com/gateway.do";
//固定不变
private final static String ZHI_MA_PRODUCT_CODE="w1010100000000002978";
private final static String CHARSET = "utf-8";
private final static String FORMAT = "json";
private final static String SIGN_TYPE = "RSA2";//目前支持RSA2和RSA,推荐使用RSA2
/**
* 支付宝刷脸实名认证初始化
*
* @return
*/
public static String alipayCertifyInit(String certName, String certNO) throws AlipayApiException {
AlipayClient alipayClient = new DefaultAlipayClient(ALI_URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);
AlipayUserCertifyOpenInitializeRequest request = new AlipayUserCertifyOpenInitializeRequest();
//构造身份信息json对象
JSONObject identityObj = new JSONObject();
//身份类型,必填,详细取值范围请参考接口文档说明
identityObj.put("identity_type", "CERT_INFO");
//证件类型,必填,详细取值范围请参考接口文档说明
identityObj.put("cert_type", "IDENTITY_CARD");
//真实姓名,必填
identityObj.put("cert_name", certName);
//证件号码,必填
identityObj.put("cert_no", certNO);
//构造商户配置json对象
JSONObject merchantConfigObj = new JSONObject();
// 设置回调地址,必填. 如果需要直接在支付宝APP里面打开回调地址使用alipay协议,参考下面的案例:appId用固定值 20000067,url替换为urlEncode后的业务回跳地址
merchantConfigObj.put("return_url", "yohobuyufo://www.yohobuy.com/ufo?pagename=NameAuth&");
//构造身份认证初始化服务业务参数数据
JSONObject bizContentObj = new JSONObject();
//商户请求的唯一标识,推荐为uuid,必填
bizContentObj.put("outer_order_no", UUID.randomUUID());
bizContentObj.put("biz_code", "FACE");
bizContentObj.put("identity_param", identityObj);
bizContentObj.put("merchant_config", merchantConfigObj);
request.setBizContent(bizContentObj.toString());
//发起请求
AlipayUserCertifyOpenInitializeResponse response = alipayClient.execute(request);
if (response.isSuccess()) {
System.out.println("调用成功");
//接口调用成功,从返回对象中获取certify_id
String certifyId = response.getCertifyId();
return certifyId;
//执行后续流程...
} else {
System.out.println("调用失败");
}
return null;
}
public static String alipayCertifyCertify(String certify_id) throws AlipayApiException {
//获取alipay client
AlipayClient alipayClient = new DefaultAlipayClient(ALI_URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);
AlipayUserCertifyOpenCertifyRequest request = new AlipayUserCertifyOpenCertifyRequest();
//设置certifyId
JSONObject bizContentObj = new JSONObject();
bizContentObj.put("certify_id", certify_id);
request.setBizContent(bizContentObj.toString());
//生成请求链接,这里一定要使用GET模式
AlipayUserCertifyOpenCertifyResponse response = alipayClient.pageExecute(request, "GET");
if(response.isSuccess()){
System.out.println("开始认证服务调用成功");
String certifyUrl = response.getBody();
return certifyUrl;
} else {
System.out.println("调用失败");
}
return null;
}
public static AlipayUserCertifyOpenQueryResponse alipayCertifyResult(String certify_id) throws AlipayApiException {
//获取alipay client
AlipayClient alipayClient = new DefaultAlipayClient(ALI_URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);
AlipayUserCertifyOpenQueryRequest request = new AlipayUserCertifyOpenQueryRequest ();
JSONObject bizContentObj = new JSONObject();
bizContentObj.put("certify_id", certify_id);//本次申请操作的唯一标识,由开放认证初始化接口调用后生成
request.setBizContent(bizContentObj.toString());
return alipayClient.execute(request);
}
public static void main(String[] args) throws AlipayApiException {
String certifyId = AlipayCertificationHelper.alipayCertifyInit("邓新飞", "340604198806232218");
String certifyUrl = AlipayCertificationHelper.alipayCertifyCertify(certifyId);
AlipayCertificationHelper.alipayCertifyResult(certifyId);
System.out.println(certifyUrl);
}
}