From 35ec950269834c253e503c50677829dc3ba51092 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Sat, 08 Feb 2025 13:45:18 +0800 Subject: [PATCH] refactor(pay): 为 FiuuReturnController 添加 appCode 参数 --- src/main/java/cc/mrbird/febs/pay/controller/FiuuReturnController.java | 48 ++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 42 insertions(+), 6 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/pay/controller/FiuuReturnController.java b/src/main/java/cc/mrbird/febs/pay/controller/FiuuReturnController.java index 0dca5b3..6783518 100644 --- a/src/main/java/cc/mrbird/febs/pay/controller/FiuuReturnController.java +++ b/src/main/java/cc/mrbird/febs/pay/controller/FiuuReturnController.java @@ -10,21 +10,60 @@ import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @Slf4j @Controller -@Api(value = "FIUUController", tags = "FIUU支付") +//@RestController +@Api(value = "FiuuReturnController", tags = "FIUU支付-ReturnURL") @RequestMapping(value = "/api/fuPayReturn") public class FiuuReturnController { + + @PostMapping("/payment/callback") + public String handlePaymentCallback( + @RequestParam("amount") String amount, + @RequestParam("orderid") String orderId, + @RequestParam("tranID") String tranId, + @RequestParam("status") String status, + @RequestParam("domain") String domain, + @RequestParam("currency") String currency, + @RequestParam("paydate") String payDate, + @RequestParam("approcode") String appCode, + @RequestParam("skey") String skey, + Model model) { + +// // 验证skey以确保数据完整性 +// if (!validateSkey(tranId, orderId, status, domain, amount, currency, payDate, skey)) { +// return "error"; // 如果验证失败,跳转到错误页面 +// } + + // 将支付结果信息传递给支付成功页面 + model.addAttribute("amount", amount); + model.addAttribute("orderId", orderId); + model.addAttribute("tranId", tranId); + model.addAttribute("status", status); + model.addAttribute("currency", currency); + model.addAttribute("payDate", payDate); + + // 跳转到支付成功页面 + return "payment-success"; + } + + private boolean validateSkey(String tranId, String orderId, String status, String domain, + String amount, String currency, String payDate, String skey) { + // 这里实现skey的验证逻辑 + // 根据支付网关提供的skey生成规则,生成skey并与传入的skey进行比较 + // 如果一致,返回true,否则返回false + return true; // 这里假设验证通过 + } private static final String SECRET_KEY = "59c709fc18978a6a83b87f05d37cecbf"; @Resource @@ -41,8 +80,7 @@ @RequestParam("currency") String currency, @RequestParam("paydate") String payDate, @RequestParam("approcode") String appCode, - @RequestParam("skey") String receivedSkey, - HttpServletResponse response) throws IOException{ + @RequestParam("skey") String receivedSkey) throws IOException{ // 计算 skey 验证 String calculatedSkey = calculateSkey(tranId, orderId, status, domain, amount, currency, payDate, appCode); @@ -53,7 +91,6 @@ log.info("callback calculatedSkey: {}", calculatedSkey); log.info("callback payResult: {}", mallOrderInfo.getPayResult()); if("1".equals(mallOrderInfo.getPayResult())){ - response.sendRedirect("/pages/order/pay/paySuccess?amount="+amount+"&type=3"); return; } if (!calculatedSkey.equalsIgnoreCase(receivedSkey)) { @@ -62,7 +99,6 @@ } if ("00".equals(status)) { updateOrderStatus(orderId, status, amount, payDate, tranId); - response.sendRedirect("/pages/order/pay/paySuccess?amount="+amount+"&type=3"); return; } } -- Gitblit v1.9.1