package com.mtkj.mtpay.controller; import com.mtkj.mtpay.common.Result; import com.mtkj.mtpay.common.ResultCode; import com.mtkj.mtpay.dto.request.CheckoutRequestDTO; import com.mtkj.mtpay.entity.PaymentOrder; import com.mtkj.mtpay.service.PaymentOrderService; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; import java.util.Optional; /** * 支付控制器(PingPong支付) * * @deprecated 系统已切换到 PayPal 支付,此控制器保留以备将来需要时使用 * 如需重新启用,请取消注释 @RestController 和 @RequestMapping 注解 */ @Deprecated @Slf4j // @RestController // @RequestMapping("/api/payment") @RequiredArgsConstructor public class PaymentController { private final PaymentOrderService paymentOrderService; /** * 创建支付订单 */ @PostMapping("/checkout") public ResponseEntity>> checkout(@Valid @RequestBody CheckoutRequestDTO request) { log.info("收到创建支付订单请求,商户订单号: {}", request.getMerchantTransactionId()); PaymentOrder order = paymentOrderService.createPaymentOrder(request); Map data = new HashMap<>(); data.put("merchantTransactionId", order.getMerchantTransactionId()); data.put("token", order.getToken()); data.put("paymentUrl", order.getPaymentUrl()); data.put("status", order.getStatus()); return ResponseEntity.ok(Result.success("订单创建成功", data)); } /** * 查询订单状态 */ @GetMapping("/order/{merchantTransactionId}") public ResponseEntity>> getOrder(@PathVariable String merchantTransactionId) { log.info("查询订单状态,商户订单号: {}", merchantTransactionId); Optional orderOpt = paymentOrderService.findByMerchantTransactionId(merchantTransactionId); if (orderOpt.isPresent()) { PaymentOrder order = orderOpt.get(); Map data = new HashMap<>(); data.put("merchantTransactionId", order.getMerchantTransactionId()); data.put("transactionId", order.getTransactionId() != null ? order.getTransactionId() : ""); data.put("status", order.getStatus()); data.put("amount", order.getAmount()); data.put("currency", order.getCurrency()); data.put("createTime", order.getCreateTime()); data.put("token", order.getToken()); data.put("paymentUrl", order.getPaymentUrl()); return ResponseEntity.ok(Result.success(data)); } else { return ResponseEntity.ok(Result.fail(ResultCode.ORDER_NOT_FOUND)); } } /** * 获取收银台页面HTML * 返回包含SDK初始化的HTML页面 */ @GetMapping("/checkout/page") public ResponseEntity getCheckoutPage(@RequestParam String token) { log.info("获取收银台页面,token: {}", token); String html = generateCheckoutPage(token); return ResponseEntity.ok() .header("Content-Type", "text/html;charset=UTF-8") .body(html); } /** * 生成收银台页面HTML */ private String generateCheckoutPage(String token) { return """ PingPong支付收银台
""".formatted(token); } }