From 1060c73c194b47b4c197089298724a7bd7daa407 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 21 四月 2026 15:57:37 +0800
Subject: [PATCH] 调接口加页面

---
 server/services/src/main/java/com/doumee/config/alipay/AlipayFundTransUniTransfer.java |  195 +++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 173 insertions(+), 22 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 198fb45..be51792 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,16 +1,20 @@
 package com.doumee.config.alipay;
 
-import com.alipay.v3.ApiClient;
+import com.alibaba.fastjson.JSONObject;
 import com.alipay.v3.ApiException;
+import com.alipay.v3.ApiClient;
+import com.alipay.v3.util.model.AlipayConfig;
 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 com.wechat.pay.java.core.RSAAutoCertificateConfig;
 import lombok.extern.slf4j.Slf4j;
+import okhttp3.OkHttpClient;
+import com.wechat.pay.java.core.http.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -19,19 +23,14 @@
 import java.util.ArrayList;
 import java.util.List;
 
-/**
- * 鏀粯瀹濆崟绗旇浆璐﹀伐鍏风被
- * @author rk
- * @date 2026/04/20
- */
 @Slf4j
 @org.springframework.context.annotation.Configuration
 public class AlipayFundTransUniTransfer {
 
-    private static AlipayConfig alipayConfig;
-
     @Autowired
     private AlipayProperties alipayProperties;
+
+    private static AlipayConfig alipayConfig;
 
     public static AlipayFundTransUniTransfer me() {
         return SpringUtils.get().getBean(AlipayFundTransUniTransfer.class);
@@ -46,17 +45,123 @@
         try {
             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()));
+            config.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=";
+            config.setPrivateKey(privateKey);
+            config.setAppCertPath("pay/pro/appCertPublicKey.crt");
+            config.setAlipayPublicCertPath("pay/pro/alipayCertPublicKey_RSA2.crt");
+            config.setRootCertPath("pay/pro/alipayRootCert.crt");
             alipayConfig = config;
             log.info("鏀粯瀹濋厤缃垵濮嬪寲鎴愬姛, appId={}", config.getAppId());
         } catch (Exception e) {
             log.error("鏀粯瀹濋厤缃垵濮嬪寲澶辫触: {}", e.getMessage(), e);
         }
     }
+
+
+    public static void main(String[] args) throws ApiException  {
+        downLoadCertificates();
+    }
+    /**
+     * API瀹夊叏鍔犲瘑閰嶇疆
+     */
+    private static RSAAutoCertificateConfig rsaAutoCertificateConfig() {
+        return new RSAAutoCertificateConfig.Builder()
+                // 鍟嗘埛鍙�
+                .merchantId("1629568742")
+                // 鍟嗘埛API璇佷功绉侀挜鐨勫瓨鏀捐矾寰�
+                .privateKeyFromPath("D://ptzs/apiclient_key.pem")
+                // 鍟嗘埛API璇佷功搴忓垪鍙�
+                .merchantSerialNumber("25D19D18217F4588841E5CD1AA0D1533DE8AF84A")
+                // APIv3瀵嗛挜
+                .apiV3Key("NJTLJSTZYXZRGScaiwubuzichanbu666")
+                .build();
+    }
+    /**
+     * 涓嬭浇璇佷功
+     */
+    public static void downLoadCertificates() {
+        OkHttpClient okHttpClient = new OkHttpClient();
+        HttpClient httpClient = new DefaultHttpClientBuilder()
+                .config(rsaAutoCertificateConfig())
+                .okHttpClient(okHttpClient)
+                .build();
+        HttpHeaders headers = new HttpHeaders();
+        headers.addHeader("Accept", MediaType.APPLICATION_JSON.getValue());
+        HttpRequest executeSendGetHttpRequest = new HttpRequest.Builder()
+                .httpMethod(HttpMethod.GET)
+                .url("https://api.mch.weixin.qq.com/v3/certificates")
+                .headers(headers)
+                .build();
+        try {
+            HttpResponse<JSONObject> execute = httpClient.execute(executeSendGetHttpRequest, JSONObject.class);
+            JSONObject responseBody = execute.getServiceResponse();
+            log.info("涓嬭浇骞冲彴璇佷功杩斿洖:{}", responseBody.toString());
+        } catch (Exception e) {
+            log.error("涓嬭浇骞冲彴璇佷功寮傚父", e);
+        }
+    }
+
+//    public static void testTransger( ) 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噾鎶ラ叕");
+//
+//        // 璁剧疆杞处鍦烘櫙涓婃姤淇℃伅
+//        List<TransferSceneReportInfo> transferSceneReportInfos = new ArrayList<TransferSceneReportInfo>();
+//        TransferSceneReportInfo transferSceneReportInfos0 = new TransferSceneReportInfo();
+//        transferSceneReportInfos0.setInfoType("浣i噾鎶ラ叕璇存槑");
+//        transferSceneReportInfos0.setInfoContent("3鏈堝鏀挎湇鍔℃姤閰�");
+//        transferSceneReportInfos.add(transferSceneReportInfos0);
+//        data.setTransferSceneReportInfos(transferSceneReportInfos);
+//
+//        // 璁剧疆杞处涓氬姟璇锋眰鐨勬墿灞曞弬鏁�
+//        data.setBusinessParams("{\"payer_show_name_use_alias\":\"true\"}");
+//
+//       /* // 璁剧疆绛惧悕淇℃伅
+//        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);
+//*/
+//        try {
+//            AlipayFundTransUniTransferResponseModel response = api.transfer(data);
+//        } catch (ApiException e) {
+//            AlipayFundTransUniTransferDefaultResponse errorObject = (AlipayFundTransUniTransferDefaultResponse) e.getErrorObject();
+//            System.out.println("璋冪敤澶辫触:" + errorObject);
+//        }
+//    }
 
     /**
      * 鍗曠瑪杞处鍒版敮浠樺疂璐︽埛
@@ -66,43 +171,89 @@
      */
     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("1");
