import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* 获取用户风险等级
*/
@Slf4j
public class GetUserRiskLevelDemo {
public static void main(String[] args) throws IOException {
// 获取用户风险等级的接口URL
String url = "592K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2j5$3y4G2N6h3&6@1i4K6u0W2j5$3I4G2N6h3c8Q4x3X3g2Z5N6h3q4%4k6h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6#2M7$3g2J5i4K6u0r3k6$3g2@1N6i4y4W2M7Y4u0A6M7$3E0D9k6i4k6W2L8l9`.`.";
// 替换为您实际的Client ID
String clientID = "<Client ID>";
// 替换为您实际的transactionID
String transactionID = "<transactionID>";
// 替换为您实际的获取到的用户级凭证Access Token
String accessToken = "<Access Token>";
// 替换为您实际的scene
String scene = "<scene>";
JSONObject result = getUserRiskLevel(url, clientID, transactionID, accessToken, scene);
// 解析获取errCode
Integer errCode = result.getInteger("errCode");
// 解析获取errMsg
String errMsg = result.getString("errMsg");
// 解析获取riskLevel
Integer riskLevel = result.getInteger("riskLevel");
// 解析获取riskTag
JSONArray riskTag = result.getJSONArray("riskTag");
}
private static JSONObject getUserRiskLevel(String url, String clientID, String transactionID,
String accessToken, String scene) throws IOException {
HttpPost httpPost = new HttpPost(url + "?" + "clientID=" + clientID + "&transactionID=" + transactionID);
Map<String, String> reqBody = new HashMap<>();
reqBody.put("accessToken", accessToken);
reqBody.put("scene", scene);
httpPost.setHeader("Content-Type", "application/json;charset=utf-8");
httpPost.setEntity(CallUtils.wrapJsonEntity(reqBody));
return CallUtils.toJsonObject(CallUtils.remoteCall(httpPost, (CloseableHttpResponse response, String rawBody) -> {
int statusCode = response.getStatusLine().getStatusCode();
// http状态码不是200,请求失败
if (statusCode != 200) {
return new IOException("call failed! http status code: " + statusCode + ", response data: " + rawBody);
}
// http状态码为200,解析响应的body,判断业务错误码
JSONObject errorResponseBody = CallUtils.toJsonObject(rawBody);
// 错误码
Integer errCode = errorResponseBody.getInteger("errCode");
// errCode为0表示成功,非0表示失败
if (Objects.nonNull(errCode) && errCode != 0) {
return new IOException("call failed! http status code: " + statusCode + ", response data: " + rawBody);
}
return null;
}));
}
}