SignUtils.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package com.zjrs.ggfw.dzsbk.util;
  2. //import com.alibaba.csb.sdk.security.SignUtil;
  3. import com.alibaba.fastjson.JSON;
  4. import com.zjrs.ggfw.dzsbk.dto.PropertyDTO;
  5. import com.zjrs.ggfw.dzsbk.dto.SignDTO;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. import java.net.URLEncoder;
  9. import java.util.HashMap;
  10. import java.util.Map;
  11. /**
  12. * Created by Kevin on 2018/6/7.
  13. */
  14. public class SignUtils {
  15. private static final Logger LOG = LoggerFactory.getLogger(SignUtils.class);
  16. static String CHARSET_UTF_8 = "UTF-8";
  17. public static String sign(PropertyDTO propertyDTO,SignDTO signDTO) throws Exception {
  18. // 组装签名需要的参数
  19. Map<String, String> result = new HashMap<>();
  20. result.put("_api_name", "get_token");
  21. result.put("_api_version", "1.0.0");
  22. result.put("_api_access_key", propertyDTO.getAk());
  23. result.put("api_access_key", propertyDTO.getAk());
  24. result.put("_api_timestamp", System.currentTimeMillis() + "");
  25. result.put("return_url", signDTO.getReturnUrl());
  26. //自定义参数
  27. signDTO.setReturnUrl(null);
  28. signDTO.setChannelNo(propertyDTO.getChannelNo());//渠道号必录
  29. String bodyJson = JSON.toJSONString(signDTO);
  30. LOG.info("====sign自定义参数===="+bodyJson);
  31. //对请求参数进行DES3加密
  32. result.put("security", AESUtils.encrypt(bodyJson, propertyDTO.getDk()));
  33. //签名
  34. // String sign = SignUtil.sign(result, propertyDTO.getSk());
  35. // result.put("_api_signature", URLEncoder.encode(sign, CHARSET_UTF_8));
  36. // 签名之后对security和returnUrl进行URLEncoder,注意,一定要在签名后再URLEncoder
  37. result.put("security", URLEncoder.encode(result.get("security"), CHARSET_UTF_8));
  38. result.put("return_url", URLEncoder.encode(result.get("return_url"), CHARSET_UTF_8));
  39. // 将各签名参数拼接成一个字符串返回
  40. StringBuffer sb = new StringBuffer();
  41. result.entrySet().stream().forEach(es -> sb.append("&").append(es.getKey()).append("=").append(es.getValue()));
  42. String urlParams = sb.substring(1).toString();
  43. return urlParams;
  44. }
  45. }