Pu Zhibing
7 天以前 67661bc77e73ccfe6c68a049e730d4165401becd
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/zhenglian/ZhengLianUtil.java
@@ -56,12 +56,14 @@
      headerMap.put("encrp", "1");
      headerMap.put("encrpNo", zhengLianConfig.getEncrpNo());
      headerMap.put("timestamp", sdf.format(new Date()));
      log.info("【证联获取用户信息】请求头报文:"+JSON.toJSONString(headerMap));
      
      Map<String, Object> map = new HashMap<>();
      map.put("appId", zhengLianConfig.getAppid());
      map.put("appUserId", appUserId);
      map.put("tradeTerminalInfo", tradeTerminalInfo);
      String reqBO = JSON.toJSONString(map);
      log.info("【证联获取用户信息】请求体报文:"+reqBO);
      // 生成对称加密秘钥
      String key = ZhengLianUtil.generateKey(16);
      // 加密数据
@@ -75,25 +77,26 @@
      body.setData(jsonData);
      body.setSign(ZhengLianUtil.sign(jsonData));
      body.setSecret(secrtKey);
      log.info("【证联获取用户信息】请求体密文报文:"+JSON.toJSONString(body));
      String result = ZLHttpClientUtil.doPost(zhengLianConfig.getUrl(), headerMap, JSON.toJSONString(body));
      
      System.out.println("应答内容:"+ result);
      log.info("【证联获取用户信息】应答内容:"+ result);
      MessageBody respBody = JSON.parseObject(result,MessageBody.class);
      // 验签
      boolean checkResult = SM2Util.verify(publicKey, zhengLianConfig.getEncrpNo(), respBody.getSign(), respBody.getData());
      System.out.println("验签结果:" + checkResult);
      log.info("【证联获取用户信息】验签结果:" + checkResult);
      // 获取私钥
      String privateKey = ZhengLianUtil.getPrivateKey();
      // 解密对称秘钥
      String k = SM2Util.decrypt(privateKey, respBody.getSecret());
      System.out.println("对称秘钥:" + k);
      log.info("【证联获取用户信息】对称秘钥:" + k);
      // 解密业务报文
      String backData = SM4Util.sm4EcbDecrypt(k, respBody.getData());
      System.out.println("返回业务报文:" + backData);
      log.info("【证联获取用户信息】返回业务报文:" + backData);
      JSONObject jsonObject = JSON.parseObject(backData);
      String sysRtnCode = jsonObject.getString("sysRtnCode");
      if(!"000000".equals(sysRtnCode)){
         log.error("查询用户信息失败!{}", jsonObject.getString("sysRtnMsg"));
         log.error("【证联获取用户信息】查询用户信息失败!{}", jsonObject.getString("sysRtnMsg"));
         throw new Exception(jsonObject.getString("sysRtnMsg"));
      }
      JSONObject bizData = jsonObject.getJSONObject("bizData");
@@ -102,7 +105,7 @@
         return null;
      }
      if(!"S010000".equals(resCode)){
         log.error("查询用户信息失败!{}", bizData.getString("resMsg"));
         log.error("【证联获取用户信息】查询用户信息失败!{}", bizData.getString("resMsg"));
         throw new Exception(jsonObject.getString("resMsg"));
      }
      JSONObject resData = bizData.getJSONObject("resData");