无忧回调修改

This commit is contained in:
GYJ
2024-12-04 18:08:15 +08:00
parent e8a2e9bee1
commit 32a8eb78d6
5 changed files with 38 additions and 28 deletions

View File

@@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.context.request.ServletWebRequest;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.NoHandlerFoundException;
@@ -33,33 +34,37 @@ public class SqxExceptionHandler {
@ExceptionHandler(NoHandlerFoundException.class)
public Result handlerNoFoundException(Exception e, WebRequest webRequest) {
String requestUrl = webRequest.getDescription(false).split(" ")[1];
logger.error("请求路径不存在:{}", requestUrl);
logErrorInfo(webRequest);
logger.error(e.getMessage(), e);
return Result.error(404, "路径不存在,请检查路径是否正确");
}
@ExceptionHandler(DuplicateKeyException.class)
public Result handleDuplicateKeyException(DuplicateKeyException e, WebRequest webRequest) {
String requestUrl = webRequest.getDescription(false).split(" ")[1];
logger.error("请求路径:{},数据库中已存在该记录", requestUrl);
logErrorInfo(webRequest);
logger.error(e.getMessage(), e);
return Result.error("数据库中已存在该记录");
}
@ExceptionHandler(AuthorizationException.class)
public Result handleAuthorizationException(AuthorizationException e, WebRequest webRequest) {
String requestUrl = webRequest.getDescription(false).split(" ")[1];
logger.error("请求路径:{},没有权限", requestUrl);
logErrorInfo(webRequest);
logger.error(e.getMessage(), e);
return Result.error("没有权限,请联系管理员授权");
}
@ExceptionHandler(Exception.class)
public Result handleException(Exception e, WebRequest webRequest) {
String requestUrl = webRequest.getDescription(false).split(" ")[1];
logger.error("请求路径:{},发生异常", requestUrl);
logErrorInfo(webRequest);
logger.error(e.getMessage(), e);
return Result.error();
}
private void logErrorInfo(WebRequest webRequest) {
if (webRequest instanceof ServletWebRequest) {
ServletWebRequest servletWebRequest = (ServletWebRequest) webRequest;
String requestUrl = servletWebRequest.getRequest().getRequestURI();
logger.error("请求路径:{},发生异常", requestUrl);
}
}
}

View File

@@ -69,13 +69,14 @@ public class WuyouController {
payDetails.setMoney(order.getPayMoney().doubleValue());
payDetails.setType(1);
payDetails.setClassify(9);
payDetails.setTradeNo(AliPayOrderUtil.createOrderId());
payDetailsDao.insert(payDetails);
} else {
payDetails.setOrderId(AliPayOrderUtil.createOrderId());
payDetails.setTradeNo(AliPayOrderUtil.createOrderId());
payDetailsDao.updateById(payDetails);
}
BaseResp baseResp = WuyouPay.payOrder(order.getOrdersNo(), order.getPayMoney().toString(), request.getHeader("User-Agent"));
BaseResp baseResp = WuyouPay.payOrder(order.getTradeNo(), order.getPayMoney().toString(), request.getHeader("User-Agent"));
if (baseResp.getCode() != 200) {
return Result.error(baseResp.getMsg());
}
@@ -84,12 +85,12 @@ public class WuyouController {
}
@PostMapping("/extractNotify")
public String extractNotify(HttpServletRequest request, @RequestBody NotifyDto notifyDto) {
public String extractNotify(HttpServletRequest request, NotifyDto notifyDto) {
log.info("无忧支付提现回调, {}", notifyDto);
Map<String, Object> params = new HashMap<>();
params.put("callbacks", notifyDto.getCallbacks());
params.put("total", notifyDto.getTotal());
params.put("out_trade_no", notifyDto.getOutTradeNo());
params.put("out_trade_no", notifyDto.getOut_trade_no());
params.put("status", notifyDto.getStatus());
params.put("msg", notifyDto.getMsg());
@@ -103,13 +104,13 @@ public class WuyouController {
}
@PostMapping("/notify")
public String notify(HttpServletRequest request, @RequestBody NotifyDto notifyDto) {
public String notify(HttpServletRequest request, NotifyDto notifyDto) {
log.info("无忧支付回调, {}", notifyDto);
Map<String, Object> params = new HashMap<>();
params.put("callbacks", notifyDto.getCallbacks());
params.put("total", notifyDto.getTotal());
params.put("out_trade_no", notifyDto.getOutTradeNo());
params.put("pay_time", notifyDto.getPayTime());
params.put("out_trade_no", notifyDto.getOut_trade_no());
params.put("pay_time", notifyDto.getPay_time());
String sign = Encrypt.getParamsSign(params);
if (!sign.equals(notifyDto.getSign())) {
@@ -119,7 +120,13 @@ public class WuyouController {
log.info("无忧支付回调成功, 参数: {}", JSONObject.toJSONString(notifyDto));
Orders order = ordersService.selectOrderByTradeNo(notifyDto.getOutTradeNo());
PayDetails payDetails = payDetailsDao.selectByTradeNo(notifyDto.getOut_trade_no());
if (payDetails.getState() != 0) {
log.info("订单表信息丢失!");
}
// {"callbacks":"CODE_SUCCESS","out_trade_no":"1000001931380634","pay_time":"1733306566","sign":"7B2C5B55AA09CE07DAE1CC847F51C0BC","total":0.01}
Orders order = ordersService.selectOrderByTradeNo(payDetails.getOrderId());
if (order == null) {
log.error("无忧支付回调订单不存在, 参数: {}", JSONObject.toJSONString(notifyDto));
return "订单不存在";
@@ -130,14 +137,8 @@ public class WuyouController {
return "订单已支付";
}
PayDetails payDetails = payDetailsDao.selectByOrderId(notifyDto.getOutTradeNo());
if (payDetails.getState() != 0) {
log.info("订单表信息丢失!");
}
String format = sdf.format(new Date());
payDetailsDao.updateState(payDetails.getId(), 1, format, notifyDto.getOutTradeNo());
payDetailsDao.updateState(payDetails.getId(), 1, format, notifyDto.getOut_trade_no());
order.setPayWay(9);
order.setStatus(1);

View File

@@ -22,6 +22,8 @@ public interface PayDetailsDao extends BaseMapper<PayDetails> {
PayDetails selectByOrderId(@Param("orderId") String orderId);
PayDetails selectByTradeNo(@Param("tradeNo") String tradeNo);
int updateState(@Param("id") Long id, @Param("state") Integer state, @Param("time") String time, @Param("tradeNo") String tradeNo);
IPage<Map<String, Object>> selectPayDetails(@Param("page") Page<Map<String, Object>> page, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("userId") Long userId, @Param("state") Integer state, @Param("userName") String userName, String orderId);

View File

@@ -12,11 +12,9 @@ public class NotifyDto {
private String callbacks;
private Double total;
@JSONField(name = "out_trade_no")
private String outTradeNo;
private String out_trade_no;
@JSONField(name = "pay_time")
private String payTime;
private String pay_time;
private String msg;

View File

@@ -15,6 +15,10 @@
select * from pay_details d where d.order_id=#{orderId}
</select>
<select id="selectByTradeNo" resultType="com.sqx.modules.pay.entity.PayDetails">
select * from pay_details d where d.trade_no=#{tradeNo}
</select>
<update id="updateState">
update pay_details set `state`=#{state},pay_time=#{time},trade_no=#{tradeNo} where id=#{id}
</update>
@@ -174,4 +178,4 @@
</select>
</mapper>
</mapper>