WxUtils.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package com.pj.api.wx;
  2. import cn.hutool.core.util.StrUtil;
  3. import cn.hutool.core.util.XmlUtil;
  4. import cn.hutool.crypto.SecureUtil;
  5. import com.pj.current.config.WxConfig;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.springframework.stereotype.Component;
  8. import javax.annotation.Resource;
  9. import javax.servlet.http.HttpServletRequest;
  10. import java.io.BufferedReader;
  11. import java.io.InputStream;
  12. import java.io.InputStreamReader;
  13. import java.nio.charset.StandardCharsets;
  14. import java.util.*;
  15. @Component
  16. @Slf4j
  17. public class WxUtils {
  18. public String sign(final Map<String, String> data,String key) {
  19. Set<String> keySet = data.keySet();
  20. String[] keyArray = keySet.toArray(new String[0]);
  21. Arrays.sort(keyArray);
  22. StringBuilder sb = new StringBuilder();
  23. for (String k : keyArray) {
  24. if (k.equals("sign")) {
  25. continue;
  26. }
  27. if (StrUtil.isNotEmpty(data.get(k))){
  28. sb.append(k).append("=").append(data.get(k).trim()).append("&");
  29. }
  30. }
  31. sb.append("key=").append(key);
  32. log.info("wx pay sign str:{}",sb.toString());
  33. return SecureUtil.md5(sb.toString()).toUpperCase();
  34. }
  35. public Map<String, Object> msgToMap(HttpServletRequest request) throws Exception {
  36. // 处理接收消息
  37. InputStream inputStream = request.getInputStream();
  38. // 将流转换为字符串
  39. StringBuilder xmlMsg = new StringBuilder();
  40. String s;
  41. BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
  42. while ((s = in.readLine()) != null) {
  43. xmlMsg.append(s);
  44. }
  45. in.close();
  46. inputStream.close();
  47. return XmlUtil.xmlToMap(xmlMsg.toString());
  48. }
  49. }