| | |
| | | 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); |
| | | // 加密数据 |
| | |
| | | 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"); |
| | |
| | | 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"); |