From 4bb9e8497a255cb4e7b7218e07bbd788978ca846 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Fri, 07 Feb 2025 17:22:46 +0800 Subject: [PATCH] feat(pay): 添加支付成功和失败页面并更新回调逻辑 --- src/main/java/cc/mrbird/febs/pay/controller/FIUUController.java | 45 ++++++++++++++++++++++++++++----------------- 1 files changed, 28 insertions(+), 17 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/pay/controller/FIUUController.java b/src/main/java/cc/mrbird/febs/pay/controller/FIUUController.java index e419e3e..dba9f02 100644 --- a/src/main/java/cc/mrbird/febs/pay/controller/FIUUController.java +++ b/src/main/java/cc/mrbird/febs/pay/controller/FIUUController.java @@ -16,7 +16,12 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.collections.CollectionUtils; -import org.springframework.web.bind.annotation.*; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -25,7 +30,7 @@ import java.util.Map; @Slf4j -@RestController +@Controller @Api(value = "FIUUController", tags = "FIUU支付") @RequestMapping(value = "/api/fuPay") public class FIUUController { @@ -64,7 +69,7 @@ params.put("bill_desc", productNames); params.put("currency", "MYR"); // 默认 MYR params.put("vcode", vcode); -// params.put("returnurl", returnUrl); + params.put("returnurl", returnUrl); return new FebsResponse().success().data(params); } catch (Exception e) { @@ -145,20 +150,18 @@ ValidateEntityUtils.ensureNotEqual(mallOrderInfo.getPayResult(), "1", "订单已支付"); ValidateEntityUtils.ensureEqual(mallOrderInfo.getAmount().toString(), amount, "订单金额异常"); // 更新订单状态 - if ("00".equals(status)) { - mallOrderInfo.setPayMethod("FIUU支付"); - mallOrderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); - mallOrderInfo.setPayResult("1"); - mallOrderInfo.setPayTime(DateUtil.parseDateTime(paydate)); - mallOrderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue()); - mallOrderInfo.setPayOrderNo(tranID); - mallOrderInfoMapper.updateById(mallOrderInfo); - } + mallOrderInfo.setPayMethod("FIUU支付"); + mallOrderInfo.setStatus(OrderStatusEnum.WAIT_SHIPPING.getValue()); + mallOrderInfo.setPayResult("1"); + mallOrderInfo.setPayTime(DateUtil.parseDateTime(paydate)); + mallOrderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue()); + mallOrderInfo.setPayOrderNo(tranID); + mallOrderInfoMapper.updateById(mallOrderInfo); } // Java 通知接口 暂时停止使用 @PostMapping("/callback") - public FebsResponse handlePaymentCallback(@RequestParam Map<String, String> params) { + public String handlePaymentCallback(@RequestParam Map<String, String> params, Model model) { String secretKey = "59c709fc18978a6a83b87f05d37cecbf"; String tranID = params.get("tranID"); String orderId = params.get("orderid"); @@ -172,16 +175,24 @@ // 计算 skey 验证 String preSkey = DigestUtils.md5Hex(tranID + orderId + status + domain + amount + currency); String calculatedSkey = DigestUtils.md5Hex(paydate + domain + preSkey + secretKey); + MallOrderInfo mallOrderInfo = ValidateEntityUtils + .ensureColumnReturnEntity(orderId, MallOrderInfo::getId, mallOrderInfoMapper::selectOne, "订单不存在"); + log.info("callback status: {}", status); + log.info("callback skey: {}", preSkey); + log.info("callback calculatedSkey: {}", calculatedSkey); + log.info("callback payResult: {}", mallOrderInfo.getPayResult()); + if("1".equals(mallOrderInfo.getPayResult())){ + return "success"; + } if (!calculatedSkey.equals(skey)) { throw new FebsException("订单回调失败,---"+orderId); } - - updateOrderStatus(orderId, status, amount, paydate, tranID); if ("00".equals(status)) { - return new FebsResponse().success().data("/pages/order/pay/paySuccess?amount="+ amount +"&type=3"); + updateOrderStatus(orderId, status, amount, paydate, tranID); + return "success"; }else{ - return new FebsResponse().fail().message("支付失败"); + return "fail"; } } -- Gitblit v1.9.1