加价单退款
This commit is contained in:
parent
29a09a7a58
commit
dd5dc62452
|
|
@ -22,6 +22,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付回调
|
* 支付回调
|
||||||
|
|
@ -51,27 +52,31 @@ public class PayCallbackService implements CallBackService {
|
||||||
PaymentDTO dto = financialMasterService.selectPaymentById(payment.getId());
|
PaymentDTO dto = financialMasterService.selectPaymentById(payment.getId());
|
||||||
// 校验是否是本系统发出去的支付请求
|
// 校验是否是本系统发出去的支付请求
|
||||||
if (dto != null) {
|
if (dto != null) {
|
||||||
// 更新交易记录
|
CompletableFuture.runAsync(() -> {
|
||||||
|
// 异步更新交易记录 避免被回滚
|
||||||
PaymentDTO param = new PaymentDTO();
|
PaymentDTO param = new PaymentDTO();
|
||||||
param.setId(payment.getId());
|
param.setId(payment.getId());
|
||||||
param.setFeeAmt(payment.getFeeAmt());
|
param.setFeeAmt(payment.getFeeAmt());
|
||||||
param.setStatus(payment.getStatus());
|
param.setStatus(payment.getStatus());
|
||||||
param.setPayTime(LocalDateTime.now());
|
param.setPayTime(LocalDateTime.now());
|
||||||
financialMasterService.updatePayment(param);
|
financialMasterService.updatePayment(param);
|
||||||
|
});
|
||||||
if (AdapayStatusEnum.succeeded.code.equals(payment.getStatus())) {
|
if (AdapayStatusEnum.succeeded.code.equals(payment.getStatus())) {
|
||||||
if (payment.getOrderNo().split("_").length > 2) {
|
if (payment.getOrderNo().split("_").length > 2) {
|
||||||
// 支付回调中的加价记录
|
// 支付回调中的加价记录ID
|
||||||
String financialChangeRecordIds = payment.getOrderNo().split("_")[1];
|
String fcrIdStr = payment.getOrderNo().split("_")[1];
|
||||||
String[] financialChangeRecordArr = financialChangeRecordIds.split(",");
|
String[] fcrIds = fcrIdStr.split(",");
|
||||||
|
|
||||||
BigDecimal totalChangeMoney = BigDecimal.ZERO;
|
BigDecimal totalChangeMoney = BigDecimal.ZERO;
|
||||||
Long financialMasterId = null;
|
Long financialMasterId = null;
|
||||||
for (String financialChangeRecordId: financialChangeRecordArr) {
|
for (String fcrId : fcrIds) {
|
||||||
FinancialChangeRecord financialChangeRecord = new FinancialChangeRecord();
|
FinancialChangeRecord financialChangeRecord = new FinancialChangeRecord();
|
||||||
financialChangeRecord.setId(Long.valueOf(financialChangeRecordId));
|
financialChangeRecord.setId(Long.valueOf(fcrId));
|
||||||
financialChangeRecord.setPayStatus(1);
|
financialChangeRecord.setPayStatus(1);
|
||||||
// 加价的支付paymentId回填到remark
|
// 加价的支付paymentId回填到remark
|
||||||
financialChangeRecord.setRemark(payment.getId());
|
financialChangeRecord.setRemark(payment.getId());
|
||||||
|
financialChangeRecord.setRemark(payment.getId());
|
||||||
|
financialChangeRecord.setPaymentId(payment.getId());
|
||||||
financialChangeRecordService.update(financialChangeRecord);
|
financialChangeRecordService.update(financialChangeRecord);
|
||||||
|
|
||||||
// 修改子订单的payMoney
|
// 修改子订单的payMoney
|
||||||
|
|
@ -99,7 +104,7 @@ public class PayCallbackService implements CallBackService {
|
||||||
// 更新主财务单状态
|
// 更新主财务单状态
|
||||||
financialMasterService.paySucceeded(payment.getId(), payment.getPayChannel());
|
financialMasterService.paySucceeded(payment.getId(), payment.getPayChannel());
|
||||||
} else {
|
} else {
|
||||||
logger.warn("支付失败 : {}", payment);
|
logger.warn("支付失败 : {}", data);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.warn("系统中不存在这条交易记录: {}", event);
|
logger.warn("系统中不存在这条交易记录: {}", event);
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
package com.ghy.web.controller.pay;
|
package com.ghy.web.controller.pay;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.ghy.common.adapay.model.AdapayStatusEnum;
|
||||||
import com.ghy.common.adapay.model.PayParam;
|
import com.ghy.common.adapay.model.PayParam;
|
||||||
import com.ghy.common.core.controller.BaseController;
|
import com.ghy.common.core.controller.BaseController;
|
||||||
import com.ghy.common.core.domain.AjaxResult;
|
import com.ghy.common.core.domain.AjaxResult;
|
||||||
import com.ghy.common.enums.PayStatus;
|
import com.ghy.common.enums.PayStatus;
|
||||||
|
import com.ghy.common.enums.PayTypeEnum;
|
||||||
import com.ghy.order.domain.OrderDetail;
|
import com.ghy.order.domain.OrderDetail;
|
||||||
import com.ghy.order.domain.OrderMaster;
|
import com.ghy.order.domain.OrderMaster;
|
||||||
import com.ghy.order.service.OrderDetailService;
|
import com.ghy.order.service.OrderDetailService;
|
||||||
|
|
@ -14,7 +17,10 @@ import com.ghy.payment.service.AdapayService;
|
||||||
import com.ghy.payment.service.FinancialChangeRecordService;
|
import com.ghy.payment.service.FinancialChangeRecordService;
|
||||||
import com.ghy.payment.service.FinancialMasterService;
|
import com.ghy.payment.service.FinancialMasterService;
|
||||||
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
@ -72,7 +78,6 @@ public class AlipayController extends BaseController {
|
||||||
@PostMapping("/addQr")
|
@PostMapping("/addQr")
|
||||||
public AjaxResult addQrPay(@RequestBody Long orderDetailId) {
|
public AjaxResult addQrPay(@RequestBody Long orderDetailId) {
|
||||||
BigDecimal payMoney = BigDecimal.ZERO;
|
BigDecimal payMoney = BigDecimal.ZERO;
|
||||||
Map<String, Object> map;
|
|
||||||
// 查询回原子单
|
// 查询回原子单
|
||||||
OrderDetail orderDetail = orderDetailService.selectById(orderDetailId);
|
OrderDetail orderDetail = orderDetailService.selectById(orderDetailId);
|
||||||
if (orderDetail == null) {
|
if (orderDetail == null) {
|
||||||
|
|
@ -87,29 +92,60 @@ public class AlipayController extends BaseController {
|
||||||
if (fm == null) {
|
if (fm == null) {
|
||||||
return AjaxResult.error("财务单不存在!");
|
return AjaxResult.error("财务单不存在!");
|
||||||
}
|
}
|
||||||
// 主单是否付款
|
// 主单是否付款 没付款的话一起付
|
||||||
FinancialChangeRecord financialChangeRecord = financialChangeRecordService.selectNotPayRecordByDetailId(orderDetailId);
|
boolean fmPaid = Objects.equals(PayStatus.WAIT_PAY.getCode(), fm.getPayStatus());
|
||||||
// 查询关联的加价单
|
if (fmPaid) {
|
||||||
if (Objects.equals(fm.getPayStatus(), PayStatus.WAIT_PAY.getCode())) {
|
|
||||||
payMoney = payMoney.add(fm.getPayMoney());
|
payMoney = payMoney.add(fm.getPayMoney());
|
||||||
}
|
}
|
||||||
|
// 查询关联的加价单
|
||||||
|
FinancialChangeRecord financialChangeRecord = financialChangeRecordService.selectNotPayRecordByDetailId(orderDetailId);
|
||||||
if (financialChangeRecord != null) {
|
if (financialChangeRecord != null) {
|
||||||
payMoney = payMoney.add(financialChangeRecord.getChangeMoney());
|
payMoney = payMoney.add(financialChangeRecord.getChangeMoney());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 付款
|
if (BigDecimal.ZERO.compareTo(payMoney) > -1) {
|
||||||
PayParam payParam = null;
|
return AjaxResult.error("不需要支付");
|
||||||
if (financialChangeRecord == null) {
|
|
||||||
payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" + System.currentTimeMillis(), payMoney.setScale(2, BigDecimal.ROUND_UNNECESSARY).toString(), "商品标题", "商品描述信息");
|
|
||||||
} else {
|
|
||||||
payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" +financialChangeRecord.getId() + "_" + System.currentTimeMillis(), payMoney.setScale(2, BigDecimal.ROUND_UNNECESSARY).toString(), "加价付款", "叮咚到家服务");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 付款
|
||||||
|
PayParam payParam;
|
||||||
|
if (financialChangeRecord == null) {
|
||||||
|
payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" + System.currentTimeMillis(),
|
||||||
|
payMoney.setScale(2, BigDecimal.ROUND_UNNECESSARY).toString(),
|
||||||
|
"订单支付", "叮咚到家服务");
|
||||||
|
} else {
|
||||||
|
payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" + financialChangeRecord.getId() + "_" + System.currentTimeMillis(),
|
||||||
|
payMoney.setScale(2, BigDecimal.ROUND_UNNECESSARY).toString(),
|
||||||
|
"加价付款", "叮咚到家服务");
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject response;
|
||||||
try {
|
try {
|
||||||
map = adapayService.alipayQrPay(orderMaster.getDeptId(), payParam, null, null, null);
|
response = adapayService.alipayQrPay(orderMaster.getDeptId(), payParam, null, null, null);
|
||||||
} catch (BaseAdaPayException e) {
|
} catch (BaseAdaPayException e) {
|
||||||
logger.error("创建支付失败", e);
|
logger.error("创建支付失败: " + e.getMessage(), e);
|
||||||
return AjaxResult.error("网络不佳 请稍后再试");
|
return AjaxResult.error("网络不佳 请稍后再试");
|
||||||
}
|
}
|
||||||
return AjaxResult.success(map);
|
boolean status = AdapayStatusEnum.succeeded.code.equals(response.getString("status"));
|
||||||
|
if (!status) {
|
||||||
|
logger.error("创建支付失败: {}", response.toJSONString());
|
||||||
|
return AjaxResult.error("网络不佳 请稍后再试");
|
||||||
|
}
|
||||||
|
// 支付二维码创建成功 保存一下paymentId
|
||||||
|
String paymentId = response.getString("id");
|
||||||
|
if (fmPaid) {
|
||||||
|
FinancialMaster fm2update = new FinancialMaster();
|
||||||
|
fm2update.setId(fm.getId());
|
||||||
|
fm2update.setPaymentId(paymentId);
|
||||||
|
fm2update.setPayType(PayTypeEnum.ALIPAY_QR.getCode());
|
||||||
|
financialMasterService.updateFinancialMaster(fm2update);
|
||||||
|
}
|
||||||
|
if (financialChangeRecord != null) {
|
||||||
|
FinancialChangeRecord fcr2update = new FinancialChangeRecord();
|
||||||
|
fcr2update.setId(financialChangeRecord.getId());
|
||||||
|
fcr2update.setPaymentId(paymentId);
|
||||||
|
financialChangeRecordService.update(fcr2update);
|
||||||
|
}
|
||||||
|
return AjaxResult.success(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package com.ghy.web.controller.pay;
|
package com.ghy.web.controller.pay;
|
||||||
|
|
||||||
import com.ghy.common.adapay.model.DivMember;
|
|
||||||
import com.ghy.common.adapay.model.PayParam;
|
import com.ghy.common.adapay.model.PayParam;
|
||||||
import com.ghy.common.adapay.model.WxpayExpend;
|
import com.ghy.common.adapay.model.WxpayExpend;
|
||||||
import com.ghy.common.config.WxConfig;
|
import com.ghy.common.config.WxConfig;
|
||||||
|
|
@ -8,7 +7,6 @@ import com.ghy.common.core.controller.BaseController;
|
||||||
import com.ghy.common.core.domain.AjaxResult;
|
import com.ghy.common.core.domain.AjaxResult;
|
||||||
import com.ghy.common.enums.PayStatus;
|
import com.ghy.common.enums.PayStatus;
|
||||||
import com.ghy.common.json.JSONObject;
|
import com.ghy.common.json.JSONObject;
|
||||||
import com.ghy.common.utils.ExceptionUtil;
|
|
||||||
import com.ghy.common.utils.StringUtils;
|
import com.ghy.common.utils.StringUtils;
|
||||||
import com.ghy.order.domain.OrderDetail;
|
import com.ghy.order.domain.OrderDetail;
|
||||||
import com.ghy.order.domain.OrderMaster;
|
import com.ghy.order.domain.OrderMaster;
|
||||||
|
|
@ -22,7 +20,10 @@ import com.ghy.payment.service.FinancialMasterService;
|
||||||
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
import com.huifu.adapay.core.exception.BaseAdaPayException;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
@ -54,7 +55,6 @@ public class WxPayController extends BaseController {
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public AjaxResult drawCash(@RequestBody JSONObject object) {
|
public AjaxResult drawCash(@RequestBody JSONObject object) {
|
||||||
try {
|
try {
|
||||||
// 101 123dasda D0 1.00 C7D101
|
|
||||||
Long deptId = object.getLong("deptId");
|
Long deptId = object.getLong("deptId");
|
||||||
String orderNo = object.getStr("orderNo");
|
String orderNo = object.getStr("orderNo");
|
||||||
String cashType = object.getStr("cashType");
|
String cashType = object.getStr("cashType");
|
||||||
|
|
@ -85,11 +85,11 @@ public class WxPayController extends BaseController {
|
||||||
}
|
}
|
||||||
List<Long> idList = orderDetailService.selectByOrderMasterId(orderMaster.getId()).stream().map(OrderDetail::getId).collect(Collectors.toList());
|
List<Long> idList = orderDetailService.selectByOrderMasterId(orderMaster.getId()).stream().map(OrderDetail::getId).collect(Collectors.toList());
|
||||||
List<FinancialChangeRecord> financialChangeRecords = financialChangeRecordService.selectByDetailIds(StringUtils.join(idList, ","));
|
List<FinancialChangeRecord> financialChangeRecords = financialChangeRecordService.selectByDetailIds(StringUtils.join(idList, ","));
|
||||||
List<Long> financialChangeRecordIds = new ArrayList<Long>();
|
List<Long> financialChangeRecordIds = new ArrayList<>();
|
||||||
for (FinancialChangeRecord financialChangeRecord : financialChangeRecords) {
|
for (FinancialChangeRecord financialChangeRecord : financialChangeRecords) {
|
||||||
if (PayStatus.WAIT_PAY.getCode().toString().equals(String.valueOf(financialChangeRecord.getPayStatus()))) {
|
if (PayStatus.WAIT_PAY.getCode().equals(financialChangeRecord.getPayStatus())) {
|
||||||
payMoney = payMoney.add(financialChangeRecord.getChangeMoney());
|
payMoney = payMoney.add(financialChangeRecord.getChangeMoney());
|
||||||
financialChangeRecordIds.add(Long.valueOf(financialChangeRecord.getId()));
|
financialChangeRecordIds.add(financialChangeRecord.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//调用adapay微信公众号支付.
|
//调用adapay微信公众号支付.
|
||||||
|
|
@ -97,8 +97,6 @@ public class WxPayController extends BaseController {
|
||||||
expend.setOpenId(openId);
|
expend.setOpenId(openId);
|
||||||
Map<String, Object> map;
|
Map<String, Object> map;
|
||||||
try {
|
try {
|
||||||
List<DivMember> divMembers = new ArrayList<>();
|
|
||||||
// divMembers.add(new DivMember("C7D101", String.valueOf(financialMaster.getPayMoney()), true));
|
|
||||||
// TODO 订单里需要补充支付金额、tittle、简要描述、分账信息、description
|
// TODO 订单里需要补充支付金额、tittle、简要描述、分账信息、description
|
||||||
String changeRecordIdStr = financialChangeRecordIds.size() > 0 ? StringUtils.join(financialChangeRecordIds, ",") + "_" : "";
|
String changeRecordIdStr = financialChangeRecordIds.size() > 0 ? StringUtils.join(financialChangeRecordIds, ",") + "_" : "";
|
||||||
PayParam payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" + changeRecordIdStr + System.currentTimeMillis(),
|
PayParam payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" + changeRecordIdStr + System.currentTimeMillis(),
|
||||||
|
|
@ -111,37 +109,37 @@ public class WxPayController extends BaseController {
|
||||||
return AjaxResult.success(map);
|
return AjaxResult.success(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* 微信公众号支付.
|
// * 微信公众号支付.暂时用不着
|
||||||
* https://open.weixin.qq.com/connect/oauth2/authorize?
|
// * https://open.weixin.qq.com/connect/oauth2/authorize?
|
||||||
* appid=wx404f2439a8c24e15
|
// * appid=wx404f2439a8c24e15
|
||||||
* &redirect_uri=http%3A%2F%2Fwww.opsoul.com%2Fpay%2Fwx%2Fpub
|
// * &redirect_uri=http%3A%2F%2Fwww.opsoul.com%2Fpay%2Fwx%2Fpub
|
||||||
* &response_type=code
|
// * &response_type=code
|
||||||
* &scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect
|
// * &scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect
|
||||||
*/
|
// */
|
||||||
@GetMapping("/pub")
|
// @GetMapping("/pub")
|
||||||
@ResponseBody
|
// @ResponseBody
|
||||||
public AjaxResult pubPay(HttpServletRequest request) {
|
// public AjaxResult pubPay(HttpServletRequest request) {
|
||||||
String openId = request.getParameter("openId");
|
// String openId = request.getParameter("openId");
|
||||||
String orderMasterCode = request.getHeader("orderMasterCode");
|
// String orderMasterCode = request.getHeader("orderMasterCode");
|
||||||
OrderMaster orderMaster = orderMasterService.selectByCode(orderMasterCode);
|
// OrderMaster orderMaster = orderMasterService.selectByCode(orderMasterCode);
|
||||||
if (orderMaster == null) {
|
// if (orderMaster == null) {
|
||||||
return AjaxResult.error("订单不存在");
|
// return AjaxResult.error("订单不存在");
|
||||||
}
|
// }
|
||||||
try {
|
// try {
|
||||||
logger.info("open id is " + openId);
|
// logger.info("open id is " + openId);
|
||||||
//调用adapay微信公众号支付.
|
// //调用adapay微信公众号支付.
|
||||||
WxpayExpend expend = new WxpayExpend();
|
// WxpayExpend expend = new WxpayExpend();
|
||||||
expend.setOpenId(openId);
|
// expend.setOpenId(openId);
|
||||||
Map<String, Object> map;
|
// Map<String, Object> map;
|
||||||
PayParam payParam = PayParam.delayPayParam(orderMaster.getCode(), "0.01", "工圈子测试", "工圈子测试描述");
|
// PayParam payParam = PayParam.delayPayParam(orderMaster.getCode(), "0.01", "工圈子测试", "工圈子测试描述");
|
||||||
map = adapayService.wxPubPay(orderMaster.getDeptId(), payParam, expend, null, null);
|
// map = adapayService.wxPubPay(orderMaster.getDeptId(), payParam, expend, null, null);
|
||||||
return AjaxResult.success(map);
|
// return AjaxResult.success(map);
|
||||||
} catch (Exception e) {
|
// } catch (Exception e) {
|
||||||
e.printStackTrace();
|
// e.printStackTrace();
|
||||||
logger.error(ExceptionUtil.getExceptionMessage(e));
|
// logger.error(ExceptionUtil.getExceptionMessage(e));
|
||||||
}
|
// }
|
||||||
return AjaxResult.success();
|
// return AjaxResult.success();
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -258,7 +258,8 @@ public class OrderDetailServiceImpl implements OrderDetailService {
|
||||||
* @param orderDetail
|
* @param orderDetail
|
||||||
* @throws BaseAdaPayException
|
* @throws BaseAdaPayException
|
||||||
*/
|
*/
|
||||||
private void refund(OrderDetail orderDetail) throws BaseAdaPayException {
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void refund(OrderDetail orderDetail) throws BaseAdaPayException {
|
||||||
Long orderDetailId = orderDetail.getId();
|
Long orderDetailId = orderDetail.getId();
|
||||||
OrderMaster orderMaster = orderMasterMapper.selectById(orderDetail.getOrderMasterId());
|
OrderMaster orderMaster = orderMasterMapper.selectById(orderDetail.getOrderMasterId());
|
||||||
Assert.notNull(orderMaster, "OrderMaster is null !");
|
Assert.notNull(orderMaster, "OrderMaster is null !");
|
||||||
|
|
@ -276,7 +277,6 @@ public class OrderDetailServiceImpl implements OrderDetailService {
|
||||||
refundMoney = refundMoney.subtract(fcr.getChangeMoney());
|
refundMoney = refundMoney.subtract(fcr.getChangeMoney());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
List<FinancialDetail> fdList = financialDetailService.selectListByOrderDetailId(orderDetailId);
|
List<FinancialDetail> fdList = financialDetailService.selectListByOrderDetailId(orderDetailId);
|
||||||
for (FinancialDetail fd : fdList) {
|
for (FinancialDetail fd : fdList) {
|
||||||
if (PayStatus.REFUND.getCode().equals(fd.getPayStatus()) ||
|
if (PayStatus.REFUND.getCode().equals(fd.getPayStatus()) ||
|
||||||
|
|
@ -287,7 +287,6 @@ public class OrderDetailServiceImpl implements OrderDetailService {
|
||||||
} else if (PayStatus.PAID.getCode().equals(fd.getPayStatus())) {
|
} else if (PayStatus.PAID.getCode().equals(fd.getPayStatus())) {
|
||||||
refundMoney = refundMoney.add(fd.getPayMoney());
|
refundMoney = refundMoney.add(fd.getPayMoney());
|
||||||
}
|
}
|
||||||
financialDetailService.updatePayStatus(fd.getId(), PayStatus.REFUND.getCode());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (BigDecimal.ZERO.compareTo(refundMoney) > -1) {
|
if (BigDecimal.ZERO.compareTo(refundMoney) > -1) {
|
||||||
|
|
@ -295,6 +294,9 @@ public class OrderDetailServiceImpl implements OrderDetailService {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 子订单的退款肯定≤主订单金额 否则肯定算错了
|
||||||
|
Assert.isTrue(refundMoney.compareTo(financialMaster.getPayMoney()) < 1, "订单金额异常");
|
||||||
|
|
||||||
// 发起退款
|
// 发起退款
|
||||||
String refundAmt = AdapayUtils.bigDecimalToString(refundMoney);
|
String refundAmt = AdapayUtils.bigDecimalToString(refundMoney);
|
||||||
JSONObject response = adapayService.payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), refundAmt, RefundType.ROD);
|
JSONObject response = adapayService.payReverse(orderMaster.getDeptId(), financialMaster.getPaymentId(), refundAmt, RefundType.ROD);
|
||||||
|
|
@ -304,6 +306,17 @@ public class OrderDetailServiceImpl implements OrderDetailService {
|
||||||
// 如果退款失败 这里携带失败原因抛出异常 回滚订单状态
|
// 如果退款失败 这里携带失败原因抛出异常 回滚订单状态
|
||||||
Assert.isTrue(status, response.getString("error_msg"));
|
Assert.isTrue(status, response.getString("error_msg"));
|
||||||
logger.info("子订单[id={}]退款成功", orderDetailId);
|
logger.info("子订单[id={}]退款成功", orderDetailId);
|
||||||
|
|
||||||
|
String reverseId = response.getString("id");
|
||||||
|
for (FinancialDetail fd : fdList) {
|
||||||
|
if (PayStatus.PAID.getCode().equals(fd.getPayStatus())) {
|
||||||
|
FinancialDetail fd2update = new FinancialDetail();
|
||||||
|
fd2update.setId(fd.getId());
|
||||||
|
fd2update.setPayStatus(PayStatus.REFUND.getCode());
|
||||||
|
fd2update.setReverseId(reverseId);
|
||||||
|
financialDetailService.updateFinancialDetail(fd2update);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -618,6 +631,6 @@ public class OrderDetailServiceImpl implements OrderDetailService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refundSucceeded(String reverseId) {
|
public void refundSucceeded(String reverseId) {
|
||||||
// TODO
|
financialDetailService.refundSucceeded(reverseId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,4 +65,11 @@ public interface FinancialChangeRecordMapper {
|
||||||
List<FinancialChangeRecord> selectByMasterId(@Param("orderMasterId") Long orderMasterId);
|
List<FinancialChangeRecord> selectByMasterId(@Param("orderMasterId") Long orderMasterId);
|
||||||
|
|
||||||
int updatePayStatus(@Param("id") Long id, @Param("payStatus") Integer payStatus);
|
int updatePayStatus(@Param("id") Long id, @Param("payStatus") Integer payStatus);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款成功
|
||||||
|
*
|
||||||
|
* @param reverseId Adapay撤销支付ID
|
||||||
|
*/
|
||||||
|
void refundSucceeded(String reverseId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -96,4 +96,11 @@ public interface FinancialDetailMapper {
|
||||||
void updateByFinancialMasterId(FinancialDetail financialDetail);
|
void updateByFinancialMasterId(FinancialDetail financialDetail);
|
||||||
|
|
||||||
int updatePayStatus(@Param("id") Long id, @Param("payStatus") Integer payStatus);
|
int updatePayStatus(@Param("id") Long id, @Param("payStatus") Integer payStatus);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款成功
|
||||||
|
*
|
||||||
|
* @param reverseId Adapay撤销支付ID
|
||||||
|
*/
|
||||||
|
void refundSucceeded(String reverseId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -116,4 +116,11 @@ public interface FinancialDetailService {
|
||||||
List<FinancialDetail> selectByFinancialMasterIdAndType(Long financialMasterId, int type);
|
List<FinancialDetail> selectByFinancialMasterIdAndType(Long financialMasterId, int type);
|
||||||
|
|
||||||
int updatePayStatus(Long id, Integer payStatus);
|
int updatePayStatus(Long id, Integer payStatus);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 退款成功
|
||||||
|
*
|
||||||
|
* @param reverseId Adapay撤销支付ID
|
||||||
|
*/
|
||||||
|
void refundSucceeded(String reverseId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,6 @@ public class FinancialChangeRecordServiceImpl implements FinancialChangeRecordSe
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refundSucceeded(String reverseId) {
|
public void refundSucceeded(String reverseId) {
|
||||||
// TODO
|
financialChangeRecordMapper.refundSucceeded(reverseId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -175,4 +175,9 @@ public class FinancialDetailServiceImpl implements FinancialDetailService {
|
||||||
public int updatePayStatus(Long id, Integer payStatus) {
|
public int updatePayStatus(Long id, Integer payStatus) {
|
||||||
return financialDetailMapper.updatePayStatus(id, payStatus);
|
return financialDetailMapper.updatePayStatus(id, payStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void refundSucceeded(String reverseId) {
|
||||||
|
financialDetailMapper.refundSucceeded(reverseId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -111,4 +111,10 @@
|
||||||
SET pay_status = #{payStatus}
|
SET pay_status = #{payStatus}
|
||||||
WHERE id = #{id}
|
WHERE id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<update id="refundSucceeded">
|
||||||
|
UPDATE financial_change_record SET
|
||||||
|
pay_status = 3
|
||||||
|
WHERE reverse_id = #{reverseId}
|
||||||
|
</update>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
|
|
@ -155,6 +155,13 @@
|
||||||
WHERE id = #{id}
|
WHERE id = #{id}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<update id="refundSucceeded">
|
||||||
|
UPDATE financial_detail SET
|
||||||
|
pay_status = 3 ,
|
||||||
|
update_time = SYSDATE()
|
||||||
|
WHERE reverse_id = #{reverseId}
|
||||||
|
</update>
|
||||||
|
|
||||||
<select id="selectByOrderDetailId" resultMap="FinancialDetailResult">
|
<select id="selectByOrderDetailId" resultMap="FinancialDetailResult">
|
||||||
<include refid="selectFinancialDetail" />
|
<include refid="selectFinancialDetail" />
|
||||||
WHERE
|
WHERE
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue