Pu Zhibing
2024-09-27 76e0a1248fb3abef43ae2493611be89ed5ed9f73
修改bug
9个文件已修改
133 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserTagFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/WxPaymentClient.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/vo/PaymentOrder.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserTagFallbackFactory.java
@@ -30,6 +30,11 @@
            public R<TAppUserTag> getUserTag(TAppUserTag appUserTag) {
                return R.fail("获取用户标签关系失败:" + throwable.getMessage());
            }
            @Override
            public void addUserTag(TAppUserTag appUserTag) {
            }
        };
    }
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
@@ -118,6 +118,16 @@
            public R<String> stopCharging(String id) {
                return R.fail("手动停止充电失败:" + throwable.getMessage());
            }
            @Override
            public void chargingOrderWXCallback(String out_trade_no, String transaction_id, String attach) {
                log.error("充电支付成功回调通知失败:" + throwable.getMessage());
            }
            @Override
            public void chargingOrderStartupFailureWxRefund(String out_refund_no, String refund_id, String tradeState, String success_time) {
                log.error("远程启动失败后退款通知失败:" + throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
@@ -137,4 +137,30 @@
     */
    @PutMapping(value = "/t-charging-order/stopCharging/{id}")
    R<String> stopCharging(@PathVariable("id") String id);
    /**
     * 充电支付成功回调通知
     * @param out_trade_no
     * @param transaction_id
     * @param attach
     */
    @PostMapping("/t-charging-order/chargingOrderWXCallback")
    void chargingOrderWXCallback(@RequestParam("out_trade_no") String out_trade_no,
                                 @RequestParam("transaction_id") String transaction_id,
                                 @RequestParam("attach") String attach);
    /**
     * 远程启动失败后退款回调
     * @param out_refund_no
     * @param refund_id
     * @param tradeState
     * @param success_time
     */
    @PostMapping("/t-charging-order/chargingOrderStartupFailureWxRefund")
    void chargingOrderStartupFailureWxRefund(@RequestParam("out_trade_no") String out_refund_no,
                                             @RequestParam("out_trade_no") String refund_id,
                                             @RequestParam("out_trade_no") String tradeState,
                                             @RequestParam("out_trade_no") String success_time);
}
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/WxPaymentFallbackFactory.java
@@ -38,16 +38,6 @@
            public R<Map<String, Object>> orderPay(PaymentOrder paymentOrder) {
                return R.fail("调起微信支付失败:" + throwable.getMessage());
            }
            @Override
            public R<Map<String, Object>> payNotify(HttpServletRequest request) {
                return R.fail("微信支付回调失败:" + throwable.getMessage());
            }
            @Override
            public void ack() {
            }
            @Override
            public void close(String outTradeNo) {
@@ -57,11 +47,6 @@
            @Override
            public R<String> refundOrderR(WxPaymentRefundModel model) {
                return R.fail("微信退款失败:" + throwable.getMessage());
            }
            @Override
            public R<WxRefundNotifyResp> refundNotify(HttpServletRequest request) {
                return R.fail("微信退款回调失败:" + throwable.getMessage());
            }
        };
    }
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/WxPaymentClient.java
@@ -41,20 +41,6 @@
    R<Map<String, Object>> orderPay(@RequestBody PaymentOrder paymentOrder);
    
    
    /**
     * 支付回调
     * @param request
     * @return
     */
    @PostMapping("/wx/pay/notify")
    R<Map<String, Object>> payNotify(HttpServletRequest request);
    /**
     * 支付回调成功后的成功应答
     */
    @PostMapping("/wx/pay/ack")
    void ack();
    
    /**
     * 关闭订单
@@ -66,10 +52,4 @@
    @ApiOperation("订单退款")
    @PostMapping(value = "/wx/refundOrderR")
    public R<String> refundOrderR(@RequestBody WxPaymentRefundModel model);
    @ApiOperation("订单退款回调")
    @PostMapping(value = "/wx/refund/notify")
    R<WxRefundNotifyResp> refundNotify(HttpServletRequest request);
}
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/vo/PaymentOrder.java
@@ -29,5 +29,5 @@
    /**
     * 回调地址
     */
    private String notifyUrl ="http://221.182.45.100:9000/payment/wx/pay/notify";
    private String notifyUrl ="/payment/wx/pay/notify";
}
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -68,6 +68,7 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
@@ -428,21 +429,12 @@
    
    /**
     * 充电充值支付回调
     * @param request
     */
    @ResponseBody
    @PostMapping(value = "/chargingOrderWXCallback")
    public void chargingOrderWXCallback(HttpServletRequest request) {
        Map<String, Object> data = wxPaymentClient.payNotify(request).getData();
        if (null != data) {
            String out_trade_no = data.get("out_trade_no").toString();
            String transaction_id = data.get("transaction_id").toString();
            String attach = data.get("attach").toString();
            AjaxResult ajaxResult = chargingOrderService.chargingOrderCallback(1, out_trade_no, transaction_id, attach);
            if (ajaxResult.isSuccess()) {
                wxPaymentClient.ack();
            }
        }
    public void chargingOrderWXCallback(@RequestParam("out_trade_no") String out_trade_no, @RequestParam("transaction_id") String transaction_id,
                                        @RequestParam("attach") String attach) {
        AjaxResult ajaxResult = chargingOrderService.chargingOrderCallback(1, out_trade_no, transaction_id, attach);
    }
@@ -471,19 +463,14 @@
    
    /**
     * 远程启动失败后退款回调
     * @param request
     */
    @ResponseBody
    @PostMapping(value = "/chargingOrderStartupFailureWxRefund")
    public void chargingOrderStartupFailureWxRefund(HttpServletRequest request){
        WxRefundNotifyResp data = wxPaymentClient.refundNotify(request).getData();
        if(null != data){
            String out_refund_no = data.getOut_refund_no();
            String refund_id = data.getRefund_id();
            String tradeState = data.getTradeState();
            String success_time = data.getSuccess_time();
            chargingOrderService.chargingOrderStartupFailureWxRefund(out_refund_no, refund_id, tradeState, success_time);
        }
    public void chargingOrderStartupFailureWxRefund(@RequestParam("out_trade_no") String out_refund_no,
                                                    @RequestParam("out_trade_no") String refund_id,
                                                    @RequestParam("out_trade_no") String tradeState,
                                                    @RequestParam("out_trade_no") String success_time){
        chargingOrderService.chargingOrderStartupFailureWxRefund(out_refund_no, refund_id, tradeState, success_time);
    }
    
    
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -498,7 +498,7 @@
            paymentOrder.setAmount(addChargingOrder.getPaymentAmount());
            paymentOrder.setOpenId(appUser.getWxOpenid());
            paymentOrder.setDescription("充电充值");
            paymentOrder.setNotifyUrl("/order/t-charging-order/chargingOrderWXCallback");
            paymentOrder.setNotifyUrl("/payment/wx/pay/notify");
            Map<String, Object> data = wxPaymentClient.orderPay(paymentOrder).getData();
            return AjaxResult.success(data);
        }
@@ -711,7 +711,7 @@
                model.setOut_trade_no(chargingOrder.getCode());
                model.setOut_refund_no(chargingOrderRefund.getRefundCode());
                model.setReason("充电失败,取消充电订单");
                model.setNotify_url("/order/t-charging-order/chargingOrderStartupFailureWxRefund");
                model.setNotify_url("/payment/wx/refund/notify");
                WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
                amount.setRefund(rechargeAmount.multiply(new BigDecimal(100)).intValue());
                amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue());
