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);