JhService.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package com.pj.api.jh.service;
  2. import cn.hutool.core.util.NumberUtil;
  3. import cn.hutool.core.util.RandomUtil;
  4. import cn.hutool.core.util.StrUtil;
  5. import cn.hutool.crypto.SecureUtil;
  6. import cn.hutool.http.HttpUtil;
  7. import cn.hutool.json.JSONObject;
  8. import cn.hutool.json.JSONUtil;
  9. import com.pj.api.jh.MerchantApiUtil;
  10. import com.pj.api.wx.WxUtils;
  11. import com.pj.api.wx.bo.Attach;
  12. import com.pj.api.wx.service.WxService;
  13. import com.pj.current.config.JhConfig;
  14. import com.pj.current.config.MyConfig;
  15. import com.pj.current.config.WxConfig;
  16. import lombok.extern.slf4j.Slf4j;
  17. import org.springframework.stereotype.Service;
  18. import org.springframework.transaction.annotation.Transactional;
  19. import javax.annotation.Resource;
  20. import javax.servlet.http.HttpServletRequest;
  21. import java.time.LocalDateTime;
  22. import java.time.format.DateTimeFormatter;
  23. import java.util.Arrays;
  24. import java.util.HashMap;
  25. import java.util.Map;
  26. import java.util.Set;
  27. /**
  28. * @Auther: lzm
  29. * @Date: 2022/04/19/17:38
  30. */
  31. @Service
  32. @Transactional
  33. @Slf4j
  34. public class JhService {
  35. @Resource
  36. WxConfig wxConfig;
  37. @Resource
  38. MyConfig myConfig;
  39. @Resource
  40. JhConfig jhConfig;
  41. @Resource
  42. WxUtils wxUtils;
  43. public Map<String, String> initPay(HttpServletRequest request) throws Exception {
  44. String money = request.getParameter("money");
  45. String openid = request.getParameter("openid");
  46. String businessId = request.getParameter("b");
  47. String c = request.getParameter("c");
  48. String a = request.getParameter("a");
  49. Attach atchMap = new Attach();
  50. atchMap.setC(c).setB(businessId).setA(a);
  51. String out_trade_no = RandomUtil.randomString(32);
  52. Map<String, String> params = new HashMap<>();
  53. params.put("attach", JSONUtil.toJsonStr(atchMap));
  54. params.put("productType", jhConfig.getProductType());
  55. params.put("businessMerchantNo", jhConfig.getBusinessMerchantNo());
  56. params.put("openId", openid);
  57. params.put("merchantNo", jhConfig.getBusinessMerchantNo());
  58. params.put("tradeType", jhConfig.getTradeType());
  59. params.put("subTradeType", "");
  60. String total_free = NumberUtil.mul(money, 100 + "").intValue() + "";
  61. log.info("order price:{}", total_free);
  62. params.put("orderPrice", total_free);
  63. params.put("outTradeNo", out_trade_no);
  64. params.put("productName", "业务订单支付");
  65. params.put("orderIp", WxService.getIpAddress(request));
  66. String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
  67. params.put("orderTime", now);
  68. params.put("returnUrl", "");
  69. params.put("notifyUrl", myConfig.getDomain() + "/wx/notify");
  70. params.put("remark", "业务订单支付");
  71. String paySecrit = jhConfig.getPaySecret();
  72. String sign = MerchantApiUtil.getSign(params, paySecrit);
  73. params.put("sign", sign);
  74. String jsonParam = JSONUtil.toJsonStr(params);
  75. String initPayUrl = "http://116.252.74.15:8081/uaps-web-gateway/cnpPay/initPay";
  76. String result = HttpUtil.createPost(initPayUrl).header("Content-Type", "application/json").body(jsonParam)
  77. .execute().body();
  78. JSONObject jsonResult = JSONUtil.parseObj(result);
  79. if(StrUtil.equals("0000", jsonResult.get("resultCode").toString())){
  80. JSONObject payMessage = JSONUtil.parseObj(jsonResult.get("payMessage"));
  81. Object prePayId = payMessage.get("prepay_id");
  82. String preId = prePayId == null ? "" : prePayId.toString();
  83. return getPayParams(openid, preId);
  84. }
  85. throw new Exception("支付信息有误");
  86. }
  87. public Map<String, String> getPayParams(String openid, String prePayId) {
  88. Map<String, String> signMap = new HashMap<>(10);
  89. signMap.put("appId", wxConfig.getAppId());
  90. signMap.put("timeStamp", System.currentTimeMillis() / 1000 + "");
  91. signMap.put("nonceStr", RandomUtil.randomString(32));
  92. signMap.put("signType", "MD5");
  93. signMap.put("package", "prepay_id=" + prePayId);
  94. String sign = wxUtils.sign(signMap, wxConfig.getKey());
  95. signMap.put("paySign", sign);
  96. signMap.put("openId", openid);
  97. return signMap;
  98. }
  99. }