From b454df5959c07ed99f55bd1f528db6b9eb54b2a7 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Sat, 08 Feb 2025 15:22:26 +0800 Subject: [PATCH] fix(pay): 修正 Fiuu 回调参数名 --- src/main/java/cc/mrbird/febs/pay/controller/FiuuReturnController.java | 42 +++++++++++++++++++++++------------------- 1 files changed, 23 insertions(+), 19 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 49c41fe..a3f53b0 100644 --- a/src/main/java/cc/mrbird/febs/pay/controller/FiuuReturnController.java +++ b/src/main/java/cc/mrbird/febs/pay/controller/FiuuReturnController.java @@ -9,18 +9,19 @@ import cn.hutool.core.date.DateUtil; 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 org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @Slf4j -@RestController +@Controller +//@RestController @Api(value = "FiuuReturnController", tags = "FIUU支付-ReturnURL") @RequestMapping(value = "/api/fuPayReturn") public class FiuuReturnController { @@ -29,9 +30,8 @@ @Resource private MallOrderInfoMapper mallOrderInfoMapper; - // Java 通知接口 暂时停止使用 - @PostMapping("/callback") - public void handlePaymentCallback( + @PostMapping("/payment/callback") + public String handlePaymentCallback( @RequestParam("amount") String amount, @RequestParam("orderid") String orderId, @RequestParam("tranID") String tranId, @@ -39,28 +39,32 @@ @RequestParam("domain") String domain, @RequestParam("currency") String currency, @RequestParam("paydate") String payDate, - @RequestParam("approcode") String appCode, - @RequestParam("skey") String receivedSkey) throws IOException{ + @RequestParam("appcode") String appCode, + @RequestParam("skey") String receivedSkey, + Model model) { - // 计算 skey 验证 + // 验证skey以确保数据完整性 String calculatedSkey = calculateSkey(tranId, orderId, status, domain, amount, currency, payDate, appCode); - MallOrderInfo mallOrderInfo = ValidateEntityUtils - .ensureColumnReturnEntity(orderId, MallOrderInfo::getId, mallOrderInfoMapper::selectOne, "订单不存在"); log.info("callback status: {}", status); log.info("callback skey: {}", receivedSkey); log.info("callback calculatedSkey: {}", calculatedSkey); - log.info("callback payResult: {}", mallOrderInfo.getPayResult()); - if("1".equals(mallOrderInfo.getPayResult())){ - return; - } + + // 将支付结果信息传递给支付成功页面 + model.addAttribute("amount", amount); + model.addAttribute("orderId", orderId); + model.addAttribute("tranId", tranId); + model.addAttribute("status", status); + model.addAttribute("currency", currency); + model.addAttribute("payDate", payDate); + if (!calculatedSkey.equalsIgnoreCase(receivedSkey)) { // 记录安全警告日志 throw new FebsException("订单回调失败,---"+orderId); } - if ("00".equals(status)) { - updateOrderStatus(orderId, status, amount, payDate, tranId); - return; - } + updateOrderStatus(orderId, status, amount, payDate, tranId); + + // 跳转到支付成功页面 + return "payment-success"; } private String calculateSkey(String tranId, String orderId, String status, -- Gitblit v1.9.1