ab
2024-11-05 bead00668eebce8d39d027515d564376de2f5978
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
package com.nova.sankuai.domain.api.yixin;
 
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.common.base.Charsets;
import com.google.common.hash.Hashing;
import com.nova.sankuai.security.HttpClientUtil;
import org.apache.http.util.TextUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
import java.io.IOException;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
public class TXOcrUtil {
 
    //授权链接
    public static String authUrl = "https://miniprogram-kyc.tencentcloudapi.com/api/oauth2/access_token";
 
    public static String ticketUrl = "https://miniprogram-kyc.tencentcloudapi.com/api/oauth2/api_ticket";
 
    public static String getFaceIdUrl = "https://miniprogram-kyc.tencentcloudapi.com/api/server/getfaceid";
 
    private static final Logger systemLogger = LoggerFactory.getLogger("systemLogger");
 
 
    /**
     * 获取 人脸AccessToken
     *
     * @return
     */
    public static String getAccessToken(String appId, String secret) throws IOException {
        systemLogger.info("zbb378 getAccessToken:{}", authUrl + "?app_id=" + appId + "&secret=" + secret + "&grant_type=client_credential&version=1.0.0");
        return HttpClientUtil.getInstance().get(authUrl + "?app_id=" + appId + "&secret=" + secret + "&grant_type=client_credential&version=1.0.0");
    }
 
    /**
     * 获取 人脸TicketInfo
     *
     * @return
     */
    public static String getSignTicket(String appId, String accessToken) throws IOException {
        systemLogger.info("zbb378 getSignTicket:{}", ticketUrl + "?app_id=" + appId + "&access_token=" + accessToken + "&type=SIGN&version=1.0.0");
        String result = HttpClientUtil.getInstance().get(ticketUrl + "?app_id=" + appId + "&access_token=" + accessToken + "&type=SIGN&version=1.0.0");
        systemLogger.info("zbb378 getSignTicket result:{}", result);
        if (!TextUtils.isEmpty(result)) {
            JSONObject jsonObject = JSON.parseObject(result);
            if (jsonObject.getString("code").equals("0")) {
                JSONArray jsonArray=jsonObject.getJSONArray("tickets");
                if(jsonArray.size()>0) {
                    return jsonArray.getJSONObject(0).getString("value");
                }
            }
        }
        return null;
    }
 
 
    public static String getNonceTicket(String appId, String accessToken, String userId) throws IOException {
        systemLogger.info("zbb378 getNonceTicket:{}", ticketUrl + "?app_id=" + appId + "&access_token=" + accessToken + "&type=NONCE&version=1.0.0&user_id=" + userId);
        String result = HttpClientUtil.getInstance().get(ticketUrl + "?app_id=" + appId + "&access_token=" + accessToken + "&type=NONCE&version=1.0.0&user_id=" + userId);
        systemLogger.info("zbb378 getNonceTicket result:{}", result);
 
        if (!TextUtils.isEmpty(result)) {
            JSONObject jsonObject = JSON.parseObject(result);
            if (jsonObject.getString("code").equals("0")) {
                JSONArray jsonArray=jsonObject.getJSONArray("tickets");
                if(jsonArray.size()>0) {
                    return jsonArray.getJSONObject(0).getString("value");
                }
            }
        }
        return null;
    }
 
 
    /**
     * 获取faceId
     *
     * @param appId
     * @param userId
     * @param sign
     * @param name
     * @param IdNo
     * @return
     */
    public static String getFaceId(String appId, String order,String userId, String sign, String name, String IdNo,String nonce) throws Exception {
        Map<String, String> param = new HashMap<>();
        param.put("orderNo", order);
        param.put("webankAppId", appId);
        param.put("version", "1.0.0");
        param.put("userId", userId);
        param.put("sign", sign);
        param.put("name", name);
        param.put("idNo", IdNo);
        param.put("nonce",nonce);
        systemLogger.info("zbb378 getFaceId:{}", getFaceIdUrl+"?orderNo="+order, JSON.toJSONString(param));
        String result = HttpClientUtil.getInstance().postJsonData(getFaceIdUrl+"?orderNo="+order, JSON.toJSONString(param));
        systemLogger.info("zbb378 getFaceId result:{}", result);
        if (!TextUtils.isEmpty(result)) {
            JSONObject jsonObject = JSON.parseObject(result);
            if (jsonObject.getString("code").equals("0")) {
                String faceId = jsonObject.getJSONObject("result").getString("faceId");
                return faceId;
            }
        }
        return null;
    }
 
 
    public static String sign(List<String> values, String ticket) {
        if (values == null) {
            throw new NullPointerException("values is null");
        }
        values.removeAll(Collections.singleton(null));// remove null
        values.add(ticket);
        Collections.sort(values);
        System.out.print(values);
        StringBuilder sb = new StringBuilder();
        for (String s : values) {
            sb.append(s);
        }
        return Hashing.sha1().hashString(sb, Charsets.UTF_8).toString().toUpperCase();
    }
 
}