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