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