无忧回调修改
This commit is contained in:
@@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory;
|
|||||||
import org.springframework.dao.DuplicateKeyException;
|
import org.springframework.dao.DuplicateKeyException;
|
||||||
import org.springframework.web.bind.annotation.ExceptionHandler;
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
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.context.request.WebRequest;
|
||||||
import org.springframework.web.servlet.NoHandlerFoundException;
|
import org.springframework.web.servlet.NoHandlerFoundException;
|
||||||
|
|
||||||
@@ -33,33 +34,37 @@ public class SqxExceptionHandler {
|
|||||||
|
|
||||||
@ExceptionHandler(NoHandlerFoundException.class)
|
@ExceptionHandler(NoHandlerFoundException.class)
|
||||||
public Result handlerNoFoundException(Exception e, WebRequest webRequest) {
|
public Result handlerNoFoundException(Exception e, WebRequest webRequest) {
|
||||||
String requestUrl = webRequest.getDescription(false).split(" ")[1];
|
logErrorInfo(webRequest);
|
||||||
logger.error("请求路径不存在:{}", requestUrl);
|
|
||||||
logger.error(e.getMessage(), e);
|
logger.error(e.getMessage(), e);
|
||||||
return Result.error(404, "路径不存在,请检查路径是否正确");
|
return Result.error(404, "路径不存在,请检查路径是否正确");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExceptionHandler(DuplicateKeyException.class)
|
@ExceptionHandler(DuplicateKeyException.class)
|
||||||
public Result handleDuplicateKeyException(DuplicateKeyException e, WebRequest webRequest) {
|
public Result handleDuplicateKeyException(DuplicateKeyException e, WebRequest webRequest) {
|
||||||
String requestUrl = webRequest.getDescription(false).split(" ")[1];
|
logErrorInfo(webRequest);
|
||||||
logger.error("请求路径:{},数据库中已存在该记录", requestUrl);
|
|
||||||
logger.error(e.getMessage(), e);
|
logger.error(e.getMessage(), e);
|
||||||
return Result.error("数据库中已存在该记录");
|
return Result.error("数据库中已存在该记录");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExceptionHandler(AuthorizationException.class)
|
@ExceptionHandler(AuthorizationException.class)
|
||||||
public Result handleAuthorizationException(AuthorizationException e, WebRequest webRequest) {
|
public Result handleAuthorizationException(AuthorizationException e, WebRequest webRequest) {
|
||||||
String requestUrl = webRequest.getDescription(false).split(" ")[1];
|
logErrorInfo(webRequest);
|
||||||
logger.error("请求路径:{},没有权限", requestUrl);
|
|
||||||
logger.error(e.getMessage(), e);
|
logger.error(e.getMessage(), e);
|
||||||
return Result.error("没有权限,请联系管理员授权");
|
return Result.error("没有权限,请联系管理员授权");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ExceptionHandler(Exception.class)
|
@ExceptionHandler(Exception.class)
|
||||||
public Result handleException(Exception e, WebRequest webRequest) {
|
public Result handleException(Exception e, WebRequest webRequest) {
|
||||||
String requestUrl = webRequest.getDescription(false).split(" ")[1];
|
logErrorInfo(webRequest);
|
||||||
logger.error("请求路径:{},发生异常", requestUrl);
|
|
||||||
logger.error(e.getMessage(), e);
|
logger.error(e.getMessage(), e);
|
||||||
return Result.error();
|
return Result.error();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void logErrorInfo(WebRequest webRequest) {
|
||||||
|
if (webRequest instanceof ServletWebRequest) {
|
||||||
|
ServletWebRequest servletWebRequest = (ServletWebRequest) webRequest;
|
||||||
|
String requestUrl = servletWebRequest.getRequest().getRequestURI();
|
||||||
|
logger.error("请求路径:{},发生异常", requestUrl);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,13 +69,14 @@ public class WuyouController {
|
|||||||
payDetails.setMoney(order.getPayMoney().doubleValue());
|
payDetails.setMoney(order.getPayMoney().doubleValue());
|
||||||
payDetails.setType(1);
|
payDetails.setType(1);
|
||||||
payDetails.setClassify(9);
|
payDetails.setClassify(9);
|
||||||
|
payDetails.setTradeNo(AliPayOrderUtil.createOrderId());
|
||||||
payDetailsDao.insert(payDetails);
|
payDetailsDao.insert(payDetails);
|
||||||
} else {
|
} else {
|
||||||
payDetails.setOrderId(AliPayOrderUtil.createOrderId());
|
payDetails.setTradeNo(AliPayOrderUtil.createOrderId());
|
||||||
payDetailsDao.updateById(payDetails);
|
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) {
|
if (baseResp.getCode() != 200) {
|
||||||
return Result.error(baseResp.getMsg());
|
return Result.error(baseResp.getMsg());
|
||||||
}
|
}
|
||||||
@@ -84,12 +85,12 @@ public class WuyouController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/extractNotify")
|
@PostMapping("/extractNotify")
|
||||||
public String extractNotify(HttpServletRequest request, @RequestBody NotifyDto notifyDto) {
|
public String extractNotify(HttpServletRequest request, NotifyDto notifyDto) {
|
||||||
log.info("无忧支付提现回调, {}", notifyDto);
|
log.info("无忧支付提现回调, {}", notifyDto);
|
||||||
Map<String, Object> params = new HashMap<>();
|
Map<String, Object> params = new HashMap<>();
|
||||||
params.put("callbacks", notifyDto.getCallbacks());
|
params.put("callbacks", notifyDto.getCallbacks());
|
||||||
params.put("total", notifyDto.getTotal());
|
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("status", notifyDto.getStatus());
|
||||||
params.put("msg", notifyDto.getMsg());
|
params.put("msg", notifyDto.getMsg());
|
||||||
|
|
||||||
@@ -103,13 +104,13 @@ public class WuyouController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/notify")
|
@PostMapping("/notify")
|
||||||
public String notify(HttpServletRequest request, @RequestBody NotifyDto notifyDto) {
|
public String notify(HttpServletRequest request, NotifyDto notifyDto) {
|
||||||
log.info("无忧支付回调, {}", notifyDto);
|
log.info("无忧支付回调, {}", notifyDto);
|
||||||
Map<String, Object> params = new HashMap<>();
|
Map<String, Object> params = new HashMap<>();
|
||||||
params.put("callbacks", notifyDto.getCallbacks());
|
params.put("callbacks", notifyDto.getCallbacks());
|
||||||
params.put("total", notifyDto.getTotal());
|
params.put("total", notifyDto.getTotal());
|
||||||
params.put("out_trade_no", notifyDto.getOutTradeNo());
|
params.put("out_trade_no", notifyDto.getOut_trade_no());
|
||||||
params.put("pay_time", notifyDto.getPayTime());
|
params.put("pay_time", notifyDto.getPay_time());
|
||||||
|
|
||||||
String sign = Encrypt.getParamsSign(params);
|
String sign = Encrypt.getParamsSign(params);
|
||||||
if (!sign.equals(notifyDto.getSign())) {
|
if (!sign.equals(notifyDto.getSign())) {
|
||||||
@@ -119,7 +120,13 @@ public class WuyouController {
|
|||||||
|
|
||||||
log.info("无忧支付回调成功, 参数: {}", JSONObject.toJSONString(notifyDto));
|
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) {
|
if (order == null) {
|
||||||
log.error("无忧支付回调订单不存在, 参数: {}", JSONObject.toJSONString(notifyDto));
|
log.error("无忧支付回调订单不存在, 参数: {}", JSONObject.toJSONString(notifyDto));
|
||||||
return "订单不存在";
|
return "订单不存在";
|
||||||
@@ -130,14 +137,8 @@ public class WuyouController {
|
|||||||
return "订单已支付";
|
return "订单已支付";
|
||||||
}
|
}
|
||||||
|
|
||||||
PayDetails payDetails = payDetailsDao.selectByOrderId(notifyDto.getOutTradeNo());
|
|
||||||
|
|
||||||
if (payDetails.getState() != 0) {
|
|
||||||
log.info("订单表信息丢失!");
|
|
||||||
}
|
|
||||||
|
|
||||||
String format = sdf.format(new Date());
|
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.setPayWay(9);
|
||||||
order.setStatus(1);
|
order.setStatus(1);
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ public interface PayDetailsDao extends BaseMapper<PayDetails> {
|
|||||||
|
|
||||||
PayDetails selectByOrderId(@Param("orderId") String orderId);
|
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);
|
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);
|
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);
|
||||||
|
|||||||
@@ -12,11 +12,9 @@ public class NotifyDto {
|
|||||||
private String callbacks;
|
private String callbacks;
|
||||||
private Double total;
|
private Double total;
|
||||||
|
|
||||||
@JSONField(name = "out_trade_no")
|
private String out_trade_no;
|
||||||
private String outTradeNo;
|
|
||||||
|
|
||||||
@JSONField(name = "pay_time")
|
private String pay_time;
|
||||||
private String payTime;
|
|
||||||
|
|
||||||
private String msg;
|
private String msg;
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,10 @@
|
|||||||
select * from pay_details d where d.order_id=#{orderId}
|
select * from pay_details d where d.order_id=#{orderId}
|
||||||
</select>
|
</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 id="updateState">
|
||||||
update pay_details set `state`=#{state},pay_time=#{time},trade_no=#{tradeNo} where id=#{id}
|
update pay_details set `state`=#{state},pay_time=#{time},trade_no=#{tradeNo} where id=#{id}
|
||||||
</update>
|
</update>
|
||||||
@@ -174,4 +178,4 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user