diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/OrderInfo.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/OrderInfo.java index 344b1df..be48d40 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/OrderInfo.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/OrderInfo.java @@ -36,7 +36,7 @@ public class OrderInfo extends BaseEntity private Long userId; /** 金额 分 */ - @Excel(name = "金额 分") + @Excel(name = "金额 元") private BigDecimal amount; /** 支付方式 aliPay / wechatPay / applePay */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/util/PaymentUtil.java b/ruoyi-system/src/main/java/com/ruoyi/system/util/PaymentUtil.java index f6cc389..98d770b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/util/PaymentUtil.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/util/PaymentUtil.java @@ -10,7 +10,7 @@ import java.util.Map; /** * 支付工具类 - * + * * @author ruoyi * @date 2025-01-27 */ @@ -22,25 +22,25 @@ public class PaymentUtil { */ public Map processAliPay(OrderInfo orderInfo, PaymentRequest request) { Map result = new HashMap<>(); - + // TODO: 调用支付宝SDK进行支付 // 这里只是模拟返回支付参数 - + // 构建支付宝支付参数 Map aliPayParams = new HashMap<>(); aliPayParams.put("out_trade_no", orderInfo.getOrderId().toString()); - aliPayParams.put("total_amount", orderInfo.getAmount() / 100.0); + aliPayParams.put("total_amount", orderInfo.getAmount()); aliPayParams.put("subject", StringUtils.isNotEmpty(request.getSubject()) ? request.getSubject() : orderInfo.getOrderName()); aliPayParams.put("body", StringUtils.isNotEmpty(request.getBody()) ? request.getBody() : "购买VIP会员服务"); aliPayParams.put("timeout_express", (request.getTimeoutMinutes() != null ? request.getTimeoutMinutes() : 30) + "m"); aliPayParams.put("product_code", "QUICK_WAP_WAY"); - + result.put("paymentUrl", "https://openapi.alipay.com/gateway.do?"); result.put("orderId", orderInfo.getOrderId()); result.put("amount", orderInfo.getAmount()); result.put("payType", "aliPay"); result.put("params", aliPayParams); - + return result; } @@ -49,59 +49,30 @@ public class PaymentUtil { */ public Map processWechatPay(OrderInfo orderInfo, PaymentRequest request) { Map result = new HashMap<>(); - + // TODO: 调用微信支付SDK进行支付 // 这里只是模拟返回支付参数 - + // 构建微信支付参数 Map wechatPayParams = new HashMap<>(); wechatPayParams.put("out_trade_no", orderInfo.getOrderId().toString()); wechatPayParams.put("total_fee", orderInfo.getAmount()); wechatPayParams.put("body", StringUtils.isNotEmpty(request.getBody()) ? request.getBody() : orderInfo.getOrderName()); wechatPayParams.put("attach", StringUtils.isNotEmpty(request.getAttach()) ? request.getAttach() : "VIP会员服务"); - + if (StringUtils.isNotEmpty(request.getOpenid())) { wechatPayParams.put("openid", request.getOpenid()); } - + result.put("prepayId", "wx_prepay_id_" + System.currentTimeMillis()); result.put("orderId", orderInfo.getOrderId()); result.put("amount", orderInfo.getAmount()); result.put("payType", "wechatPay"); result.put("params", wechatPayParams); - + return result; } - /** - * 处理Apple Pay支付 - */ - public Map processApplePay(OrderInfo orderInfo, PaymentRequest request) { - Map result = new HashMap<>(); - - // TODO: 调用Apple Pay SDK进行支付 - // 这里只是模拟返回支付参数 - - // 构建Apple Pay支付参数 - Map applePayParams = new HashMap<>(); - applePayParams.put("orderId", orderInfo.getOrderId().toString()); - applePayParams.put("amount", orderInfo.getAmount() / 100.0); - applePayParams.put("currency", "CNY"); - applePayParams.put("merchantIdentifier", StringUtils.isNotEmpty(request.getMerchantIdentifier()) ? - request.getMerchantIdentifier() : "merchant.com.example"); - - if (StringUtils.isNotEmpty(request.getPaymentToken())) { - applePayParams.put("paymentToken", request.getPaymentToken()); - } - - result.put("paymentToken", "apple_payment_token_" + System.currentTimeMillis()); - result.put("orderId", orderInfo.getOrderId()); - result.put("amount", orderInfo.getAmount()); - result.put("payType", "applePay"); - result.put("params", applePayParams); - - return result; - } /** * 验证支付回调 @@ -109,11 +80,11 @@ public class PaymentUtil { public boolean verifyPaymentCallback(String orderId, String tradeNo, String payType, String signature) { // TODO: 根据不同的支付方式验证回调签名 // 这里只是模拟验证 - + if (StringUtils.isEmpty(orderId) || StringUtils.isEmpty(tradeNo) || StringUtils.isEmpty(payType)) { return false; } - + // 验证签名逻辑 switch (payType) { case "aliPay": @@ -156,7 +127,7 @@ public class PaymentUtil { */ public boolean processRefund(String orderId, Long refundAmount, String payType) { // TODO: 根据不同的支付方式调用相应的退款接口 - + switch (payType) { case "aliPay": return processAliPayRefund(orderId, refundAmount); @@ -192,4 +163,4 @@ public class PaymentUtil { // TODO: 调用Apple Pay退款接口 return true; } -} \ No newline at end of file +} diff --git a/ruoyi-system/src/main/resources/mapper/system/OrderInfoMapper.xml b/ruoyi-system/src/main/resources/mapper/system/OrderInfoMapper.xml index 8b021a1..a47540a 100644 --- a/ruoyi-system/src/main/resources/mapper/system/OrderInfoMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/OrderInfoMapper.xml @@ -172,6 +172,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"