From ab9cd2c82bd64de8e33510db1d1e78a5b3b4de70 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 20 四月 2026 19:37:20 +0800
Subject: [PATCH] 代码生成

---
 server/services/src/main/java/com/doumee/config/alipay/AlipayFundTransUniTransfer.java |  153 +++++++++++++++++++++++++++++----------------------
 1 files changed, 87 insertions(+), 66 deletions(-)

diff --git a/server/services/src/main/java/com/doumee/config/alipay/AlipayFundTransUniTransfer.java b/server/services/src/main/java/com/doumee/config/alipay/AlipayFundTransUniTransfer.java
index e495576..198fb45 100644
--- a/server/services/src/main/java/com/doumee/config/alipay/AlipayFundTransUniTransfer.java
+++ b/server/services/src/main/java/com/doumee/config/alipay/AlipayFundTransUniTransfer.java
@@ -1,87 +1,108 @@
 package com.doumee.config.alipay;
 
-import com.alipay.v3.ApiException;
 import com.alipay.v3.ApiClient;
-import com.alipay.v3.util.model.AlipayConfig;
+import com.alipay.v3.ApiException;
 import com.alipay.v3.Configuration;
 import com.alipay.v3.api.AlipayFundTransUniApi;
 import com.alipay.v3.model.*;
+import com.alipay.v3.util.model.AlipayConfig;
+import com.doumee.config.mybatis.SpringUtils;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.dao.dto.AlipayTransferDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 
+import javax.annotation.PostConstruct;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 
+/**
+ * 鏀粯瀹濆崟绗旇浆璐﹀伐鍏风被
+ * @author rk
+ * @date 2026/04/20
+ */
+@Slf4j
+@org.springframework.context.annotation.Configuration
 public class AlipayFundTransUniTransfer {
 
-    public static void main(String[] args) throws ApiException  {
-        // 鍒濆鍖朣DK
-        ApiClient defaultClient = Configuration.getDefaultApiClient();
-        // 鍒濆鍖朼lipay鍙傛暟锛堝叏灞�璁剧疆涓�娆★級
-        defaultClient.setAlipayConfig(getAlipayConfig());
-        // 鏋勯�犺姹傚弬鏁颁互璋冪敤鎺ュ彛
-        AlipayFundTransUniApi api = new AlipayFundTransUniApi();
-        AlipayFundTransUniTransferModel data = new AlipayFundTransUniTransferModel();
-        // 璁剧疆鍟嗗渚у敮涓�璁㈠崟鍙�
-        data.setOutBizNo("202606300001");
-        // 璁剧疆璁㈠崟鎬婚噾棰�
-        data.setTransAmount("1");
-        // 璁剧疆鎻忚堪鐗瑰畾鐨勪笟鍔″満鏅�
-        data.setBizScene("DIRECT_TRANSFER");
-        // 璁剧疆涓氬姟浜у搧鐮�
-        data.setProductCode("TRANS_ACCOUNT_NO_PWD");
-        // 璁剧疆杞处涓氬姟鐨勬爣棰�
-        data.setOrderTitle("201905浠e彂");
-        // 璁剧疆鍘熸敮浠樺疂涓氬姟鍗曞彿
-        data.setOriginalOrderId("20190620110075000006640000063056");
-        // 璁剧疆鏀舵鏂逛俊鎭�
-        Participant payeeInfo = new Participant();
-        payeeInfo.setIdentity("15345690849");
-        payeeInfo.setName("姹熻悕");
-        payeeInfo.setIdentityType("ALIPAY_LOGON_ID");
-        data.setPayeeInfo(payeeInfo);
-        // 璁剧疆涓氬姟澶囨敞
-        data.setRemark("201905浠e彂");
-        // 璁剧疆杞处鍦烘櫙鍚嶇О
-        data.setTransferSceneName("浣i噾鎶ラ叕");
+    private static AlipayConfig alipayConfig;
 
-        // 璁剧疆杞处鍦烘櫙涓婃姤淇℃伅
-        List<TransferSceneReportInfo> transferSceneReportInfos = new ArrayList<TransferSceneReportInfo>();
-        TransferSceneReportInfo transferSceneReportInfos0 = new TransferSceneReportInfo();
-        transferSceneReportInfos0.setInfoType("浣i噾鎶ラ叕璇存槑");
-        transferSceneReportInfos0.setInfoContent("3鏈堝鏀挎湇鍔℃姤閰�");
-        transferSceneReportInfos.add(transferSceneReportInfos0);
-        data.setTransferSceneReportInfos(transferSceneReportInfos);
+    @Autowired
+    private AlipayProperties alipayProperties;
 
-        // 璁剧疆杞处涓氬姟璇锋眰鐨勬墿灞曞弬鏁�
-        data.setBusinessParams("{\"payer_show_name_use_alias\":\"true\"}");
+    public static AlipayFundTransUniTransfer me() {
+        return SpringUtils.get().getBean(AlipayFundTransUniTransfer.class);
+    }
 
-       /* // 璁剧疆绛惧悕淇℃伅
-        SignData signData = new SignData();
-        signData.setOriSign("EqHFP0z4a9iaQ1ep==");
-        signData.setPartnerId("绛惧悕琚巿鏉冩柟鏀粯瀹濊处鍙稩D");
-        signData.setOriAppId("2021000185629012");
-        signData.setOriOutBizNo("鍟嗘埛璁㈠崟鍙�");
-        signData.setOriSignType("RSA2");
-        signData.setOriCharSet("UTF-8");
-        data.setSignData(signData);
-*/
+    @PostConstruct
+    void init() {
+        this.loadAlipayConfig();
+    }
+
+    public void loadAlipayConfig() {
         try {
-            AlipayFundTransUniTransferResponseModel response = api.transfer(data);
-        } catch (ApiException e) {
-            AlipayFundTransUniTransferDefaultResponse errorObject = (AlipayFundTransUniTransferDefaultResponse) e.getErrorObject();
-            System.out.println("璋冪敤澶辫触:" + errorObject);
+            AlipayConfig config = new AlipayConfig();
+            config.setServerUrl("https://openapi.alipay.com");
+            config.setAppId(StringUtils.trimToNull(alipayProperties.getAppId()));
+            config.setPrivateKey(StringUtils.trimToNull(alipayProperties.getPrivateKey()));
+            config.setAppCertPath(StringUtils.trimToNull(alipayProperties.getAppCertPath()));
+            config.setAlipayPublicCertPath(StringUtils.trimToNull(alipayProperties.getAlipayPublicCertPath()));
+            config.setRootCertPath(StringUtils.trimToNull(alipayProperties.getRootCertPath()));
+            alipayConfig = config;
+            log.info("鏀粯瀹濋厤缃垵濮嬪寲鎴愬姛, appId={}", config.getAppId());
+        } catch (Exception e) {
+            log.error("鏀粯瀹濋厤缃垵濮嬪寲澶辫触: {}", e.getMessage(), e);
         }
     }
 
-    private static AlipayConfig getAlipayConfig() {
-        AlipayConfig alipayConfig = new AlipayConfig();
-        alipayConfig.setServerUrl("https://openapi.alipay.com");
-        alipayConfig.setAppId("2021006147660139");
-        String privateKey  = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDEeqqkZztBHfK+vpyBi6ejgDTHZuZ3yiuXds+lRBbMo/g24F5trH+oLHW0gMhSxihFfQBBIpVBXDsPQK4ZkhDWTaOBktnU1UMRoOEiaaZU6EiWy10ePFUmpdXpkCQEp7rc88OwI90p58S3+L+Ckak60WqNwJBdB5YGBaUunryBA78U4zW1KNY7JvoRnZDcFMQiczikwUzhO7EAi0yVrVpsVsc9s87mcS4uOJKx4qb2E83r9RJ1z30db+cIIZRiLP2oNZBLYzgKpOouE+uIgxhQzlh6cOASNZQulXuUjoT/+Y9w4njfl4TmKIXWcJFKIMc6kMiux9tTncpp0TqRwk1tAgMBAAECggEALkSYtJheusnbpRFr95G0i2sggqh3s1PXihZ/dXKgT9Z5GCsj8X3Cng7CNRxykBN73kk+axhCv56Bhej8Vqcv8ddcnqG/TEBgR+Fzws/QTIRau6/uILWic7RvuE2qPbJl7aw1s9/uL/UVPSGFr7CvgltYVUM4e7/Sk1529JCK4XJfoXP5tKJ3OaXssvaFnCKEU8IGQkjRG+lUZJhAHVtClGHtgrhevgRhy2zre5wp2qSa8d/MqrPruSYS02hn9b5Nl6i2PlUS6dGlJ4lrxYTG22ukYYoxAPNPS7gnvmveXonWP7b5tPhKRpZjnoySojz3WECUlhz/v8wM1cDrpq+GQQKBgQDsc7y2rlx4f77a7ORfb5/qWHCOJs1cIzggj0kJ7TgFGe71kbCQ5nywD/Fe5V9OwbW+DCxOME+SrrHeiK4axWiu5si/1JlurJoxNy+4k4ywk3ZA3Nv2aBhlPqfkwDhJ0z7Mgsq2c/YgnVddmSvKZoC39wA77ovks4GDxaBOt8N7PQKBgQDUuPGgzkwcgb60UdaxfMbacrPsW26vDxaE4ceuXo2m8KDiCIqkF2y9r6AdWMTgGGSJwOsk7+FP+21VdRivCg9HcOLWngveUc6xDIuqKHVpemMo3SdCF4Wqf96rRc3VOBr5cfIdWxeorZf5umMyKnIAjAFETOOrK7eLTTmjyLD98QKBgB82S+Plcklpu3zUpnS+nGJn2Du7fYI7F+6cW2zXBn0N5lA+Mgt+kVkAUcFQD9uqkF4M51BO6kIXk10nt6vLAT2NM1S3MKW+XQBAI6l+uKSaYpK/VL3bEdVThwAYK5X7L5/5Z97bwdKeUmkFjhVCoJ0oGrzOiWLgGymUzct2UHSVAoGBAMb+7Cs+Ub0pMrmFBY6r52pbey1Uq0pglvRgMmhQU7sjx50r2GaA81zPer15WVM5/nNPYaoALYqg7jrPe/PjOT/fvpR+7SNg7DZ8QftANfYiY7jKifst/gDt9ePLPS6FedZ4XcJQgOVu34jicAFx64vPbS/zrddm4iEScSVijRBBAoGAXCheERsx8+n16Us/DttXFUa1nc7+D8WR6buM1QMZgQCVF2qp3XtM+FusCKL4+q1+dtag8svLjJFp9QbaAXqX8Zk7rn8wUHbDloPTPy9XWgrPowyL9MPU+e/Rq8Hr6TWPDBd4TU64YzIEfBQYpJXfZbXhVYmK3o7xHXKB1x4vvEM=";
-        alipayConfig.setPrivateKey(privateKey);
-        alipayConfig.setAppCertPath("pay/pro/appCertPublicKey.crt");
-        alipayConfig.setAlipayPublicCertPath("pay/pro/alipayCertPublicKey_RSA2.crt");
-        alipayConfig.setRootCertPath("pay/pro/alipayRootCert.crt");
+    /**
+     * 鍗曠瑪杞处鍒版敮浠樺疂璐︽埛
+     *
+     * @param dto 杞处鍙傛暟
+     * @return 鏀粯瀹濊浆璐﹀崟鍙�
+     */
+    public static String transfer(AlipayTransferDTO dto) throws ApiException {
+        ApiClient defaultClient = Configuration.getDefaultApiClient();
+        defaultClient.setAlipayConfig(alipayConfig);
+        AlipayFundTransUniApi api = new AlipayFundTransUniApi();
+        AlipayFundTransUniTransferModel data = new AlipayFundTransUniTransferModel();
+        data.setOutBizNo(dto.getOutBizNo());
+        data.setTransAmount(dto.getTransAmount().setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
+        data.setBizScene("DIRECT_TRANSFER");
+        data.setProductCode("TRANS_ACCOUNT_NO_PWD");
+        data.setOrderTitle("浣i噾鎻愮幇");
 
-        return alipayConfig;
+        Participant payeeInfo = new Participant();
+        payeeInfo.setIdentity(dto.getPayeeAccount());
+        payeeInfo.setName(dto.getPayeeName());
+        payeeInfo.setIdentityType("ALIPAY_LOGON_ID");
+        data.setPayeeInfo(payeeInfo);
+
+        data.setRemark(dto.getRemark());
+        data.setTransferSceneName("浣i噾鎶ラ叕");
+
+        List<TransferSceneReportInfo> reportInfos = new ArrayList<>();
+        TransferSceneReportInfo reportInfo = new TransferSceneReportInfo();
+        reportInfo.setInfoType("浣i噾鎶ラ叕璇存槑");
+        reportInfo.setInfoContent("浣i噾鎻愮幇");
+        reportInfos.add(reportInfo);
+        data.setTransferSceneReportInfos(reportInfos);
+
+        data.setBusinessParams("{\"payer_show_name_use_alias\":\"true\"}");
+
+        try {
+            AlipayFundTransUniTransferResponseModel response = api.transfer(data);
+            log.info("鏀粯瀹濊浆璐︽垚鍔�, outBizNo={}, orderId={}", dto.getOutBizNo(), response.getOrderId());
+            return response.getOrderId();
+        } catch (ApiException e) {
+            AlipayFundTransUniTransferDefaultResponse errorObject =
+                    (AlipayFundTransUniTransferDefaultResponse) e.getErrorObject();
+            log.error("鏀粯瀹濊浆璐﹀け璐�, outBizNo={}, error={}", dto.getOutBizNo(), errorObject);
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),
+                    "杞处澶辫触锛�" + (errorObject != null ? errorObject.toString() : e.getMessage()));
+        }
     }
-}
\ No newline at end of file
+}

--
Gitblit v1.9.3