@@ -1115,7 +1115,7 @@
                model.setOut_trade_no(chargingOrder.getCode());
                model.setOut_refund_no(chargingOrderRefund.getRefundCode());
                model.setReason("充电完成退款");
                model.setNotify_url("http://221.182.45.100:9000/order/t-charging-order/chargingOrderStartupFailureWxRefund");
                model.setNotify_url("/payment/wx/refund/notify");
                WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
                amount.setRefund(refundAmount.multiply(new BigDecimal(100)).intValue());
                amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue());
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/WxPayController.java
@@ -3,6 +3,7 @@
import com.fasterxml.jackson.core.type.TypeReference;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
import com.ruoyi.order.api.feignClient.OrderClient;
import com.ruoyi.payment.api.vo.PaymentOrder;
import com.ruoyi.payment.api.vo.WxRefundNotifyResp;
@@ -37,6 +38,9 @@
    @Resource
    private OrderClient orderClient;
    @Resource
    private ChargingOrderClient chargingOrderClient;
@@ -121,6 +125,7 @@
            log.info("支付回调:{}", params);
            String outRefundNo = (String) params.get("transaction_id");
            String out_trade_no = params.get("out_trade_no").toString();
            String attach = params.get("attach").toString();
            String substring = out_trade_no.substring(0, 2);
            switch (substring){
                //购物订单
@@ -131,6 +136,10 @@
                case "HY":
                    orderClient.vipCallBack(out_trade_no,outRefundNo);
                    System.err.println("----收到会员回调");
                    break;
                case "CD":
                    chargingOrderClient.chargingOrderWXCallback(out_trade_no, outRefundNo, attach);
                    System.err.println("----充电支付回调");
                    break;
            }
@@ -180,6 +189,15 @@
            // 时间不对的话,可以调用  WxTimeUtils.toRfc3339Date(success_time)转换一下
            String success_time = params.get("success_time").toString();
            if (tradeState.equals(RefundEnum.SUCCESS.name())) {
                String substring = out_refund_no.substring(0, 3);
                switch (substring){
                    //购物订单
                    case "CDF":
                        chargingOrderClient.chargingOrderStartupFailureWxRefund(out_refund_no, refund_id, tradeState, success_time);
                        System.err.println("----充电启动失败退款回调通知");
                        break;
                }
                WxRefundNotifyResp resp = new WxRefundNotifyResp();
                resp.setOut_trade_no(out_trade_no);
                resp.setOut_refund_no(out_refund_no);