Java调用用户芝麻信用分

 更新时间:2018年11月16日 08:38:31   作者:小编学IT  
这篇文章主要为大家详细介绍了Java调用用户芝麻信用分,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java调用用户芝麻信用分的具体代码,供大家参考,具体内容如下

1.导入芝麻信用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 {

 //芝麻开放平台地址

 private static final String URL  = "https://zmopenapi.zmxy.com.cn/openapi.do";

 //商户应用 Id

 private static final String APPID = "";

 //商户 RSA 私钥

 private static final String PRIKEY = "";

 //芝麻 RSA 公钥

 private static final String PUBKEY = "";

 //统一字符集

 private static final String CHARSET = "UTF-8";

 /**
 
  * 查询授权信息
 
  */

 public void testZhimaAuthInfoAuthorize() {

  ZhimaAuthInfoAuthorizeRequest req = new ZhimaAuthInfoAuthorizeRequest();

  req.setIdentityType("2");// 身份标识

  req.setChannel("apppc"); // PC端

  // 必要参数 state: 用于给商户提供透传的参数,芝麻会将此参数透传给商户

  req.setBizParams("{\"auth_code\":\"M_APPPC_CERT\",\"state\":\"100111211\"}");

  req.setIdentityParam(
   "{\"certNo\":\"330621198710114617\",\"certType\":\"IDENTITY_CARD\",\"name\":\"陈金赛\"}");// 必要参数  

  DefaultZhimaClient client = new DefaultZhimaClient(URL, APPID, CHARSET, PRIKEY, PUBKEY);

  try {

   String url = client.generatePageRedirectInvokeUrl(req);

   System.out.println(url);

  } catch (ZhimaApiException e) {

   e.printStackTrace();

  }

 }

 /**
 
  * 获取目标用户的open_id,没有openid,走授权
 
  */

 public void testZhimaAuthInfoReq() {

  ZhimaAuthInfoAuthqueryRequest req = new ZhimaAuthInfoAuthqueryRequest();

  // 0:芝麻信用开放账号ID 1:按照手机号进行授权 2:按照身份证+姓名进行授权 3通过公安网验证进行授权 4.通过人脸验证进行授权

  req.setIdentityType("2");

  req.setIdentityParam(
   "{\"certNo\":\"522121198710114617\",\"certType\":\"IDENTITY_CARD\",\"name\":\"但镜宇\"}");// 必要参数  

  DefaultZhimaClient client = new DefaultZhimaClient(URL, APPID, CHARSET, PRIKEY, PUBKEY);

  try {

   // 如果正常返回,直接在对象里面获取结果值

   ZhimaAuthInfoAuthqueryResponse response = client.execute(req);

   System.out.println(JSON.toJSON(response));

   /* 成功响应报文
   {
    
     "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
    
   }
    
   // 失败响应报文
    
   {
    
     "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();

  }

 }

 /**
 
  * 测试查询芝麻分
 
  * @throws ZhimaApiException 
 
  */

 public static void testQueryScore() throws ZhimaApiException {

  ZhimaCreditScoreGetRequest creditScoreGetRequest = new ZhimaCreditScoreGetRequest();

  creditScoreGetRequest.setPlatform("zmop"); // 开放平台,zmop代表芝麻开放平台

  creditScoreGetRequest.setChannel("apppc"); // pc端

  //transactionId,该标记是商户每次请求的唯一标识。建议使用uuid进行传递,

  creditScoreGetRequest.setTransactionId(UUID.randomUUID().toString());

  creditScoreGetRequest.setProductCode("w1010100100000000001"); // 商户配置那块儿的产品Code

  creditScoreGetRequest.setOpenId("268816113399909561399995894"); // appid,每个人的标识

  DefaultZhimaClient client = new DefaultZhimaClient(URL, APPID, CHARSET, PRIKEY, PUBKEY);

  // 如果正常返回,直接在对象里面获取结果值

  ZhimaCreditScoreGetResponse creditScoreGetResponse = client.execute(creditScoreGetRequest);

  System.out.println(JSON.toJSON(creditScoreGetResponse));

  /* 成功查询响应报文
   
  {
   
    "bizNo": "ZM20160120014501763890a37b16614532255017521309",
    
    "body": "{\"success\":true,\"biz_no\":\"ZM20160120014501763890a37b16614532255017521309\",\"zm_score\":751}",
    
    "params": {
    
    "params": "aqiMCUg1VbZRqflPyVyLKgxShcvc3WoWLTFewqA9PvQjp6yuC99lYlGdr/Bf2FevQ2zemdPTixqQWnO7qdz0pT2x4VFWVJdldPgLVsRr37qWDcO5NjvNZzOuEYozzGSnzwhTyelqglAdzOOepM0ows+7sNVJriABtRdt1HH8gqc="
    
    },
    
    "success": true,
    
    "zmScore": "751"
   
   }
   
   // 失败查询响应报文
   
   {
   
    "body": "{\"success\":false,\"error_code\":\"ZMCREDIT.api_product_not_match\",\"error_message\":\"输入的产品码不正确\"}",
    
    "errorCode": "ZMCREDIT.api_product_not_match",
    
    "errorMessage": "输入的产品码不正确",
    
    "params": {
    
     "params": "vJTcbtVvo0/WEG01Flve0//EbE70clk7v84B7MVJZH59/HefdyAZ1JG4opTna5ANWvY8UArsGlVIAQ+9K0169ARyJ2yoGs+0Z/fHmrXmWNNqOpcuV56A1xX6E+VOpUth8Z8RqPFKnEq4/rFJRKPA9Uhue2KM9yj6hsAbF0ZXU74="
    
    },
    
    "success": false
   
   } */

 }

 /**
 
  * 自动生成页面授权的url
 
  * @throws Exception
 
  */

 public static void testPageAuth() throws Exception {

  ZhimaAuthInfoAuthorizeRequest authInfoAuthorizeRequest = new ZhimaAuthInfoAuthorizeRequest();

  authInfoAuthorizeRequest.setChannel("apppc"); // PC端

  authInfoAuthorizeRequest.setPlatform("zmop"); // 开放平台

  // 0:芝麻信用开放账号ID 1:按照手机号进行授权 2:按照身份证+姓名进行授权 3通过公安网验证进行授权 4.通过人脸验证进行授权

  authInfoAuthorizeRequest.setIdentityType("2");

  Map<String, String> identityParams = new HashMap<String, String>();

  identityParams.put("certNo", "61042619850403354X"); // 证件号码

  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");// 必要参数  

  req.setOpenId("268816231939676969685782895");// 必要参数  

  DefaultZhimaClient client = new DefaultZhimaClient(URL, APPID, CHARSET, PRIKEY, PUBKEY);

  try {

   // 如果正常返回,直接在对象里面获取结果值

   ZhimaCreditScoreGetResponse response = client.execute(req);

   System.out.println(JSON.toJSON(response));

  } catch (ZhimaApiException e) {

   e.printStackTrace();

  }

 }

 /**
 
  * 处理回调后的参数,然后解密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);

  //通过浏览器返回时,不需要decode

  System.out.println(URLDecoder.decode(decryptedParam, CHARSET));

  /* params主要JSON参数如下:
   
     名称           类型     示例值      备注
   
  success    String success  请求成功还是失败的标识
   
  error_code   String 000001  失败时的错误码
   
  error_message  String 缺少appId  失败时的错误信息
   
  open_id    String 26881...  芝麻业务id
   
  state    String 239...  商户透传的值,芝麻不做解析
   
  */

 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 了解Java线程池执行原理

    了解Java线程池执行原理

    那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样的效果。下面我们来详细了解一下吧
    2019-05-05
  • 关于Intellij IDEA中的Version Control问题

    关于Intellij IDEA中的Version Control问题

    这篇文章主要介绍了Intellij IDEA中的Version Control问题,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • springboot中事务管理@Transactional的注意事项与使用场景

    springboot中事务管理@Transactional的注意事项与使用场景

    今天小编就为大家分享一篇关于springboot中事务管理@Transactional的注意事项与使用场景,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • hibernate4基本配置方式详解

    hibernate4基本配置方式详解

    这篇文章给大家带来了hibernate4基本配置方式,非常不错,具有参考借鉴价值,需要的额朋友参考下吧
    2017-09-09
  • IDEA中的yml文件与properties互相转换

    IDEA中的yml文件与properties互相转换

    这篇文章主要介绍了IDEA中的yml文件与properties互相转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 将本地SpringBoot项目发布到云服务器的方法

    将本地SpringBoot项目发布到云服务器的方法

    这篇文章主要介绍了如何将本地SpringBoot项目发布到云服务器,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Java中的泛型详解

    Java中的泛型详解

    这篇文章主要介绍了Java中的泛型详解,本文讲解了泛型类或接口、从泛型类派生子类、伪泛型、类型通配符、通配符的上限、通配符的下限、擦除和转换等内容,需要的朋友可以参考下
    2015-04-04
  • Java中switch的三种用法方式

    Java中switch的三种用法方式

    这篇文章主要介绍了Java中switch的三种用法方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • SpringBoot实战之高效使用枚举参数(原理篇)案例详解

    SpringBoot实战之高效使用枚举参数(原理篇)案例详解

    这篇文章主要介绍了SpringBoot实战之高效使用枚举参数(原理篇)案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • Java分页查询的几种实现方法举例

    Java分页查询的几种实现方法举例

    这篇文章主要给大家介绍了关于Java分页查询的几种实现方法,分页是系统中常用到的功能,只要涉及到查询必定伴随而来的就是分页,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06

最新评论