Java調(diào)用用戶芝麻信用分
本文實(shí)例為大家分享了Java調(diào)用用戶芝麻信用分的具體代碼,供大家參考,具體內(nèi)容如下
1.導(dǎo)入芝麻信用API:zmxy-sdk-java-20180824112425.jar 和 fastjson-1.2.48.jar
2.代碼如下:
package com.zhima;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.antgroup.zmxy.openplatform.api.DefaultZhimaClient;
import com.antgroup.zmxy.openplatform.api.ZhimaApiException;
import com.antgroup.zmxy.openplatform.api.internal.util.RSACoderUtil;
import com.antgroup.zmxy.openplatform.api.request.ZhimaAuthInfoAuthorizeRequest;
import com.antgroup.zmxy.openplatform.api.request.ZhimaAuthInfoAuthqueryRequest;
import com.antgroup.zmxy.openplatform.api.request.ZhimaCreditScoreGetRequest;
import com.antgroup.zmxy.openplatform.api.response.ZhimaAuthInfoAuthqueryResponse;
import com.antgroup.zmxy.openplatform.api.response.ZhimaCreditScoreGetResponse;
public class Demo {
//芝麻開放平臺(tái)地址
private static final String URL = "https://zmopenapi.zmxy.com.cn/openapi.do";
//商戶應(yīng)用 Id
private static final String APPID = "";
//商戶 RSA 私鑰
private static final String PRIKEY = "";
//芝麻 RSA 公鑰
private static final String PUBKEY = "";
//統(tǒng)一字符集
private static final String CHARSET = "UTF-8";
/**
* 查詢授權(quán)信息
*/
public void testZhimaAuthInfoAuthorize() {
ZhimaAuthInfoAuthorizeRequest req = new ZhimaAuthInfoAuthorizeRequest();
req.setIdentityType("2");// 身份標(biāo)識(shí)
req.setChannel("apppc"); // PC端
// 必要參數(shù) state: 用于給商戶提供透?jìng)鞯膮?shù),芝麻會(huì)將此參數(shù)透?jìng)鹘o商戶
req.setBizParams("{\"auth_code\":\"M_APPPC_CERT\",\"state\":\"100111211\"}");
req.setIdentityParam(
"{\"certNo\":\"330621198710114617\",\"certType\":\"IDENTITY_CARD\",\"name\":\"陳金賽\"}");// 必要參數(shù)
DefaultZhimaClient client = new DefaultZhimaClient(URL, APPID, CHARSET, PRIKEY, PUBKEY);
try {
String url = client.generatePageRedirectInvokeUrl(req);
System.out.println(url);
} catch (ZhimaApiException e) {
e.printStackTrace();
}
}
/**
* 獲取目標(biāo)用戶的open_id,沒有openid,走授權(quán)
*/
public void testZhimaAuthInfoReq() {
ZhimaAuthInfoAuthqueryRequest req = new ZhimaAuthInfoAuthqueryRequest();
// 0:芝麻信用開放賬號(hào)ID 1:按照手機(jī)號(hào)進(jìn)行授權(quán) 2:按照身份證+姓名進(jìn)行授權(quán) 3通過公安網(wǎng)驗(yàn)證進(jìn)行授權(quán) 4.通過人臉驗(yàn)證進(jìn)行授權(quán)
req.setIdentityType("2");
req.setIdentityParam(
"{\"certNo\":\"522121198710114617\",\"certType\":\"IDENTITY_CARD\",\"name\":\"但鏡宇\"}");// 必要參數(shù)
DefaultZhimaClient client = new DefaultZhimaClient(URL, APPID, CHARSET, PRIKEY, PUBKEY);
try {
// 如果正常返回,直接在對(duì)象里面獲取結(jié)果值
ZhimaAuthInfoAuthqueryResponse response = client.execute(req);
System.out.println(JSON.toJSON(response));
/* 成功響應(yīng)報(bào)文
{
"authorized": true,
"body": "{\"success\":true,\"authorized\":true,\"open_id\":\"268816231939676969685782895\"}",
"openId": "268816231939676969685782895",
"params": {
"params": "faeSa69w3kOL+ZRAuHykvufu6ogiqxA48l5hzPutKItPy/2HKtdznbzvLhutsY6KTqLgwS/Af1GN1Y7MLh+XDFtjVUf5kF/npUspRkyFUCPpASJAMxeK56vaELnZ4yCVFjVseOBYlCn4YOCZWmBpu02l7IctE6ZP3r1o4HUR+sMQYlYu2xFHfXiqX2g0vdQn81pJ/fcQ4OuBzq1d3c+qniBXf3iESni1m21nMjxeUclzCdZwXWCI1aIYQnDFgVo/58kJ9CTw/6FrffUcP+c6zvzdM8RNCefiGGuF5Vef+C6tck1kBaYoYT6BS5u4ahYteoiG+XJgzLKF+BqAplhq/A=="
},
"success": true
}
// 失敗響應(yīng)報(bào)文
{
"authorized": false,
"body": "{\"success\":true,\"authorized\":false}",
"params": {
"params": "lGYId9CaU8McGDd8U0ZMM8Pky1/ulOE44LkgGcrWrdzmEtU1JBT5M+Jjd5e27bz45d/CNEqbwmwtg3VsozZTol42YKNi+MYzvvyZEOsUT9F68qiIPxxlOv3vGJsUpB+LJMOI8ZU7eXtHoCnbarQSOvtSylilp6dpIbAIYxbPPvSkj+7f1TiSne/7Re/XZ1qVVM18yTJyleCr+WlOe7o59lZAoiZ5bDoP2ta8MIjwlxz4/1d+IYe0f2BoZQa/9oDqJZ0MNQ0iPCbhqBKRuShPCQe8afEyOTTI0p+cROjwWTz0dwP7QXnkWBvzX3hrWXImdk7JszOVoSxAAAfwcVXNxw=="
},
"success": true
} */
} catch (ZhimaApiException e) {
e.printStackTrace();
}
}
/**
* 測(cè)試查詢芝麻分
* @throws ZhimaApiException
*/
public static void testQueryScore() throws ZhimaApiException {
ZhimaCreditScoreGetRequest creditScoreGetRequest = new ZhimaCreditScoreGetRequest();
creditScoreGetRequest.setPlatform("zmop"); // 開放平臺(tái),zmop代表芝麻開放平臺(tái)
creditScoreGetRequest.setChannel("apppc"); // pc端
//transactionId,該標(biāo)記是商戶每次請(qǐng)求的唯一標(biāo)識(shí)。建議使用uuid進(jìn)行傳遞,
creditScoreGetRequest.setTransactionId(UUID.randomUUID().toString());
creditScoreGetRequest.setProductCode("w1010100100000000001"); // 商戶配置那塊兒的產(chǎn)品Code
creditScoreGetRequest.setOpenId("268816113399909561399995894"); // appid,每個(gè)人的標(biāo)識(shí)
DefaultZhimaClient client = new DefaultZhimaClient(URL, APPID, CHARSET, PRIKEY, PUBKEY);
// 如果正常返回,直接在對(duì)象里面獲取結(jié)果值
ZhimaCreditScoreGetResponse creditScoreGetResponse = client.execute(creditScoreGetRequest);
System.out.println(JSON.toJSON(creditScoreGetResponse));
/* 成功查詢響應(yīng)報(bào)文
{
"bizNo": "ZM20160120014501763890a37b16614532255017521309",
"body": "{\"success\":true,\"biz_no\":\"ZM20160120014501763890a37b16614532255017521309\",\"zm_score\":751}",
"params": {
"params": "aqiMCUg1VbZRqflPyVyLKgxShcvc3WoWLTFewqA9PvQjp6yuC99lYlGdr/Bf2FevQ2zemdPTixqQWnO7qdz0pT2x4VFWVJdldPgLVsRr37qWDcO5NjvNZzOuEYozzGSnzwhTyelqglAdzOOepM0ows+7sNVJriABtRdt1HH8gqc="
},
"success": true,
"zmScore": "751"
}
// 失敗查詢響應(yīng)報(bào)文
{
"body": "{\"success\":false,\"error_code\":\"ZMCREDIT.api_product_not_match\",\"error_message\":\"輸入的產(chǎn)品碼不正確\"}",
"errorCode": "ZMCREDIT.api_product_not_match",
"errorMessage": "輸入的產(chǎn)品碼不正確",
"params": {
"params": "vJTcbtVvo0/WEG01Flve0//EbE70clk7v84B7MVJZH59/HefdyAZ1JG4opTna5ANWvY8UArsGlVIAQ+9K0169ARyJ2yoGs+0Z/fHmrXmWNNqOpcuV56A1xX6E+VOpUth8Z8RqPFKnEq4/rFJRKPA9Uhue2KM9yj6hsAbF0ZXU74="
},
"success": false
} */
}
/**
* 自動(dòng)生成頁面授權(quán)的url
* @throws Exception
*/
public static void testPageAuth() throws Exception {
ZhimaAuthInfoAuthorizeRequest authInfoAuthorizeRequest = new ZhimaAuthInfoAuthorizeRequest();
authInfoAuthorizeRequest.setChannel("apppc"); // PC端
authInfoAuthorizeRequest.setPlatform("zmop"); // 開放平臺(tái)
// 0:芝麻信用開放賬號(hào)ID 1:按照手機(jī)號(hào)進(jìn)行授權(quán) 2:按照身份證+姓名進(jìn)行授權(quán) 3通過公安網(wǎng)驗(yàn)證進(jìn)行授權(quán) 4.通過人臉驗(yàn)證進(jìn)行授權(quán)
authInfoAuthorizeRequest.setIdentityType("2");
Map<String, String> identityParams = new HashMap<String, String>();
identityParams.put("certNo", "61042619850403354X"); // 證件號(hào)碼
identityParams.put("name", "張三"); // 姓名
identityParams.put("certType", "IDENTITY_CARD"); // 證件類型
authInfoAuthorizeRequest.setIdentityParam(JSONObject.toJSONString(identityParams));
DefaultZhimaClient client = new DefaultZhimaClient(URL, APPID, CHARSET, PRIKEY, PUBKEY);
String pageAuthUrl = client.generatePageRedirectInvokeUrl(authInfoAuthorizeRequest);
System.out.println(pageAuthUrl);
}
/**
* 獲取芝麻分(GET方式)
*/
public void testZhimaCreditWatchlistGet() {
ZhimaCreditScoreGetRequest req = new ZhimaCreditScoreGetRequest();
req.setProductCode("w1010100100000000001");// 必要參數(shù)
req.setOpenId("268816231939676969685782895");// 必要參數(shù)
DefaultZhimaClient client = new DefaultZhimaClient(URL, APPID, CHARSET, PRIKEY, PUBKEY);
try {
// 如果正常返回,直接在對(duì)象里面獲取結(jié)果值
ZhimaCreditScoreGetResponse response = client.execute(req);
System.out.println(JSON.toJSON(response));
} catch (ZhimaApiException e) {
e.printStackTrace();
}
}
/**
* 處理回調(diào)后的參數(shù),然后解密params
* @param url 例如:http://xxxx.comparams%3Dxxxxx% ... xxxxx
* @throws Exception
*/
public static void parseFromReturnUrl(String url) throws Exception {
int index = url.indexOf("");
String urlParamString = url.substring(index + 1);
String[] paraPairs = urlParamString.split("&");
String encryptedParam = "";
for (String paramPair : paraPairs) {
String[] splits = paramPair.split("=");
if ("params".equals(splits[0])) {
encryptedParam = splits[1];
}
}
String decryptedParam = RSACoderUtil.decrypt(URLDecoder.decode(encryptedParam, CHARSET),
PRIKEY, CHARSET);
//通過瀏覽器返回時(shí),不需要decode
System.out.println(URLDecoder.decode(decryptedParam, CHARSET));
/* params主要JSON參數(shù)如下:
名稱 類型 示例值 備注
success String success 請(qǐng)求成功還是失敗的標(biāo)識(shí)
error_code String 000001 失敗時(shí)的錯(cuò)誤碼
error_message String 缺少appId 失敗時(shí)的錯(cuò)誤信息
open_id String 26881... 芝麻業(yè)務(wù)id
state String 239... 商戶透?jìng)鞯闹?,芝麻不做解?
*/
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
分析Java非阻塞算法Lock-Free的實(shí)現(xiàn)
非阻塞算法一般會(huì)使用CAS來協(xié)調(diào)線程的操作。雖然非阻塞算法有諸多優(yōu)點(diǎn),但是在實(shí)現(xiàn)上要比基于鎖的算法更加繁瑣和負(fù)責(zé)。本文將會(huì)介紹兩個(gè)是用非阻塞算法實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)。2021-06-06
Java獲取當(dāng)前操作系統(tǒng)的信息實(shí)例代碼
這篇文章主要介紹了Java獲取當(dāng)前操作系統(tǒng)的信息實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
Java設(shè)計(jì)模式七大原則之接口隔離原則詳解
接口隔離原則(Interface Segregation Principle),又稱為ISP原則,就是在一個(gè)類中不要定義過多的方法,接口應(yīng)該盡量簡(jiǎn)單細(xì)化。本文將為大家具體介紹一下Java設(shè)計(jì)模式七大原則之一的接口隔離原則,需要的可以參考一下2022-02-02
Java中finally和return的關(guān)系實(shí)例解析
這篇文章主要介紹了Java中finally和return的關(guān)系實(shí)例解析,總結(jié)了二者的關(guān)系,然后分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02
Struts2中圖片以base64方式上傳至數(shù)據(jù)庫
這篇文章主要介紹了Struts2中圖片以base64方式上傳至數(shù)據(jù)庫的實(shí)現(xiàn)代碼,代碼分為前臺(tái)和后臺(tái)兩段,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
Java開發(fā)框架spring實(shí)現(xiàn)自定義緩存標(biāo)簽
這篇文章主要介紹了Java開發(fā)框架spring實(shí)現(xiàn)自定義緩存標(biāo)簽的詳細(xì)代碼,感興趣的小伙伴們可以參考一下2015-12-12

