|
@@ -10,6 +10,8 @@ import com.ym.mec.common.entity.MallCreateOrderModel;
|
|
|
import com.ym.mec.common.entity.OrderCancelModel;
|
|
|
import com.ym.mec.common.exception.BizException;
|
|
|
import com.ym.mec.common.service.IdGeneratorService;
|
|
|
+import com.ym.mec.thirdparty.adapay.Payment;
|
|
|
+import com.ym.mec.thirdparty.adapay.entity.BaseResult;
|
|
|
import com.ym.mec.web.WebFeignService;
|
|
|
import com.yonge.cooleshow.mall.common.api.CommonPage;
|
|
|
import com.yonge.cooleshow.mall.common.enums.OrderCacheEnum;
|
|
@@ -76,6 +78,9 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
private PortalOrderDao portalOrderDao;
|
|
|
|
|
|
@Autowired
|
|
|
+ private UserOrderRefundMapper userOrderRefundMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
private IdGeneratorService idGeneratorService;
|
|
|
|
|
|
@Autowired
|
|
@@ -665,22 +670,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- @Transactional
|
|
|
- public HttpResponseResult orderPay(Map payReq) {
|
|
|
-
|
|
|
- String orderNo = MapUtil.getStr(payReq,"orderNo");
|
|
|
- OmsOrderDetail detail = detail(orderNo);
|
|
|
- if (detail == null) {
|
|
|
- throw new BizException("订单不存在");
|
|
|
- }
|
|
|
- if (detail.getStatus() != 0 && detail.getStatus() != 6) {
|
|
|
- throw new BizException("订单已付款或已关闭");
|
|
|
- }
|
|
|
|
|
|
- // 远程调用支付接口
|
|
|
- return webFeignService.executePayment(payReq);
|
|
|
- }
|
|
|
|
|
|
|
|
|
@Override
|
|
@@ -801,11 +791,57 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
} else {
|
|
|
LOG.error("汇付支付回调,订单状态异常。 req is {}", detail.getOrderSn());
|
|
|
|
|
|
- // 金额退回
|
|
|
+
|
|
|
+ orderRefund(orderPayment,detail.getPayAmount().toString());
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 支付成功,业务退款
|
|
|
+ */
|
|
|
+ private void orderRefund(UserOrderPayment userOrderPayment,String refundAmount) {
|
|
|
+ UserOrderRefund userOrderRefund = userOrderRefundMapper.selectByPayOrderNo(userOrderPayment.getAdapayNo());
|
|
|
+ if (userOrderRefund != null && userOrderRefund.getStatus().equals("succeeded")) {
|
|
|
+ LOG.warn("支付金额已退回");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ String orderSn = generateOrderSn();
|
|
|
+
|
|
|
+ HttpResponseResult<Map<String,String>> httpResponseResult = webFeignService.getBaseUrl(userOrderPayment.getAdapayNo());
|
|
|
+ if (!httpResponseResult.getStatus()) {
|
|
|
+ throw new BizException("获取回调路径失败");
|
|
|
+ }
|
|
|
+ Map<String, String> data = httpResponseResult.getData();
|
|
|
+ String baseUrl = MapUtil.getStr(data,"baseUrl");
|
|
|
+ String transNo = MapUtil.getStr(data,"transNo");
|
|
|
+ // 金额退回
|
|
|
+ Map<String, Object> refundParams = new HashMap<>(10);
|
|
|
+ refundParams.put("refund_amt", refundAmount);
|
|
|
+ refundParams.put("refund_order_no", orderSn);
|
|
|
+ refundParams.put("notify_url",baseUrl + "/api-mall-portal/payment/callback");
|
|
|
+ refundParams.put("transNo",transNo);
|
|
|
+ HttpResponseResult<BaseResult<Map<String, Object>>> refund = webFeignService.refund(refundParams);
|
|
|
+ if (!refund.getStatus()) {
|
|
|
+ throw new BizException("退款失败");
|
|
|
+ }
|
|
|
+ BaseResult<Map<String, Object>> mapBaseResult = refund.getData();
|
|
|
+ userOrderRefund = new UserOrderRefund();
|
|
|
+ userOrderRefund.setOrderNo(orderSn);
|
|
|
+ userOrderRefund.setPayTransNo(transNo);
|
|
|
+ userOrderRefund.setRefundAmt(new BigDecimal(refundAmount));
|
|
|
+ userOrderRefund.setPayOrderNo(userOrderPayment.getOrderNo());
|
|
|
+ if (mapBaseResult.getStatus()) {
|
|
|
+ Map<String,Object> refundBill = mapBaseResult.getData();
|
|
|
+ userOrderRefund.setRefundAmt(new BigDecimal(MapUtil.getStr(refundBill,"refund_amt")));
|
|
|
+ userOrderRefund.setStatus(TradeStatusEnum.pending.getCode());
|
|
|
+ } else {
|
|
|
+ userOrderRefund.setStatus(TradeStatusEnum.failed.getCode());
|
|
|
+ userOrderRefund.setPayFailMsg("退款失败:" +mapBaseResult.getMsg());
|
|
|
+ }
|
|
|
+ userOrderRefundMapper.insert(userOrderRefund);
|
|
|
+ }
|
|
|
|
|
|
/***
|
|
|
* 处理回调-支付失败
|
|
@@ -885,6 +921,44 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 退款成功
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void paymentRefundSucceededHandle(String payTransNo, String refundAmount, String refundTransNo, String feeAmt) {
|
|
|
+
|
|
|
+ LOG.info("refund payTransNo is {}", payTransNo);
|
|
|
+ if (payTransNo == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ UserOrderRefund userOrderRefund = userOrderRefundMapper.selectByPayTansNo(payTransNo);
|
|
|
+ userOrderRefund.setArrivalTime(new Date());
|
|
|
+ userOrderRefund.setStatus(TradeStatusEnum.succeeded.getCode());
|
|
|
+ userOrderRefund.setTransNo(refundTransNo);
|
|
|
+ userOrderRefund.setFeeAmt(new BigDecimal(feeAmt));
|
|
|
+ userOrderRefund.setRefundAmt(new BigDecimal(refundAmount));
|
|
|
+
|
|
|
+ userOrderRefundMapper.updateByPrimaryKeySelective(userOrderRefund);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 退款失败
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public void paymentRefundFailedHandle(String payTransNo, String msg, String refundTransNo) {
|
|
|
+ if (payTransNo == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ UserOrderRefund userOrderRefund = userOrderRefundMapper.selectByPayTansNo(payTransNo);
|
|
|
+ userOrderRefund.setArrivalTime(new Date());
|
|
|
+ userOrderRefund.setStatus(TradeStatusEnum.failed.getCode());
|
|
|
+ userOrderRefund.setPayFailMsg(msg);
|
|
|
+ userOrderRefund.setTransNo(refundTransNo);
|
|
|
+
|
|
|
+ userOrderRefundMapper.updateByPrimaryKeySelective(userOrderRefund);
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 生成18位订单编号:8位日期+2位平台号码+2位支付方式+6位以上自增id
|