|
@@ -2,10 +2,14 @@ package cn.cslg.permission.service.weixinpay;
|
|
|
|
|
|
import cn.cslg.permission.common.model.qiaobi.payOrder.OrderGoodDTO;
|
|
import cn.cslg.permission.common.model.qiaobi.payOrder.OrderGoodDTO;
|
|
import cn.cslg.permission.common.model.qiaobi.payOrder.PayOrderAddMessageDTO;
|
|
import cn.cslg.permission.common.model.qiaobi.payOrder.PayOrderAddMessageDTO;
|
|
|
|
+import cn.cslg.permission.common.model.qiaobi.payOrder.WeixinSuccessVO;
|
|
import cn.cslg.permission.common.model.qiaobi.strategy.QueryGoodsStrategyVO;
|
|
import cn.cslg.permission.common.model.qiaobi.strategy.QueryGoodsStrategyVO;
|
|
import cn.cslg.permission.common.model.weixinpay.GetAuthorizationVO;
|
|
import cn.cslg.permission.common.model.weixinpay.GetAuthorizationVO;
|
|
import cn.cslg.permission.common.utils.BatchNoUtil;
|
|
import cn.cslg.permission.common.utils.BatchNoUtil;
|
|
|
|
+import cn.cslg.permission.common.utils.LoginUtils;
|
|
|
|
+import cn.cslg.permission.common.utils.SecurityUtils.AesUtil;
|
|
import cn.cslg.permission.common.utils.common.BigDecimalUtil;
|
|
import cn.cslg.permission.common.utils.common.BigDecimalUtil;
|
|
|
|
+import cn.cslg.permission.domain.qiaobi.AssoPersonFunction;
|
|
import cn.cslg.permission.domain.qiaobi.Goods;
|
|
import cn.cslg.permission.domain.qiaobi.Goods;
|
|
import cn.cslg.permission.domain.qiaobi.PayOrder;
|
|
import cn.cslg.permission.domain.qiaobi.PayOrder;
|
|
import cn.cslg.permission.exception.ExceptionEnum;
|
|
import cn.cslg.permission.exception.ExceptionEnum;
|
|
@@ -13,16 +17,21 @@ import cn.cslg.permission.exception.XiaoShiException;
|
|
import cn.cslg.permission.factory.strategy.StrategyFatcory;
|
|
import cn.cslg.permission.factory.strategy.StrategyFatcory;
|
|
import cn.cslg.permission.factory.strategy.StrategyImp;
|
|
import cn.cslg.permission.factory.strategy.StrategyImp;
|
|
import cn.cslg.permission.mapper.qiaobi.MarketStrategyMapper;
|
|
import cn.cslg.permission.mapper.qiaobi.MarketStrategyMapper;
|
|
|
|
+import cn.cslg.permission.service.qiaobi.AssoPersonFunctionService;
|
|
|
|
+import cn.cslg.permission.service.qiaobi.AssoPersonVipTypeService;
|
|
import cn.cslg.permission.service.qiaobi.GoodsService;
|
|
import cn.cslg.permission.service.qiaobi.GoodsService;
|
|
import cn.cslg.permission.service.qiaobi.PayOrderService;
|
|
import cn.cslg.permission.service.qiaobi.PayOrderService;
|
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.Gson;
|
|
import okhttp3.*;
|
|
import okhttp3.*;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -39,9 +48,19 @@ public class WeixinPayService {
|
|
private StrategyFatcory strategyFatcory;
|
|
private StrategyFatcory strategyFatcory;
|
|
@Autowired
|
|
@Autowired
|
|
private PayOrderService payOrderService;
|
|
private PayOrderService payOrderService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private AssoPersonVipTypeService assoPersonVipTypeService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private AssoPersonFunctionService assoPersonFunctionService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private LoginUtils loginUtils;
|
|
|
|
+ public static String apiV3key = "9Cx7SiQb7il8Zaf8nsBw5QxSCVZkoO7p";
|
|
|
|
+ @Value("${payCallBack}")
|
|
|
|
+ public String payCallBack;
|
|
|
|
+
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
public String getPayTickets(PayOrderAddMessageDTO payOrderAddMessageDTO) {
|
|
public String getPayTickets(PayOrderAddMessageDTO payOrderAddMessageDTO) {
|
|
- String codeUrl="";
|
|
|
|
|
|
+ String codeUrl = "";
|
|
payOrderAddMessageDTO = this.calculatePrice(payOrderAddMessageDTO);
|
|
payOrderAddMessageDTO = this.calculatePrice(payOrderAddMessageDTO);
|
|
PayOrder payOrder = payOrderService.addPayOrder(payOrderAddMessageDTO);
|
|
PayOrder payOrder = payOrderService.addPayOrder(payOrderAddMessageDTO);
|
|
String url = "https://api.mch.weixin.qq.com/v3/pay/transactions/native";
|
|
String url = "https://api.mch.weixin.qq.com/v3/pay/transactions/native";
|
|
@@ -49,7 +68,7 @@ public class WeixinPayService {
|
|
com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest prepayRequest = new com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest();
|
|
com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest prepayRequest = new com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest();
|
|
String appId = "wxe5f9b6e3d532e6c3";
|
|
String appId = "wxe5f9b6e3d532e6c3";
|
|
String merchantId = "1718408246";
|
|
String merchantId = "1718408246";
|
|
- String notifyUrl = "https://fms.xsip.cn/permission/qiaoBi/pay/success";
|
|
|
|
|
|
+ String notifyUrl = payCallBack;
|
|
prepayRequest.setAppid(appId);
|
|
prepayRequest.setAppid(appId);
|
|
prepayRequest.setMchid(merchantId);
|
|
prepayRequest.setMchid(merchantId);
|
|
prepayRequest.setOutTradeNo(tradeNo);
|
|
prepayRequest.setOutTradeNo(tradeNo);
|
|
@@ -85,11 +104,11 @@ public class WeixinPayService {
|
|
// 打印服务端返回结果
|
|
// 打印服务端返回结果
|
|
String a = Objects.requireNonNull(response.body()).string();
|
|
String a = Objects.requireNonNull(response.body()).string();
|
|
JSONObject jsonObject = JSONObject.parseObject(a);
|
|
JSONObject jsonObject = JSONObject.parseObject(a);
|
|
- Object codeUrlObject= jsonObject.get("code_url");
|
|
|
|
- if(codeUrlObject==null){
|
|
|
|
- throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR,"请求微信支付接口错误,请联系管理员排查");
|
|
|
|
- }
|
|
|
|
- codeUrl =codeUrlObject.toString();
|
|
|
|
|
|
+ Object codeUrlObject = jsonObject.get("code_url");
|
|
|
|
+ if (codeUrlObject == null) {
|
|
|
|
+ throw new XiaoShiException(ExceptionEnum.BUSINESS_ERROR, "请求微信支付接口错误,请联系管理员排查");
|
|
|
|
+ }
|
|
|
|
+ codeUrl = codeUrlObject.toString();
|
|
// }
|
|
// }
|
|
|
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
@@ -146,4 +165,51 @@ public class WeixinPayService {
|
|
payOrderAddMessageDTO.setOrgTotalPrice(orgTotalPrice);
|
|
payOrderAddMessageDTO.setOrgTotalPrice(orgTotalPrice);
|
|
return payOrderAddMessageDTO;
|
|
return payOrderAddMessageDTO;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public WeixinSuccessVO decryptMessage(String associatedData, String nonce, String ciphertext) throws Exception {
|
|
|
|
+ Integer q = apiV3key.length();
|
|
|
|
+ System.out.println(q);
|
|
|
|
+ String key = "9Cx7SiQb7il8Zaf8nsBw5QxSCVZkoO7p";
|
|
|
|
+ AesUtil aesUtil = new AesUtil(key.getBytes(StandardCharsets.UTF_8));
|
|
|
|
+ String d = aesUtil.decryptToString(associatedData.getBytes(StandardCharsets.UTF_8), nonce.getBytes(StandardCharsets.UTF_8), ciphertext);
|
|
|
|
+
|
|
|
|
+ WeixinSuccessVO weixinSuccessVO = JSONObject.parseObject(d, WeixinSuccessVO.class);
|
|
|
|
+ return weixinSuccessVO;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public void complateOrder(String tradeNo) {
|
|
|
|
+
|
|
|
|
+ PayOrder payOrder = payOrderService.getPayOrderByNo(tradeNo);
|
|
|
|
+ if (payOrder == null) {
|
|
|
|
+ throw new XiaoShiException("查询订单错误,报警处理");
|
|
|
|
+ }
|
|
|
|
+ String goodMessage = payOrder.getGoodMessage();
|
|
|
|
+ List<OrderGoodDTO> orderGoodDTOList = JSONArray.parseArray(goodMessage, OrderGoodDTO.class);
|
|
|
|
+ for (int i = 0; i < orderGoodDTOList.size(); i++) {
|
|
|
|
+ OrderGoodDTO orderGoodDTO = orderGoodDTOList.get(i);
|
|
|
|
+ Goods goods = orderGoodDTO.getGoods();
|
|
|
|
+ Integer type = goods.getGoodType();
|
|
|
|
+ Integer totalNum = orderGoodDTO.getTotalNum();
|
|
|
|
+ if (totalNum == null) {
|
|
|
|
+ totalNum = orderGoodDTO.getNum();
|
|
|
|
+ }
|
|
|
|
+ if (type == 1) {
|
|
|
|
+ Integer vipId = goods.getGoodId();
|
|
|
|
+ Integer goodUnit = goods.getGoodUnit();
|
|
|
|
+ assoPersonVipTypeService.addPersonVIP2(vipId, totalNum, goodUnit);
|
|
|
|
+ } else if (type == 2) {
|
|
|
|
+ Integer functionId = goods.getGoodId();
|
|
|
|
+ AssoPersonFunction assoPersonFunction = new AssoPersonFunction();
|
|
|
|
+ assoPersonFunction.setFunctionId(functionId);
|
|
|
|
+ assoPersonFunction.setPersonId(loginUtils.getId());
|
|
|
|
+ assoPersonFunction.setCanUseCount(totalNum);
|
|
|
|
+ assoPersonFunction.insert();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
}
|
|
}
|