diff --git a/src/main/java/com/yxt/pay/api/refund/RefundBusinessQuery.java b/src/main/java/com/yxt/pay/api/refund/RefundBusinessQuery.java new file mode 100644 index 0000000..66ed1de --- /dev/null +++ b/src/main/java/com/yxt/pay/api/refund/RefundBusinessQuery.java @@ -0,0 +1,13 @@ +package com.yxt.pay.api.refund; + +import lombok.Data; + +/** + * @author wangpengfei + * @date 2024/4/1 14:01 + */ +@Data +public class RefundBusinessQuery { + String mainSid; + boolean aBoolean; +} diff --git a/src/main/java/com/yxt/pay/api/refund/RefundOrder.java b/src/main/java/com/yxt/pay/api/refund/RefundOrder.java index 500d62c..4f77e48 100644 --- a/src/main/java/com/yxt/pay/api/refund/RefundOrder.java +++ b/src/main/java/com/yxt/pay/api/refund/RefundOrder.java @@ -13,7 +13,8 @@ import java.util.Date; */ @Data public class RefundOrder extends BaseEntity { - private String outTradeNo;//订单编号 + private String outTradeNo;//退款编号 + private String outRefundNo;//订单编号 private int source;//来源 0云菜窖 private String name;//商品名 private String amount;//金额 @@ -22,7 +23,6 @@ public class RefundOrder extends BaseEntity { private String orderSid;//支付订单sid private String reason;//退款原因 - public String getTime() { SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); return format.format(new Date()); diff --git a/src/main/java/com/yxt/pay/api/refund/RefundOrderDto.java b/src/main/java/com/yxt/pay/api/refund/RefundOrderDto.java index 8fce446..f8a1499 100644 --- a/src/main/java/com/yxt/pay/api/refund/RefundOrderDto.java +++ b/src/main/java/com/yxt/pay/api/refund/RefundOrderDto.java @@ -8,7 +8,8 @@ import lombok.Data; */ @Data public class RefundOrderDto { - private String outTradeNo;//订单编号 + private String outTradeNo;//退单编号 + private String outRefundNo;//订单编号 private int source;//来源 0云菜窖 private String name;//商品名 private String amount;//金额 diff --git a/src/main/java/com/yxt/pay/biz/refund/WxRefundService.java b/src/main/java/com/yxt/pay/biz/refund/WxRefundService.java index ed97fbc..8612c5a 100644 --- a/src/main/java/com/yxt/pay/biz/refund/WxRefundService.java +++ b/src/main/java/com/yxt/pay/biz/refund/WxRefundService.java @@ -12,29 +12,33 @@ import com.wechat.pay.java.core.notification.RequestParam; import com.wechat.pay.java.service.partnerpayments.app.model.Transaction; import com.wechat.pay.java.service.refund.RefundService; import com.wechat.pay.java.service.refund.model.*; +import com.wechat.pay.java.service.refund.model.Refund; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.core.result.ResultBean; import com.yxt.pay.api.order.PayOrder; -import com.yxt.pay.api.refund.RefundOrder; -import com.yxt.pay.api.refund.RefundOrderDto; -import com.yxt.pay.api.refund.WXRefundOrderReqVo; -import com.yxt.pay.api.refund.WXRefundOrderRespVo; +import com.yxt.pay.api.refund.*; import com.yxt.pay.api.wxpay.WxPayVo; import com.yxt.pay.biz.order.OrderService; import com.yxt.pay.utils.UrlComponent; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import java.io.BufferedReader; import java.io.InputStreamReader; +import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; import static com.wechat.pay.java.core.http.Constant.*; +import static java.math.BigDecimal.ROUND_DOWN; +import static java.math.BigDecimal.ROUND_UP; /** * @author wangpengfei @@ -64,7 +68,7 @@ public class WxRefundService extends MybatisBaseService().eq("sid",orderSid)); RefundOrder refundOrder=baseMapper.selectOne(new QueryWrapper().eq("orderSid",payOrder.getSid())); + BigDecimal b=new BigDecimal(refundOrder.getAmount()); + BigDecimal a =new BigDecimal(100); + String aoum=String.valueOf(b.multiply(a).setScale(0,ROUND_DOWN)); //退款金额 - amountReq.setRefund(Long.valueOf(payOrder.getTotalTee())); + amountReq.setRefund(Long.valueOf(aoum)); // amountReq.setRefund(Long.valueOf("1")); //原订单金额 - amountReq.setTotal(Long.valueOf(payOrder.getTotalTee())); + amountReq.setTotal(Long.valueOf(aoum)); // amountReq.setTotal(Long.valueOf("1")); //货币类型(默认人民币) amountReq.setCurrency("CNY"); request.setAmount(amountReq); //商户退款单号 - request.setOutRefundNo(String.valueOf(payOrder.getOutTradeNo())); + request.setOutRefundNo(refundOrder.getOutTradeNo()); // request.setOutRefundNo(String.valueOf("ceshi")); - request.setOutTradeNo(refundOrder.getOutTradeNo()); + request.setOutTradeNo(payOrder.getOutTradeNo()); // request.setOutTradeNo("ceshi"); request.setReason(refundOrder.getReason()); // request.setReason("ceshi"); @@ -132,10 +140,15 @@ public class WxRefundService extends MybatisBaseService().eq("outRefundNo",parse.getOutRefundNo())); System.out.println("退款回调结果: " + parse); //parse.getRefundStatus().equals("SUCCESS");说明退款成功 + RefundBusinessQuery query=new RefundBusinessQuery(); + Map map = new HashMap<>(); if (parse.getRefundStatus().equals(Transaction.TradeStateEnum.SUCCESS)){ //你的业务代码 - + map.put("mainSid",refundOrder.getOrderSid()); + map.put("aBoolean",true); + System.out.println("退款回调结果: " + parse); }else{ - + map.put("mainSid",refundOrder.getOrderSid()); + map.put("aBoolean",false); + System.out.println("退款回调结果: " + parse); } + ResponseEntity postForEntity = new RestTemplate().postForEntity(refundOrder.getReturnUrl(),map, ResultBean.class); + } catch (Exception e) { e.printStackTrace(); }