From 3b46faeb89f1e259c27516735e16c85ad2d91c77 Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Sun, 24 May 2020 18:22:27 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E4=BC=98=E5=8C=96=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E6=94=AF=E4=BB=98v3=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=85=BC?= =?UTF-8?q?=E5=AE=B9java7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- weixin-java-pay/pom.xml | 10 +++++----- .../binarywang/wxpay/config/WxPayConfig.java | 8 ++++---- .../wxpay/v3/WxPayV3HttpClientBuilder.java | 8 ++++---- .../v3/auth/AutoUpdateCertificatesVerifier.java | 14 ++++++++++---- ...tPay2Credentials.java => WxPayCredentials.java} | 8 ++++---- ...echatPay2Validator.java => WxPayValidator.java} | 10 ++++------ 6 files changed, 31 insertions(+), 27 deletions(-) rename weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/{WechatPay2Credentials.java => WxPayCredentials.java} (92%) rename weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/{WechatPay2Validator.java => WxPayValidator.java} (89%) diff --git a/weixin-java-pay/pom.xml b/weixin-java-pay/pom.xml index e9df87aa..01517f73 100644 --- a/weixin-java-pay/pom.xml +++ b/weixin-java-pay/pom.xml @@ -13,11 +13,6 @@ WxJava - PAY Java SDK 微信支付 Java SDK - - 1.8 - 1.8 - - com.github.binarywang @@ -84,6 +79,11 @@ com.google.code.gson gson + + joda-time + joda-time + compile + diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java index fe4b2280..6d9bebdc 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java @@ -4,8 +4,8 @@ import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.v3.WxPayV3HttpClientBuilder; import com.github.binarywang.wxpay.v3.auth.AutoUpdateCertificatesVerifier; import com.github.binarywang.wxpay.v3.auth.PrivateKeySigner; -import com.github.binarywang.wxpay.v3.auth.WechatPay2Credentials; -import com.github.binarywang.wxpay.v3.auth.WechatPay2Validator; +import com.github.binarywang.wxpay.v3.auth.WxPayCredentials; +import com.github.binarywang.wxpay.v3.auth.WxPayValidator; import com.github.binarywang.wxpay.v3.util.PemUtils; import jodd.util.ResourcesUtil; import lombok.Data; @@ -300,8 +300,8 @@ public class WxPayConfig { CloseableHttpClient httpClient = WxPayV3HttpClientBuilder.create() .withMerchant(mchId, certSerialNo, merchantPrivateKey) .withWechatpay(Collections.singletonList(PemUtils.loadCertificate(certInputStream))) - .withValidator(new WechatPay2Validator(new AutoUpdateCertificatesVerifier( - new WechatPay2Credentials(mchId, new PrivateKeySigner(certSerialNo, merchantPrivateKey)), + .withValidator(new WxPayValidator(new AutoUpdateCertificatesVerifier( + new WxPayCredentials(mchId, new PrivateKeySigner(certSerialNo, merchantPrivateKey)), apiV3Key.getBytes(StandardCharsets.UTF_8)))) .build(); this.apiV3HttpClient = httpClient; diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/WxPayV3HttpClientBuilder.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/WxPayV3HttpClientBuilder.java index 87f4b055..986a8f4c 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/WxPayV3HttpClientBuilder.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/WxPayV3HttpClientBuilder.java @@ -7,8 +7,8 @@ import java.util.List; import com.github.binarywang.wxpay.v3.auth.CertificatesVerifier; import com.github.binarywang.wxpay.v3.auth.PrivateKeySigner; -import com.github.binarywang.wxpay.v3.auth.WechatPay2Credentials; -import com.github.binarywang.wxpay.v3.auth.WechatPay2Validator; +import com.github.binarywang.wxpay.v3.auth.WxPayCredentials; +import com.github.binarywang.wxpay.v3.auth.WxPayValidator; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.execchain.ClientExecChain; @@ -37,7 +37,7 @@ public class WxPayV3HttpClientBuilder extends HttpClientBuilder { public WxPayV3HttpClientBuilder withMerchant(String merchantId, String serialNo, PrivateKey privateKey) { this.credentials = - new WechatPay2Credentials(merchantId, new PrivateKeySigner(serialNo, privateKey)); + new WxPayCredentials(merchantId, new PrivateKeySigner(serialNo, privateKey)); return this; } @@ -47,7 +47,7 @@ public class WxPayV3HttpClientBuilder extends HttpClientBuilder { } public WxPayV3HttpClientBuilder withWechatpay(List certificates) { - this.validator = new WechatPay2Validator(new CertificatesVerifier(certificates)); + this.validator = new WxPayValidator(new CertificatesVerifier(certificates)); return this; } diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/AutoUpdateCertificatesVerifier.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/AutoUpdateCertificatesVerifier.java index 2110b2d7..59ad93cb 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/AutoUpdateCertificatesVerifier.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/AutoUpdateCertificatesVerifier.java @@ -3,6 +3,7 @@ package com.github.binarywang.wxpay.v3.auth; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.github.binarywang.wxpay.v3.Credentials; +import com.github.binarywang.wxpay.v3.Validator; import com.github.binarywang.wxpay.v3.WxPayV3HttpClientBuilder; import com.github.binarywang.wxpay.v3.util.AesUtils; import com.github.binarywang.wxpay.v3.util.PemUtils; @@ -13,6 +14,8 @@ import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.util.EntityUtils; +import org.joda.time.Instant; +import org.joda.time.Minutes; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -21,8 +24,6 @@ import java.security.GeneralSecurityException; import java.security.cert.CertificateExpiredException; import java.security.cert.CertificateNotYetValidException; import java.security.cert.X509Certificate; -import java.time.Duration; -import java.time.Instant; import java.util.ArrayList; import java.util.List; import java.util.concurrent.locks.ReentrantLock; @@ -98,7 +99,7 @@ public class AutoUpdateCertificatesVerifier implements Verifier { @Override public boolean verify(String serialNumber, byte[] message, String signature) { - if (instant == null || Duration.between(instant, Instant.now()).toMinutes() >= minutesInterval) { + if (instant == null || Minutes.minutesBetween(instant, Instant.now()).getMinutes() >= minutesInterval) { if (lock.tryLock()) { try { autoUpdateCert(); @@ -117,7 +118,12 @@ public class AutoUpdateCertificatesVerifier implements Verifier { private void autoUpdateCert() throws IOException, GeneralSecurityException { CloseableHttpClient httpClient = WxPayV3HttpClientBuilder.create() .withCredentials(credentials) - .withValidator(verifier == null ? (response) -> true : new WechatPay2Validator(verifier)) + .withValidator(verifier == null ? new Validator() { + @Override + public boolean validate(CloseableHttpResponse response) throws IOException { + return true; + } + } : new WxPayValidator(verifier)) .build(); HttpGet httpGet = new HttpGet(CERT_DOWNLOAD_PATH); diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/WechatPay2Credentials.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/WxPayCredentials.java similarity index 92% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/WechatPay2Credentials.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/WxPayCredentials.java index a0730bdd..2654e867 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/WechatPay2Credentials.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/WxPayCredentials.java @@ -6,22 +6,22 @@ import java.net.URI; import java.security.SecureRandom; import com.github.binarywang.wxpay.v3.Credentials; +import lombok.extern.slf4j.Slf4j; import org.apache.http.client.methods.HttpEntityEnclosingRequestBase; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class WechatPay2Credentials implements Credentials { - private static final Logger log = LoggerFactory.getLogger(WechatPay2Credentials.class); - +@Slf4j +public class WxPayCredentials implements Credentials { private static final String SYMBOLS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; private static final SecureRandom RANDOM = new SecureRandom(); protected String merchantId; protected Signer signer; - public WechatPay2Credentials(String merchantId, Signer signer) { + public WxPayCredentials(String merchantId, Signer signer) { this.merchantId = merchantId; this.signer = signer; } diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/WechatPay2Validator.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/WxPayValidator.java similarity index 89% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/WechatPay2Validator.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/WxPayValidator.java index 38735c61..c83f8853 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/WechatPay2Validator.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/WxPayValidator.java @@ -4,20 +4,18 @@ package com.github.binarywang.wxpay.v3.auth; import java.io.IOException; import com.github.binarywang.wxpay.v3.Validator; +import lombok.extern.slf4j.Slf4j; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - -public class WechatPay2Validator implements Validator { - - private static final Logger log = LoggerFactory.getLogger(WechatPay2Validator.class); - +@Slf4j +public class WxPayValidator implements Validator { private Verifier verifier; - public WechatPay2Validator(Verifier verifier) { + public WxPayValidator(Verifier verifier) { this.verifier = verifier; }