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 { //芝麻開(kāi)放平臺(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,沒(méi)有openid,走授權(quán) */ public void testZhimaAuthInfoReq() { ZhimaAuthInfoAuthqueryRequest req = new ZhimaAuthInfoAuthqueryRequest(); // 0:芝麻信用開(kāi)放賬號(hào)ID 1:按照手機(jī)號(hào)進(jìn)行授權(quán) 2:按照身份證+姓名進(jìn)行授權(quán) 3通過(guò)公安網(wǎng)驗(yàn)證進(jìn)行授權(quán) 4.通過(guò)人臉驗(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"); // 開(kāi)放平臺(tái),zmop代表芝麻開(kāi)放平臺(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)生成頁(yè)面授權(quán)的url * @throws Exception */ public static void testPageAuth() throws Exception { ZhimaAuthInfoAuthorizeRequest authInfoAuthorizeRequest = new ZhimaAuthInfoAuthorizeRequest(); authInfoAuthorizeRequest.setChannel("apppc"); // PC端 authInfoAuthorizeRequest.setPlatform("zmop"); // 開(kāi)放平臺(tái) // 0:芝麻信用開(kāi)放賬號(hào)ID 1:按照手機(jī)號(hào)進(jìn)行授權(quán) 2:按照身份證+姓名進(jìn)行授權(quán) 3通過(guò)公安網(wǎng)驗(yàn)證進(jìn)行授權(quán) 4.通過(guò)人臉驗(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"); // 證件類(lèi)型 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); //通過(guò)瀏覽器返回時(shí),不需要decode System.out.println(URLDecoder.decode(decryptedParam, CHARSET)); /* params主要JSON參數(shù)如下: 名稱(chēng) 類(lèi)型 示例值 備注 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)文章
詳解SpringMVC的url-pattern配置及原理剖析
這篇文章主要介紹了SpringMVC的url-pattern配置及原理剖析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06JDBC實(shí)現(xiàn)數(shù)據(jù)庫(kù)增刪改查功能
這篇文章主要為大家詳細(xì)介紹了JDBC實(shí)現(xiàn)數(shù)據(jù)庫(kù)增刪改查功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07java多線程事務(wù)加鎖引發(fā)bug用戶重復(fù)注冊(cè)解決分析
這篇文章主要為大家介紹了java多線程事務(wù)加鎖引發(fā)bug用戶重復(fù)注冊(cè)解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11Java數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之二叉樹(shù)
今天給大家?guī)?lái)的是關(guān)于Java數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識(shí),文章圍繞著Java二叉樹(shù)展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06基于mybatis-plus QueryWrapper 排序的坑
這篇文章主要介紹了mybatis-plus QueryWrapper 排序的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01IDEA找不到database圖標(biāo)的簡(jiǎn)單圖文解決方法
idea是一個(gè)功能十分強(qiáng)大的IDE,大家在使用他進(jìn)行開(kāi)發(fā)時(shí)候,必不可少的就是連接數(shù)據(jù)庫(kù)了,這篇文章主要給大家介紹了關(guān)于IDEA找不到database圖標(biāo)的解決方法,需要的朋友可以參考下2024-07-07Java類(lèi)的初始化順序的實(shí)現(xiàn)
類(lèi)的初始化過(guò)程是在類(lèi)加載階段完成的,包括加載、驗(yàn)證、準(zhǔn)備、解析和初始化等步驟,本文主要介紹了Java類(lèi)的初始化順序的實(shí)現(xiàn),感興趣的可以了解一下2023-12-12Spring?Boot中@Import三種使用方式實(shí)例詳解
這篇文章主要介紹了Spring?Boot中@Import三種使用方式,主要有引入普通類(lèi),引入importSelector的實(shí)現(xiàn)類(lèi)及引入importBeanDefinitionRegister的實(shí)現(xiàn)類(lèi),結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下2022-11-11