From 2ab8c3ee11ec5879a7d71986bcbc0c44c6c75bb2 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 25 Dec 2023 11:14:53 +0800 Subject: [PATCH] 富文本框输入版本变化 --- src/main/java/cc/mrbird/febs/pay/service/impl/xcxCodePayServiceImpl.java | 120 +++++++++++++++++++++++++++++++++--------------------------- 1 files changed, 66 insertions(+), 54 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 f5980d6..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 @@ -49,8 +49,10 @@ 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) { @@ -118,65 +120,75 @@ 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("微信免密支付成功"); - 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_USERPAYING.equals(errCode)){//等待用户输入密码 -// for(int i = 0; i < 4; i++){ -// try { -// Thread.sleep(5000); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } -// //调用微信的查询接口 -// /** -// * 交易成功判断条件: return_code、result_code和trade_state都为SUCCESS -// */ -// WxPayOrderQueryRequest wxPayOrderQueryRequest = new WxPayOrderQueryRequest(); -// wxPayOrderQueryRequest.setOutTradeNo(outTradeNo); -// log.info("付款码支付订单查询"); -// WxPayOrderQueryResult wxPayOrderQueryResult = wxPayService.queryOrder(wxPayOrderQueryRequest); -// String returnCodePaying = wxPayOrderQueryResult.getReturnCode(); -// String resultCodePaying = wxPayOrderQueryResult.getResultCode(); -// String tradeTypePaying = wxPayOrderQueryResult.getTradeType(); -// if(PAY_SUCCESS.equals(tradeTypePaying)&& PAY_SUCCESS.equals(returnCodePaying)&& PAY_SUCCESS.equals(tradeTypePaying)){ -// log.info("微信加密支付成功!"); -// agentProducer.sendSyAppOrderPayDoneQueue(outTradeNo); -// return PAY_SUCCESS; -// } -// log.info("正在支付" + wxPayOrderQueryResult.getDetail()); -// } -// } - else if(PAY_FAIL.equals(resultCode)){ - return errCodeDes; - } - return errCodeDes; } catch (WxPayException e) { e.printStackTrace(); - throw new FebsException(e.getErrCodeDes()); + 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(3000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + String outTradeNo = mallOrderInfo.getOrderNo(); + WxPayOrderQueryRequest wxPayOrderQueryRequest = new WxPayOrderQueryRequest(); + wxPayOrderQueryRequest.setOutTradeNo(outTradeNo); + log.info("付款码支付订单查询"); + WxPayOrderQueryResult wxPayOrderQueryResult = null; + try { + wxPayOrderQueryResult = wxPayService.queryOrder(wxPayOrderQueryRequest); + } catch (WxPayException e) { + e.printStackTrace(); + } + String returnCodePaying = wxPayOrderQueryResult.getReturnCode(); + String tradeTypePaying = wxPayOrderQueryResult.getTradeType(); + 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 tradeStateDesc; + } + } + } } + 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 -- Gitblit v1.9.1