From 73b65194e1ba91dd0003ed2a11340d9c1393573b Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 17 Jan 2024 15:28:10 +0800 Subject: [PATCH] fapiao --- src/test/java/cc/mrbird/febs/ProfitTest.java | 69 +++++++++++++++++++++++++++++++++- 1 files changed, 66 insertions(+), 3 deletions(-) diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java index a9eacb1..554e4dd 100644 --- a/src/test/java/cc/mrbird/febs/ProfitTest.java +++ b/src/test/java/cc/mrbird/febs/ProfitTest.java @@ -16,6 +16,7 @@ import cc.mrbird.febs.pay.model.*; import cc.mrbird.febs.pay.service.IXcxPayService; import cc.mrbird.febs.pay.service.WxFaPiaoService; +import cc.mrbird.febs.pay.util.JCEUtil; import cc.mrbird.febs.pay.util.WechatConfigure; import cc.mrbird.febs.rabbit.consumer.AgentConsumer; import cn.hutool.core.collection.CollUtil; @@ -28,6 +29,7 @@ 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.notification.NotificationHandler; +import com.wechat.pay.contrib.apache.httpclient.util.AesUtil; import okhttp3.HttpUrl; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.httpclient.HttpClient; @@ -58,9 +60,11 @@ import java.net.URLConnection; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; -import java.security.KeyPair; -import java.security.NoSuchAlgorithmException; -import java.security.PrivateKey; +import java.security.*; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.*; import java.io.ByteArrayOutputStream; import java.io.InputStream; @@ -278,6 +282,65 @@ } + @Test + public void rankProfit2_01() throws IOException, ParseException, GeneralSecurityException {//获取平台证书 + JCEUtil.removeCryptographyRestrictions(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); + PrivateKey privateKey = wxFaPiaoService.getPrivateKeyV3(); + String baseUrl = "https://api.mch.weixin.qq.com"; + String canonicalUrl = "/v3/certificates"; + String postStr = null; + try { + postStr = wxFaPiaoService.createAuthorization( + "GET", + baseUrl+canonicalUrl, + "", + privateKey + + ); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + HttpClient httpClient = new HttpClient(); + try { + GetMethod method = new GetMethod(baseUrl+canonicalUrl); + method.setRequestHeader("Accept", "application/json"); + method.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36"); + method.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); +// method.setRequestHeader("Connection", "keep-alive"); + method.setRequestHeader("Authorization", "WECHATPAY2-SHA256-RSA2048 "+postStr); + int i = httpClient.executeMethod(method); + System.out.println(i); + System.out.println(method); + String responseBodyAsString = method.getResponseBodyAsString(); + cn.hutool.json.JSONObject maps = JSONUtil.parseObj(responseBodyAsString); + System.out.println(maps); + + FPCertificateVo certificateVo = com.alibaba.fastjson.JSONObject.parseObject(responseBodyAsString, FPCertificateVo.class); + for (FPCertificates certificates : certificateVo.getData()) { + if (format.parse(certificates.getEffective_time()).before(new Date()) + && format.parse(certificates.getExpire_time()).after(new Date())) { + FPEncryptCertificate encrypt_certificate = certificates.getEncrypt_certificate(); + //解密 + AesUtil aesUtil = new AesUtil("daL341aN5orDt13puXadsAf2rpuX12v3".getBytes("utf-8")); + String pulicKey = aesUtil.decryptToString( + encrypt_certificate.getAssociated_data().getBytes("utf-8"), + encrypt_certificate.getNonce().getBytes("utf-8"), + encrypt_certificate.getCiphertext()); + //获取平台证书 + final CertificateFactory cf = CertificateFactory.getInstance("X509"); + + ByteArrayInputStream inputStream = new ByteArrayInputStream(pulicKey.getBytes(StandardCharsets.UTF_8)); + + X509Certificate x509Certificate = (X509Certificate) cf.generateCertificate(inputStream); + System.out.println(x509Certificate); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } + @Autowired private MallOrderInfoMapper mallOrderInfoMapper; -- Gitblit v1.9.1