package com.ruoyi.app.pay; import com.ruoyi.app.pay.dto.PayMethodSwitchRequest; import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.system.utils.Auth; import com.ruoyi.system.utils.JwtUtil; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 待支付订单更换支付方式入口(#661,2026-09-22)。 * *

只服务「换方式」场景:原方式重试仍走 /pay/omg/retry 与 /pay/line/create,行为不变。 * 业务校验在 {@link PayMethodSwitchService},本控制器只做入参兜底与异常翻译。 */ @RestController @RequestMapping("/pay") public class PayMethodSwitchController { private final PayMethodSwitchService switchService; public PayMethodSwitchController(PayMethodSwitchService switchService) { this.switchService = switchService; } /** 用户对待支付订单更换支付方式:回写 payType 并按新方式拉起支付(到付/现金直接成功)。 */ @Anonymous @Auth @PostMapping("/switch") public AjaxResult switchMethod(@RequestHeader String token, @RequestBody(required = false) PayMethodSwitchRequest request) { if (request == null || request.getOrderId() == null || request.getOrderId().trim().isEmpty()) { return AjaxResult.error(MessageUtils.message("no.pay.switch.order.invalid")); } try { Long userId = Long.valueOf(new JwtUtil().getusid(token)); return switchService.switchMethod(userId, request); } catch (ServiceException exception) { // 业务拒绝(订单不可支付/方式非法/闸门限制)携带国际化文案原样返回 return AjaxResult.error(exception.getMessage()); } catch (Exception exception) { return AjaxResult.error(MessageUtils.message("no.pay.switch.failed")); } } }