From eac1bb48ce6df55a923981a99c26693406f877e9 Mon Sep 17 00:00:00 2001
From: jiangqs <343695869@qq.com>
Date: 星期二, 25 七月 2023 21:56:42 +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