diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/pay/PayController.java b/ghy-admin/src/main/java/com/ghy/web/controller/pay/PayController.java index 58d82d42..77c8ff69 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/pay/PayController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/pay/PayController.java @@ -2,6 +2,7 @@ package com.ghy.web.controller.pay; import com.alibaba.fastjson.JSONObject; import com.ghy.common.adapay.model.AdapayStatusEnum; +import com.ghy.common.adapay.model.PaymentDTO; import com.ghy.common.core.domain.AjaxResult; import com.ghy.order.domain.OrderMaster; import com.ghy.order.service.OrderMasterService; @@ -35,6 +36,31 @@ public class PayController { @Resource private FinancialMasterService financialMasterService; + /** + * 撤销支付 + * + * @param orderMasterId 主订单ID + * @param refundAmt 退款金额 保留两位小数 + */ + @PostMapping("refund") + @ResponseBody + public AjaxResult refund(Long orderMasterId, String refundAmt) throws BaseAdaPayException { + OrderMaster orderMaster = orderMasterService.selectById(orderMasterId); + Assert.notNull(orderMaster, "找不到对应的订单"); + FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderMasterId); + PaymentDTO payment = financialMasterService.selectPaymentById(financialMaster.getPaymentId()); + Assert.notNull(payment, "找不到支付记录"); + Assert.notNull(financialMaster, "找不到订单"); + Assert.isTrue(financialMaster.getPayStatus() == 1, "订单未支付"); + Assert.hasText(financialMaster.getPaymentId(), "找不到订单的支付记录,请联系管理员"); + JSONObject response = adapayService.refund(orderMaster.getDeptId(), financialMaster.getPaymentId(),payment.getOrderNo(), refundAmt); + if (AdapayStatusEnum.succeeded.code.equals(response.getString("status"))) { + return AjaxResult.success(); + } else { + return AjaxResult.error(response.getString("error_msg")); + } + } + /** * 撤销支付 *