KKSU
2025-02-05 9634244f5ad3c8493fb28e3a32d7526977cdd160
feat(pay): 添加 FIUU支付功能

- 新增 FIUUOrderRequest 类用于处理支付请求
- 实现 FIUUPayController 控制器处理支付初始化
- 添加支付参数生成逻辑,包括 merchant_id、orderid、amount等
- 使用 MD5算法生成 vcode 验证码
- 返回支付参数供前端使用
2 files added
69 ■■■■■ changed files
src/main/java/cc/mrbird/febs/pay/controller/FIUUPayController.java 56 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/model/FIUUOrderRequest.java 13 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/controller/FIUUPayController.java
New file
@@ -0,0 +1,56 @@
package cc.mrbird.febs.pay.controller;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.pay.model.FIUUOrderRequest;
import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;
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.RestController;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@RestController
@RequestMapping(value = "/api/fuPay")
@RequiredArgsConstructor
@Api(value = "FIUUPayController", tags = "FIUU支付")
public class FIUUPayController {
    @PostMapping("/initPayment")
    public FebsResponse initPayment(@RequestBody FIUUOrderRequest orderRequest) {
        try {
            String merchantId = "YOUR_MERCHANT_ID";
            String verifyKey = "YOUR_VERIFY_KEY";
            String returnUrl = "https://your-app.com/payment/callback"; // 支付结果回调地址
            // 生成 vcode(MD5(amount + merchantId + orderId + verifyKey))
            String vcode = DigestUtils.md5Hex(
                    orderRequest.getAmount() +
                            merchantId +
                            orderRequest.getOrderId() +
                            verifyKey
            );
            // 返回支付参数
            Map<String, String> params = new HashMap<>();
            params.put("merchant_id", merchantId);
            params.put("orderid", orderRequest.getOrderId());
            params.put("amount", orderRequest.getAmount());
            params.put("bill_name", orderRequest.getBuyerName());
            params.put("bill_email", orderRequest.getBuyerEmail());
            params.put("bill_mobile", orderRequest.getBuyerMobile());
            params.put("bill_desc", orderRequest.getDescription());
            params.put("currency", "MYR"); // 默认 MYR
            params.put("vcode", vcode);
            params.put("returnurl", returnUrl);
            return new FebsResponse().success().data(params);
        } catch (Exception e) {
            return new FebsResponse().fail().data("支付参数生成失败");
        }
    }
}
src/main/java/cc/mrbird/febs/pay/model/FIUUOrderRequest.java
New file
@@ -0,0 +1,13 @@
package cc.mrbird.febs.pay.model;
import lombok.Data;
@Data
public class FIUUOrderRequest {
    private String amount;
    private String orderId;
    private String buyerName;
    private String buyerEmail;
    private String buyerMobile;
    private String description;
}