+        // 璁剧疆鎻忚堪鐗瑰畾鐨勪笟鍔″満鏅�
         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噾鎻愮幇");
-
+        // 璁剧疆杞处涓氬姟鐨勬爣棰�
+        data.setOrderTitle("浣i噾鎶ラ叕");
+        // 璁剧疆鍘熸敮浠樺疂涓氬姟鍗曞彿
+        data.setOriginalOrderId("20190620110075000006640000063056");
+        // 璁剧疆鏀舵鏂逛俊鎭�
+        data.setOrderTitle("浣i噾鎶ラ叕");
         Participant payeeInfo = new Participant();
+        payeeInfo.setIdentity(dto.getPayeeAccount());
+        payeeInfo.setName(dto.getPayeeName());
         payeeInfo.setIdentity(dto.getPayeeAccount());
         payeeInfo.setName(dto.getPayeeName());
         payeeInfo.setIdentityType("ALIPAY_LOGON_ID");
         data.setPayeeInfo(payeeInfo);
-
+        // 璁剧疆涓氬姟澶囨敞
+        data.setRemark("浣i噾鎶ラ叕");
+        // 璁剧疆杞处鍦烘櫙鍚嶇О
         data.setRemark(dto.getRemark());
         data.setTransferSceneName("浣i噾鎶ラ叕");
-
+        // 璁剧疆杞处鍦烘櫙涓婃姤淇℃伅
+        List<TransferSceneReportInfo> transferSceneReportInfos = new ArrayList<TransferSceneReportInfo>();
+        TransferSceneReportInfo transferSceneReportInfos0 = new TransferSceneReportInfo();
+        transferSceneReportInfos0.setInfoType("浣i噾鎶ラ叕璇存槑");
+        transferSceneReportInfos0.setInfoContent("浣i噾鎶ラ叕");
+        transferSceneReportInfos.add(transferSceneReportInfos0);
+        data.setTransferSceneReportInfos(transferSceneReportInfos);
         List<TransferSceneReportInfo> reportInfos = new ArrayList<>();
         TransferSceneReportInfo reportInfo = new TransferSceneReportInfo();
         reportInfo.setInfoType("浣i噾鎶ラ叕璇存槑");
-        reportInfo.setInfoContent("浣i噾鎻愮幇");
+        reportInfo.setInfoContent("浣i噾鎶ラ叕");
         reportInfos.add(reportInfo);
         data.setTransferSceneReportInfos(reportInfos);
 
+        // 璁剧疆杞处涓氬姟璇锋眰鐨勬墿灞曞弬鏁�
         data.setBusinessParams("{\"payer_show_name_use_alias\":\"true\"}");
 
+       /* // 璁剧疆绛惧悕淇℃伅
+        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);
+*/
         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();
+            AlipayFundTransUniTransferDefaultResponse errorObject = (AlipayFundTransUniTransferDefaultResponse) e.getErrorObject();
+            System.out.println("璋冪敤澶辫触:" + errorObject);
             log.error("鏀粯瀹濊浆璐﹀け璐�, outBizNo={}, error={}", dto.getOutBizNo(), errorObject);
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),
                     "杞处澶辫触锛�" + (errorObject != null ? errorObject.toString() : e.getMessage()));
         }
     }
-}
+
+
+//    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");
+//
+//        return alipayConfig;
+//    }
+}
\ No newline at end of file

--
Gitblit v1.9.3