Commit 36a657cb by 郑云飞

退款bugfix

parent 7becfd9a
...@@ -530,9 +530,17 @@ public class DbOrderServiceImpl implements IDbOrderService { ...@@ -530,9 +530,17 @@ public class DbOrderServiceImpl implements IDbOrderService {
if (ObjectUtils.isEmpty(order)) { if (ObjectUtils.isEmpty(order)) {
return R.fail("订单不存在"); return R.fail("订单不存在");
} }
if (order.getStatus() == OrderStatusEnum.REFUNDED.getCode()) {
return R.fail("此订单已退款,请勿重复提交");
}
if (order.getPayAmount().compareTo(refundAmount) < 0) {
return R.fail("退款金额大于已支付金额,请重新填写");
}
if (StringUtils.isEmpty(order.getRefundNo())) {
String refundNo = CodeUtils.createSerialNumber("TK"); String refundNo = CodeUtils.createSerialNumber("TK");
// 修改订单
order.setRefundNo(refundNo); order.setRefundNo(refundNo);
}
// 修改订单
order.setRefundAmount(refundAmount); order.setRefundAmount(refundAmount);
baseMapper.updateById(order); baseMapper.updateById(order);
// 组装退款参数 // 组装退款参数
...@@ -540,13 +548,13 @@ public class DbOrderServiceImpl implements IDbOrderService { ...@@ -540,13 +548,13 @@ public class DbOrderServiceImpl implements IDbOrderService {
request.setTransactionId(order.getWxOrderNo()); request.setTransactionId(order.getWxOrderNo());
request.setTotalFee(order.getPayAmount().multiply(BigDecimal.valueOf(100L)).intValue()); request.setTotalFee(order.getPayAmount().multiply(BigDecimal.valueOf(100L)).intValue());
request.setRefundFee(refundAmount.multiply(BigDecimal.valueOf(100L)).intValue()); request.setRefundFee(refundAmount.multiply(BigDecimal.valueOf(100L)).intValue());
request.setOutRefundNo(refundNo); request.setOutRefundNo(order.getRefundNo());
request.setNotifyUrl(refundNotifyUrl); request.setNotifyUrl(refundNotifyUrl);
// 发起退款 // 发起退款
try { try {
WxPayRefundResult refund = wxPayService.refund(request); WxPayRefundResult refund = wxPayService.refund(request);
if ("SUCCESS".equals(refund.getReturnCode())) { if ("SUCCESS".equals(refund.getReturnCode())) {
return R.ok("退款申请成功"); return R.ok("退款成功");
} }
} catch (WxPayException e) { } catch (WxPayException e) {
log.error("退款报错:{}", e.getMessage()); log.error("退款报错:{}", e.getMessage());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment