From 9634244f5ad3c8493fb28e3a32d7526977cdd160 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 05 Feb 2025 11:58:50 +0800
Subject: [PATCH] feat(pay): 添加 FIUU支付功能

---
 src/main/java/cc/mrbird/febs/pay/model/FIUUOrderRequest.java       |   13 ++++++
 src/main/java/cc/mrbird/febs/pay/controller/FIUUPayController.java |   56 ++++++++++++++++++++++++++++
 2 files changed, 69 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/pay/controller/FIUUPayController.java b/src/main/java/cc/mrbird/febs/pay/controller/FIUUPayController.java
new file mode 100644
index 0000000..1c1d606
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/controller/FIUUPayController.java
@@ -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("支付参数生成失败");
+        }
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/pay/model/FIUUOrderRequest.java b/src/main/java/cc/mrbird/febs/pay/model/FIUUOrderRequest.java
new file mode 100644
index 0000000..39c4f26
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/pay/model/FIUUOrderRequest.java
@@ -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;
+}

--
Gitblit v1.9.1