更新支付状态、退款状态的控制逻辑,独立的商户支付订单号、商户退款单号
This commit is contained in:
parent
7753b79063
commit
443eae1e8a
@ -104,6 +104,20 @@ public class EbikeWxPaymentController {
|
||||
return r.isSuccess() ? JsonResult.success(true) : JsonResult.failed(r.getMessage());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 通过退款记录主键id查询退款信息
|
||||
*
|
||||
* @param refundId 退款主键id
|
||||
* @return 退款状态信息
|
||||
*/
|
||||
@GetMapping("/queryRefundStatus/{refundId}")
|
||||
public JsonResult<?> queryRefundStatus(@PathVariable(name = "refundId") String refundId) {
|
||||
HandleNotifyResult r = wxPayService.queryRefundStatusById(refundId);
|
||||
return JsonResult.success(r);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 审核退款申请
|
||||
*
|
||||
@ -127,12 +141,12 @@ public class EbikeWxPaymentController {
|
||||
/**
|
||||
* 通过退款单号查询退款信息
|
||||
*
|
||||
* @param refundId 商户(骑行)退款单号
|
||||
* @param refundId 商户(骑行)退款id
|
||||
* @return 退款信息
|
||||
*/
|
||||
@GetMapping("/queryRefund/{refundId}")
|
||||
public JsonResult<?> refundQuery(@PathVariable(name = "refundId") String refundId) {
|
||||
Refund r = wxPayService.queryRefundByOutNo(refundId);
|
||||
Refund r = wxPayService.queryRefundById(refundId);
|
||||
return r == null ? JsonResult.failed(String.format("退款单号{%s}查询退款失败", refundId)) : JsonResult.success(r);
|
||||
}
|
||||
|
||||
|
||||
@ -8,7 +8,6 @@ import com.wechat.pay.java.service.payments.model.Transaction;
|
||||
import com.wechat.pay.java.service.refund.model.Refund;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 微信支付服务类(JSAPI支付),小程序
|
||||
@ -97,20 +96,28 @@ public interface WxPayService {
|
||||
|
||||
|
||||
/**
|
||||
* 通过商户退款单号查询退款信息
|
||||
* 通过商户退款id查询退款信息
|
||||
*
|
||||
* @param outRefundNo 商户退款订单号
|
||||
* @param refundId 商户退款订主键
|
||||
* @return 退款信息
|
||||
*/
|
||||
Refund queryRefundByOutNo(String outRefundNo);
|
||||
Refund queryRefundById(String refundId);
|
||||
|
||||
/**
|
||||
* 通过商户退款单号查询退款信息状态
|
||||
* 通过商户退款单号查询退款信息
|
||||
*
|
||||
* @param outRefundNo 商户退款订单号
|
||||
* @param outTradeNo 商户退款订单号
|
||||
* @return 退款信息
|
||||
*/
|
||||
HandleNotifyResult queryRefundStatusByOutNo(String outRefundNo);
|
||||
Refund queryRefundByOutTradeNo(String outTradeNo);
|
||||
|
||||
/**
|
||||
* 通过退款记录主键id查询退款信息状态
|
||||
*
|
||||
* @param refundId 退款记录主键id
|
||||
* @return 退款状态信息
|
||||
*/
|
||||
HandleNotifyResult queryRefundStatusById(String refundId);
|
||||
|
||||
/**
|
||||
* 处理支退款回调
|
||||
|
||||
@ -264,10 +264,15 @@ public class WxPayServiceImpl implements WxPayService {
|
||||
|
||||
@Override
|
||||
public Transaction queryOrderByOutTradeNo(String outTradeNo) {
|
||||
QueryOrderByOutTradeNoRequest request = new QueryOrderByOutTradeNoRequest();
|
||||
request.setOutTradeNo(outTradeNo);
|
||||
request.setMchid(wxPayConfig.getMerchantId());
|
||||
return wxJsapiService.queryOrderByOutTradeNo(request);
|
||||
try {
|
||||
QueryOrderByOutTradeNoRequest request = new QueryOrderByOutTradeNoRequest();
|
||||
request.setOutTradeNo(outTradeNo);
|
||||
request.setMchid(wxPayConfig.getMerchantId());
|
||||
return wxJsapiService.queryOrderByOutTradeNo(request);
|
||||
}catch (Exception e) {
|
||||
logError("查询支付订单queryOrderByOutTradeNo", e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -498,20 +503,35 @@ public class WxPayServiceImpl implements WxPayService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Refund queryRefundByOutNo(String outRefundNo) {
|
||||
QueryByOutRefundNoRequest request = new QueryByOutRefundNoRequest();
|
||||
request.setOutRefundNo(outRefundNo);
|
||||
return wxRefundService.queryByOutRefundNo(request);
|
||||
public Refund queryRefundById(String refundId) {
|
||||
EbikeRefund ebikeRefund = ebikeRefundService.getById(refundId);
|
||||
if (ebikeRefund == null) {
|
||||
log.error("{}退款订单不存在", refundId);
|
||||
return null;
|
||||
}
|
||||
return queryRefundByOutTradeNo(ebikeRefund.getOrderId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandleNotifyResult queryRefundStatusByOutNo(String outRefundNo) {
|
||||
public Refund queryRefundByOutTradeNo(String outTradeNo) {
|
||||
try {
|
||||
QueryByOutRefundNoRequest request = new QueryByOutRefundNoRequest();
|
||||
request.setOutRefundNo(outTradeNo);
|
||||
return wxRefundService.queryByOutRefundNo(request);
|
||||
}catch (Exception e) {
|
||||
logError("查询退款订单queryRefundByOutTradeNo", e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandleNotifyResult queryRefundStatusById(String refundId) {
|
||||
HandleNotifyResult result = new HandleNotifyResult();
|
||||
// 先查本地数据库,如果退款状态不为SUCCESS,需要查询微信支付
|
||||
EbikeRefund ebikeRefund = ebikeRefundService.getById(outRefundNo);
|
||||
EbikeRefund ebikeRefund = ebikeRefundService.getById(refundId);
|
||||
if (ebikeRefund == null) {
|
||||
log.error("{}退款订单不存在", outRefundNo);
|
||||
result.setMessage(String.format("{%s}退款订单不存在", outRefundNo));
|
||||
log.error("{}退款订单不存在", refundId);
|
||||
result.setMessage(String.format("{%s}退款订单不存在", refundId));
|
||||
return result;
|
||||
}
|
||||
result.setSuccess(String.valueOf(Status.SUCCESS.ordinal()).equals(ebikeRefund.getStatus()));
|
||||
@ -519,16 +539,17 @@ public class WxPayServiceImpl implements WxPayService {
|
||||
result.setMessage(String.format("退款%s成功", ebikeRefund.getRefundId()));
|
||||
return result;
|
||||
}
|
||||
QueryByOutRefundNoRequest request = new QueryByOutRefundNoRequest();
|
||||
request.setOutRefundNo(outRefundNo);
|
||||
Refund r = wxRefundService.queryByOutRefundNo(request);
|
||||
if (r != null && r.getStatus().equals(Status.SUCCESS)) {
|
||||
Refund refund = queryRefundByOutTradeNo(ebikeRefund.getOrderId());
|
||||
if (refund != null && refund.getStatus().equals(Status.SUCCESS)) {
|
||||
result.setMessage(String.format("退款%s成功", ebikeRefund.getRefundId()));
|
||||
result.setSuccess(true);
|
||||
// 更新退款状态
|
||||
ebikeRefundService.updateRefundStatus(r);
|
||||
ebikeRefundService.updateRefundStatus(refund);
|
||||
return result;
|
||||
}else{
|
||||
result.setMessage(String.format("退款%s失败", ebikeRefund.getRefundId()));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@ -87,7 +87,7 @@ public class WsPayTask {
|
||||
for (EbikeRefund ebikeRefund : ebikeRefundList) {
|
||||
log.warn("超时未退款的退款单号 ===> {}", ebikeRefund.getRefundId());
|
||||
// 调用微信退款查询接口,查询退款状态
|
||||
Refund refund = wxPayService.queryRefundByOutNo(ebikeRefund.getRefundId());
|
||||
Refund refund = wxPayService.queryRefundByOutTradeNo(ebikeRefund.getRefundOrder());
|
||||
if (refund!= null){
|
||||
// 3. 更新退款单状态
|
||||
ebikeRefundService.updateRefundStatus(refund);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user