PayMethodSwitchController.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package com.ruoyi.app.pay;
  2. import com.ruoyi.app.pay.dto.PayMethodSwitchRequest;
  3. import com.ruoyi.common.annotation.Anonymous;
  4. import com.ruoyi.common.core.domain.AjaxResult;
  5. import com.ruoyi.common.exception.ServiceException;
  6. import com.ruoyi.common.utils.MessageUtils;
  7. import com.ruoyi.system.utils.Auth;
  8. import com.ruoyi.system.utils.JwtUtil;
  9. import org.springframework.web.bind.annotation.PostMapping;
  10. import org.springframework.web.bind.annotation.RequestBody;
  11. import org.springframework.web.bind.annotation.RequestHeader;
  12. import org.springframework.web.bind.annotation.RequestMapping;
  13. import org.springframework.web.bind.annotation.RestController;
  14. /**
  15. * 待支付订单更换支付方式入口(#661,2026-09-22)。
  16. *
  17. * <p>只服务「换方式」场景:原方式重试仍走 /pay/omg/retry 与 /pay/line/create,行为不变。
  18. * 业务校验在 {@link PayMethodSwitchService},本控制器只做入参兜底与异常翻译。
  19. */
  20. @RestController
  21. @RequestMapping("/pay")
  22. public class PayMethodSwitchController {
  23. private final PayMethodSwitchService switchService;
  24. public PayMethodSwitchController(PayMethodSwitchService switchService) {
  25. this.switchService = switchService;
  26. }
  27. /** 用户对待支付订单更换支付方式:回写 payType 并按新方式拉起支付(到付/现金直接成功)。 */
  28. @Anonymous
  29. @Auth
  30. @PostMapping("/switch")
  31. public AjaxResult switchMethod(@RequestHeader String token,
  32. @RequestBody(required = false) PayMethodSwitchRequest request) {
  33. if (request == null || request.getOrderId() == null || request.getOrderId().trim().isEmpty()) {
  34. return AjaxResult.error(MessageUtils.message("no.pay.switch.order.invalid"));
  35. }
  36. try {
  37. Long userId = Long.valueOf(new JwtUtil().getusid(token));
  38. return switchService.switchMethod(userId, request);
  39. } catch (ServiceException exception) {
  40. // 业务拒绝(订单不可支付/方式非法/闸门限制)携带国际化文案原样返回
  41. return AjaxResult.error(exception.getMessage());
  42. } catch (Exception exception) {
  43. return AjaxResult.error(MessageUtils.message("no.pay.switch.failed"));
  44. }
  45. }
  46. }