package com.ruoyi.web.controller.common; import java.util.Map; import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.system.service.ISysTaskPaymentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 支付回调Controller * * @author ruoyi * @date 2025-01-15 */ @RestController @RequestMapping("/payment/callback") public class PaymentCallbackController extends BaseController { private static final Logger log = LoggerFactory.getLogger(PaymentCallbackController.class); @Autowired private ISysTaskPaymentService taskPaymentService; /** * 微信支付回调 */ @Anonymous @PostMapping("/wechat") public AjaxResult wechatCallback(@RequestBody Map params) { log.info("收到微信支付回调:{}", params); // TODO: 实际项目中需要验证签名 String outTradeNo = (String) params.get("outTradeNo"); if (StringUtils.isEmpty(outTradeNo)) { outTradeNo = (String) params.get("bizOrderId"); } String tradeNo = (String) params.get("tradeNo"); if (StringUtils.isEmpty(tradeNo)) { tradeNo = (String) params.get("channelTradeNo"); } boolean success = taskPaymentService.handlePaymentCallback(outTradeNo, tradeNo, "WECHAT"); return success ? success() : error("处理失败"); } /** * 支付宝支付回调 */ @Anonymous @PostMapping("/alipay") public AjaxResult alipayCallback(@RequestBody Map params) { log.info("收到支付宝支付回调:{}", params); // TODO: 实际项目中需要验证签名 String outTradeNo = (String) params.get("outTradeNo"); if (StringUtils.isEmpty(outTradeNo)) { outTradeNo = (String) params.get("bizOrderId"); } String tradeNo = (String) params.get("tradeNo"); if (StringUtils.isEmpty(tradeNo)) { tradeNo = (String) params.get("channelTradeNo"); } boolean success = taskPaymentService.handlePaymentCallback(outTradeNo, tradeNo, "ALIPAY"); return success ? success() : error("处理失败"); } }