From ea343888f4ab527f9f912f29642a655a465769db Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 27 Dec 2023 11:23:40 +0800
Subject: [PATCH] 富文本框输入版本变化
---
src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java | 156 ++++++++++++++++++++++++++++++---------------------
1 files changed, 92 insertions(+), 64 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java b/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java
index 950130a..8eca37e 100644
--- a/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java
@@ -13,6 +13,7 @@
import cc.mrbird.febs.pay.util.WeixinServiceUtil;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -46,43 +47,47 @@
private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
private final WeixinServiceUtil weixinServiceUtil;
private final AgentProducer agentProducer;
+ private final WxPayService wxPayService;
private static final String PAY_SUCCESS = "SUCCESS";
+ private static final String PAY_WAITING = "等待用户输入密码";
private static final String PAY_USERPAYING = "USERPAYING";
+ private static final String PAY_FAIL = "FAIL";
+ private static final String TRADE_TYPE = "MICROPAY";
@Override
public String pay(MallOrderInfo mallOrderInfo) {
- String appId = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- DataDictionaryEnum.XCX_APP_ID.getType(),
- DataDictionaryEnum.XCX_APP_ID.getCode()
- ).getValue();
- String mchId = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- DataDictionaryEnum.XCX_MCH_ID.getType(),
- DataDictionaryEnum.XCX_MCH_ID.getCode()
- ).getValue();
- String paySecret = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- DataDictionaryEnum.XCX_MCH_KEY.getType(),
- DataDictionaryEnum.XCX_MCH_KEY.getCode()
- ).getValue();
- String keyPath = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getType(),
- DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getCode()
- ).getValue();
- String notifyUrl = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
- DataDictionaryEnum.XCX_NOTICE_URL.getType(),
- DataDictionaryEnum.XCX_NOTICE_URL.getCode()
- ).getValue();
- WxPayConfig payConfig = new WxPayConfig();
- payConfig.setAppId(StrUtil.trim(appId));
- payConfig.setMchId(StrUtil.trim(mchId));
- payConfig.setMchKey(StrUtil.trim(paySecret));
- payConfig.setKeyPath(StrUtil.trim(keyPath));
- payConfig.setNotifyUrl(StrUtil.trim(notifyUrl));
+// String appId = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+// DataDictionaryEnum.XCX_APP_ID.getType(),
+// DataDictionaryEnum.XCX_APP_ID.getCode()
+// ).getValue();
+// String mchId = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+// DataDictionaryEnum.XCX_MCH_ID.getType(),
+// DataDictionaryEnum.XCX_MCH_ID.getCode()
+// ).getValue();
+// String paySecret = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+// DataDictionaryEnum.XCX_MCH_KEY.getType(),
+// DataDictionaryEnum.XCX_MCH_KEY.getCode()
+// ).getValue();
+// String keyPath = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+// DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getType(),
+// DataDictionaryEnum.XCX_MCH_KEY_PATH_P12.getCode()
+// ).getValue();
+// String notifyUrl = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
+// DataDictionaryEnum.XCX_NOTICE_URL.getType(),
+// DataDictionaryEnum.XCX_NOTICE_URL.getCode()
+// ).getValue();
+// WxPayConfig payConfig = new WxPayConfig();
+// payConfig.setAppId(StrUtil.trim(appId));
+// payConfig.setMchId(StrUtil.trim(mchId));
+// payConfig.setMchKey(StrUtil.trim(paySecret));
+// payConfig.setKeyPath(StrUtil.trim(keyPath));
+// payConfig.setNotifyUrl(StrUtil.trim(notifyUrl));
// 可以指定是否使用沙箱环境
- payConfig.setUseSandboxEnv(false);
-
- WxPayService wxPayService = new WxPayServiceImpl();
- wxPayService.setConfig(payConfig);
+// payConfig.setUseSandboxEnv(false);
+//
+// WxPayService wxPayService = new WxPayServiceImpl();
+// wxPayService.setConfig(payConfig);
WxPayMicropayRequest request = new WxPayMicropayRequest();
/**
*
@@ -99,8 +104,8 @@
String sign = WXPayUtil.generateSignature(map, config.getKey());
map.put("sign", sign);
*/
- request.setAppid(appId);
- request.setMchId(mchId);
+// request.setAppid(appId);
+// request.setMchId(mchId);
request.setNonceStr(RandomStringGenerator.getRandomStringByLength(32));
request.setBody(mallOrderInfo.getName());
request.setOutTradeNo(mallOrderInfo.getOrderNo());
@@ -110,57 +115,80 @@
request.setAuthCode(mallOrderInfo.getTakeCode());
try {
- request.setSign(Signature.getSign(request,paySecret));
+ request.setSign(Signature.getSign(request,wxPayService.getConfig().getMchKey()));
} catch (IllegalAccessException e) {
e.printStackTrace();
throw new FebsException("签名异常");
}
+ WxPayMicropayResult micropay = null;
+ String errCode = null;
+ String errCodeDes = null;
try {
- WxPayMicropayResult micropay = wxPayService.micropay(request);
- String returnCode = micropay.getReturnCode();
- String resultCode = micropay.getResultCode();
- String errCode = micropay.getErrCode();
- String outTradeNo = micropay.getOutTradeNo();
- String errCodeDes = micropay.getErrCodeDes();
- /**
- * 交易成功判断条件:return_code和result_code都为SUCCESS且trade_type为MICROPAY
- */
+ micropay = wxPayService.micropay(request);
- if(PAY_SUCCESS.equals(returnCode) && PAY_SUCCESS.equals(resultCode)){
- log.info("微信免密支付成功");
- agentProducer.sendSyAppOrderPayDoneQueue(outTradeNo);
- return PAY_SUCCESS;
- } else if (PAY_USERPAYING.equals(errCode)){//等待用户输入密码
- for(int i = 0; i < 4; i++){
+ } catch (WxPayException e) {
+ e.printStackTrace();
+ errCode = e.getErrCode();
+ errCodeDes = e.getErrCodeDes();
+// throw new FebsException(e.getErrCodeDes());
+ }finally {
+ if (PAY_USERPAYING.equals(errCode)){//等待用户输入密码
+ for(int i = 0; i < 5; i++){
try {
- Thread.sleep(5000);
+ Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
- //调用微信的查询接口
- /**
- * 交易成功判断条件: return_code、result_code和trade_state都为SUCCESS
- */
+
+ String outTradeNo = mallOrderInfo.getOrderNo();
WxPayOrderQueryRequest wxPayOrderQueryRequest = new WxPayOrderQueryRequest();
wxPayOrderQueryRequest.setOutTradeNo(outTradeNo);
- WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder(wxPayOrderQueryRequest);
+ log.info("付款码支付订单查询");
+ WxPayOrderQueryResult wxPayOrderQueryResult = null;
+ try {
+ wxPayOrderQueryResult = wxPayService.queryOrder(wxPayOrderQueryRequest);
+ } catch (WxPayException e) {
+ e.printStackTrace();
+ }
String returnCodePaying = wxPayOrderQueryResult.getReturnCode();
- String resultCodePaying = wxPayOrderQueryResult.getResultCode();
String tradeTypePaying = wxPayOrderQueryResult.getTradeType();
- if(PAY_SUCCESS.equals(tradeTypePaying)&& PAY_SUCCESS.equals(returnCodePaying)&& PAY_SUCCESS.equals(resultCodePaying)){
+ String resultCodePaying = wxPayOrderQueryResult.getResultCode();
+ String tradeStateDesc = wxPayOrderQueryResult.getTradeStateDesc();
+ /**
+ * 交易成功判断条件:return_code和result_code都为SUCCESS且trade_type为MICROPAY
+ */
+ if(PAY_SUCCESS.equals(resultCodePaying)&& PAY_SUCCESS.equals(returnCodePaying)&& TRADE_TYPE.equals(tradeTypePaying)){
log.info("微信加密支付成功!");
agentProducer.sendSyAppOrderPayDoneQueue(outTradeNo);
- return PAY_SUCCESS;
+ return tradeStateDesc;
}
- log.info("正在支付" + wxPayOrderQueryResult.getDetail());
}
}
- log.error("微信支付失败!");
- return errCodeDes;
- } catch (WxPayException e) {
- e.printStackTrace();
- throw new FebsException("支付异常");
}
+ if(ObjectUtil.isEmpty(micropay)){
+ return errCodeDes;
+ }
+ String returnCode = micropay.getReturnCode();
+ String resultCode = micropay.getResultCode();
+ String outTradeNo = micropay.getOutTradeNo();
+
+ if(PAY_SUCCESS.equals(returnCode) && PAY_SUCCESS.equals(resultCode)){
+ log.info("微信免密支付成功");
+ MallOrderInfo orderInfo = mallOrderInfoMapper.selectByOrderNo(mallOrderInfo.getOrderNo());
+ if(ObjectUtil.isNotEmpty(orderInfo)){
+ if (OrderStatusEnum.FINISH.getValue() != orderInfo.getStatus()) {
+ orderInfo.setStatus(OrderStatusEnum.FINISH.getValue());
+ orderInfo.setPayResult(1);
+ orderInfo.setPayTime(DateUtil.date());
+ mallOrderInfoMapper.updateById(orderInfo);
+ }
+ }
+ agentProducer.sendSyAppOrderPayDoneQueue(outTradeNo);
+ return PAY_SUCCESS;
+ } else if(PAY_FAIL.equals(resultCode)){
+ return errCodeDes;
+ }
+ return errCodeDes;
}
@Override
@@ -174,7 +202,7 @@
return;
}
orderInfo.setStatus(OrderStatusEnum.FINISH.getValue());
- orderInfo.setPayResult("1");
+ orderInfo.setPayResult(1);
orderInfo.setPayTime(DateUtil.date());
orderInfo.setPayTradeNo(params.get("transaction_id"));
mallOrderInfoMapper.updateById(orderInfo);
--
Gitblit v1.9.1