From b95715d5cdc806cbb15cc7f49c538e61f5ab5dc6 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期四, 03 八月 2023 13:31:46 +0800
Subject: [PATCH] bug和二维码

---
 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java |   74 +++++++++++++++++++++++++++++++++++++
 1 files changed, 74 insertions(+), 0 deletions(-)

diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
index 29f5c50..1015951 100644
--- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
+++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
@@ -5,6 +5,19 @@
 import com.ruoyi.file.service.ISysFileService;
 import com.ruoyi.file.utils.OBSUploadUtils;
 import com.ruoyi.system.api.domain.poji.sys.SysFile;
+import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder;
+import com.wechat.pay.contrib.apache.httpclient.WechatPayUploadHttpPost;
+import com.wechat.pay.contrib.apache.httpclient.auth.AutoUpdateCertificatesVerifier;
+import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner;
+import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Credentials;
+import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Validator;
+import com.wechat.pay.contrib.apache.httpclient.util.PemUtil;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.util.EntityUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,6 +26,10 @@
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.net.URI;
+import java.security.PrivateKey;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -25,6 +42,15 @@
 public class SysFileController
 {
     private static final Logger log = LoggerFactory.getLogger(SysFileController.class);
+
+    private final static String PRIVATE_KEY = "";
+
+    private final static String MCH_ID = "";
+
+    private final static String MCH_SERIAL_NO = "";
+
+    private final static String API_V3_KEY = "";
+
 
     @Autowired
     private ISysFileService sysFileService;
@@ -59,6 +85,7 @@
     {
         try
         {
+            //
             // 上传并返回访问地址
             String url = OBSUploadUtils.uploadFile(file);
             return R.ok(url);
@@ -85,4 +112,51 @@
         }
         return R.ok(urls);
     }
+
+
+
+    /**
+     * @description  创建httpClient
+     * @author  jqs
+     * @date    2023/6/19 12:50
+     * @param
+     * @return  CloseableHttpClient
+     */
+    private CloseableHttpClient createHttpClient() throws Exception {
+
+        String privateKey = PRIVATE_KEY;
+        String mchId = MCH_ID;
+        String mchSerialNo = MCH_SERIAL_NO;
+        String apiV3Key = API_V3_KEY;
+        // 加载商户私钥(privateKey:私钥字符串)
+        PrivateKey merchantPrivateKey = PemUtil
+                .loadPrivateKey(new ByteArrayInputStream(privateKey.getBytes("utf-8")));
+
+        // 加载平台证书(mchId:商户号,mchSerialNo:商户证书序列号,apiV3Key:V3密钥)
+        AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier(
+                new WechatPay2Credentials(mchId, new PrivateKeySigner(mchSerialNo, merchantPrivateKey)),apiV3Key.getBytes("utf-8"));
+
+        // 初始化httpClient
+        CloseableHttpClient httpClient = WechatPayHttpClientBuilder.create()
+                .withMerchant(mchId, mchSerialNo, merchantPrivateKey)
+                .withValidator(new WechatPay2Validator(verifier)).build();
+        return httpClient;
+    }
+
+    @PostMapping("uploadWXFile")
+    public R<String> uploadWXFile(@RequestPart("file")MultipartFile file) throws Exception {
+        URI uri = new URI("https://api.mch.weixin.qq.com/v3/merchant/media/upload");
+        CloseableHttpClient httpClient = createHttpClient();
+        InputStream inputStream = file.getInputStream();
+        String sha256 = DigestUtils.sha256Hex(inputStream);
+        HttpPost request = new WechatPayUploadHttpPost.Builder(uri)
+                .withImage(file.getName(), sha256, inputStream)
+                .build();
+        CloseableHttpResponse response = httpClient.execute(request);
+        HttpEntity entity = response.getEntity();
+        String s = EntityUtils.toString(entity);
+        System.out.println(s);
+        return R.ok(s);
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.7.1