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();
|
}
|
|
}
|