xiaoyong931011
2022-08-26 f33a410f4d65b200083c3a4b97d51c10ac38bbd9
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: