From f33a410f4d65b200083c3a4b97d51c10ac38bbd9 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Fri, 26 Aug 2022 18:13:08 +0800 Subject: [PATCH] 20220822 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 77 +++++++++++++++++++++++++------------- 1 files changed, 50 insertions(+), 27 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index 2f2ff02..db019c1 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -17,6 +17,7 @@ import cc.mrbird.febs.mall.vo.OrderDetailVo; import cc.mrbird.febs.mall.vo.OrderListVo; import cc.mrbird.febs.mall.vo.OrderRefundVo; +import cc.mrbird.febs.pay.model.AgreementPayDto; import cc.mrbird.febs.pay.model.AgreementSignDto; import cc.mrbird.febs.pay.model.UnipayDto; import cc.mrbird.febs.pay.service.IPayService; @@ -25,6 +26,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; import cn.hutool.json.JSONObject; @@ -39,6 +41,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.text.DecimalFormat; import java.util.*; /** @@ -217,7 +220,7 @@ @Transactional(rollbackFor = Exception.class) public Map<String, Object> payOrder(PayOrderDto payOrderDto) { MallMember member = LoginUserUtil.getLoginUser(); - MallOrderInfo orderInfo = this.baseMapper.selectOrderByMemberIdAndId(member.getId(), payOrderDto.getId()); + MallOrderInfo orderInfo = this.baseMapper.selectOrderDetailsById(payOrderDto.getId()); if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { throw new FebsException("订单不存在"); } @@ -257,7 +260,7 @@ if("fail" == unipayStr){ throw new FebsException("支付失败"); }else{ - JSONUtil.parseObj(unipayStr); +// JSONUtil.parseObj(unipayStr); JSONObject jsonObject = JSONUtil.parseObj(unipayStr); payResultStr = (String) jsonObject.get("r7_TrxNo"); rcResult = (String) jsonObject.get("rc_Result"); @@ -333,31 +336,51 @@ case "5": AgreementSignDto agreementSignDto = new AgreementSignDto(); agreementSignDto.setOrderNo(orderInfo.getOrderNo()); - unipayService.agreementSign(agreementSignDto); -// UnipayDto unipayDto = new UnipayDto(); -//// unipayDto.setAmount(new BigDecimal("0.01")); -// unipayDto.setAmount(orderInfo.getAmount()); -// unipayDto.setFrpCode("ALIPAY_H5"); -// unipayDto.setTradeMerchantNo("777180800385820"); -// unipayDto.setOrderNo(orderInfo.getOrderNo()); -// List<MallOrderItem> items = orderInfo.getItems(); -// if(CollUtil.isEmpty(items)){ -// unipayDto.setProductName("商品"); -// }else{ -// unipayDto.setProductName(items.get(0).getGoodsName()); -// } -// String agreementSignStr = ""; -// if("fail" == unipayStr){ -// throw new FebsException("支付失败"); -// }else{ -// JSONUtil.parseObj(unipayStr); -// JSONObject jsonObject = JSONUtil.parseObj(unipayStr); -// payResultStr = (String) jsonObject.get("r7_TrxNo"); -// rcResult = (String) jsonObject.get("rc_Result"); -// } - orderInfo.setPayOrderNo(payResultStr); - orderInfo.setPayMethod("支付宝支付"); -// agentProducer.sendOrderReturn(orderInfo.getId()); + agreementSignDto.setSmsCode(payOrderDto.getSmsCode()); + String agreementSignStr = unipayService.agreementSign(agreementSignDto); + if("fail" == agreementSignStr){ + throw new FebsException("支付失败"); + }else{ + JSONObject jsonObject = JSONUtil.parseObj(agreementSignStr); + payResultStr = (String) jsonObject.get("biz_code"); + String signBizMsg = (String) jsonObject.get("biz_msg"); + String err_msg = (String) jsonObject.get("err_msg"); + if(!"JS000000".equals(payResultStr)){ + throw new FebsException(signBizMsg); + } + if(ObjectUtil.isNotNull(jsonObject.get("err_code"))){ + throw new FebsException(err_msg); + } + } + + AgreementPayDto agreementPayDto = new AgreementPayDto(); + agreementPayDto.setOrderNo(orderInfo.getOrderNo()); + + BigDecimal value = orderInfo.getAmount().setScale(2, BigDecimal.ROUND_DOWN); + DecimalFormat decimalFormat = new DecimalFormat("0.00#"); + String strVal = decimalFormat.format(value); + agreementPayDto.setOrderAmount(new BigDecimal(strVal)); + agreementPayDto.setOrderTime(DateUtil.now()); + List<MallOrderItem> itemsGoods = orderInfo.getItems(); + if(CollUtil.isEmpty(itemsGoods)){ + agreementPayDto.setOrderDesc("商品"); + }else{ + agreementPayDto.setOrderDesc(itemsGoods.get(0).getGoodsName()); + } + agreementPayDto.setBankNo(payOrderDto.getBankNo()); + String agreementPayStr = unipayService.agreementPay(agreementPayDto); + + if("fail".equals(agreementSignStr)){ + throw new FebsException("支付失败"); + }else{ + JSONObject jsonObject = JSONUtil.parseObj(agreementPayStr); + payResultStr = (String) jsonObject.get("biz_code"); + String payBizMsg = (String) jsonObject.get("biz_msg"); + if(!"JS000000".equals(payResultStr)){ + throw new FebsException(payBizMsg); + } + } + orderInfo.setPayMethod("快捷协议支付"); break; default: -- Gitblit v1.9.1