处理退款回调
This commit is contained in:
@ -3,6 +3,7 @@ package com.sczx.pay.controller;
|
||||
import com.sczx.pay.dto.PaymentRequest;
|
||||
import com.sczx.pay.dto.PaymentResponse;
|
||||
import com.sczx.pay.dto.RefundRequest;
|
||||
import com.sczx.pay.entity.CompanyWechatConfig;
|
||||
import com.sczx.pay.mapper.CompanyWechatConfigMapper;
|
||||
import com.sczx.pay.service.WechatPayService;
|
||||
import com.sczx.pay.utils.WXPayUtil;
|
||||
@ -186,18 +187,27 @@ public class PaymentController {
|
||||
|
||||
// 解析XML数据
|
||||
Map<String, String> notifyMap = WXPayUtil.xmlToMap(xmlData);
|
||||
//WechatRefundNotify notify = WXPayUtil.xmlToEntity(xmlData, WechatRefundNotify.class);
|
||||
|
||||
Long companyId = companyWechatConfigMapper.getCompanyIdByMchId(notifyMap.get("mch_id"));
|
||||
CompanyWechatConfig wechatConfig = companyWechatConfigMapper.getCompanyIdByMchId(notifyMap.get("mch_id"));
|
||||
//CompanyWechatConfig wechatConfig = companyWechatConfigMapper.getWechatConfigByCompanyId(companyId);
|
||||
//Long companyId = companyWechatConfigMapper.getCompanyIdByMchId(notifyMap.getMchid());
|
||||
|
||||
|
||||
Boolean isRefundSuccess;
|
||||
// 验证签名
|
||||
if (!wechatPayService.verifyNotifySign(companyId, notifyMap)) {
|
||||
logger.warn("微信退款通知签名验证失败,公司ID: {}", companyId);
|
||||
return buildResponse("FAIL", "签名失败");
|
||||
try {
|
||||
Map<String, String> decryptMap = wechatPayService.decryptRefundNotify(xmlData, wechatConfig.getApikey());
|
||||
isRefundSuccess = wechatPayService.processRefundNotify(decryptMap);
|
||||
} catch (Exception e){
|
||||
logger.warn("微信退款通知签名验证失败,公司ID: {}", wechatConfig.getId());
|
||||
return buildResponse("FAIL", "解密失败");
|
||||
}
|
||||
|
||||
|
||||
String returnCode = notifyMap.get("return_code");
|
||||
if (!"SUCCESS".equals(returnCode)) {
|
||||
logger.warn("微信退款通知返回失败,公司ID: {}: {}", companyId, notifyMap.get("return_msg"));
|
||||
logger.warn("微信退款通知返回失败,公司ID: {}: {}", wechatConfig.getId(), notifyMap.get("return_msg"));
|
||||
return buildResponse("FAIL", "返回失败");
|
||||
}
|
||||
|
||||
@ -207,13 +217,12 @@ public class PaymentController {
|
||||
String refundStatus = notifyMap.get("refund_status");
|
||||
|
||||
// 更新数据库中的退款状态
|
||||
boolean success = wechatPayService.processRefundNotify(companyId, notifyMap);
|
||||
if (success) {
|
||||
if (isRefundSuccess) {
|
||||
logger.info("退款处理完成,公司ID: {}, 退款单号: {}, 微信退款单号: {}, 状态: {}",
|
||||
companyId, outRefundNo, refundId, refundStatus);
|
||||
wechatConfig.getId(), outRefundNo, refundId, refundStatus);
|
||||
return buildResponse("SUCCESS", "OK");
|
||||
} else {
|
||||
logger.error("更新退款状态失败,公司ID: {}, 退款单号: {}", companyId, outRefundNo);
|
||||
logger.error("更新退款状态失败,公司ID: {}, 退款单号: {}", wechatConfig.getId(), outRefundNo);
|
||||
return buildResponse("FAIL", "更新退款状态失败");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user