From 7db5207feedeca05fd539e4419376f5dd1350e02 Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Sun, 25 Jul 2021 21:20:13 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E4=BC=98=E5=8C=96=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E9=83=A8=E5=88=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weixin/common/util/json/GsonHelper.java | 3 +- .../result/WxPayUnifiedOrderV3Result.java | 16 +- .../binarywang/wxpay/util/ResourcesUtils.java | 150 +++++++----------- .../binarywang/wxpay/v3/util/SignUtils.java | 6 +- 4 files changed, 74 insertions(+), 101 deletions(-) diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/GsonHelper.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/GsonHelper.java index b41467f21..0d807402a 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/GsonHelper.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/GsonHelper.java @@ -4,7 +4,6 @@ import com.google.common.collect.Lists; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import jodd.util.MathUtil; import me.chanjar.weixin.common.error.WxRuntimeException; import java.util.List; @@ -173,7 +172,7 @@ public class GsonHelper { * @param keyOrValue 包含key或value的数组 */ public static void put(JsonObject jsonObject, Object... keyOrValue) { - if (MathUtil.isOdd(keyOrValue.length)) { + if (keyOrValue.length % 2 == 1) { throw new WxRuntimeException("参数个数必须为偶数"); } diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayUnifiedOrderV3Result.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayUnifiedOrderV3Result.java index 58e74196f..c9b5744b3 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayUnifiedOrderV3Result.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/result/WxPayUnifiedOrderV3Result.java @@ -6,6 +6,7 @@ import com.google.gson.annotations.SerializedName; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; +import me.chanjar.weixin.common.error.WxRuntimeException; import java.io.Serializable; import java.security.PrivateKey; @@ -72,6 +73,8 @@ public class WxPayUnifiedOrderV3Result implements Serializable { @Data @Accessors(chain = true) public static class JsapiResult implements Serializable { + private static final long serialVersionUID = 4465376277943307271L; + private String appId; private String timeStamp; private String nonceStr; @@ -80,16 +83,18 @@ public class WxPayUnifiedOrderV3Result implements Serializable { private String paySign; private String getSignStr() { - return String.format("%s\n%s\n%s\n%s\n", appId, timeStamp, nonceStr, packageValue); + return String.format("%s%n%s%n%s%n%s%n", appId, timeStamp, nonceStr, packageValue); } } @Data @Accessors(chain = true) public static class AppResult implements Serializable { + private static final long serialVersionUID = 5465773025172875110L; + private String appid; - private String partnerid; - private String prepayid; + private String partnerId; + private String prepayId; private String packageValue; private String noncestr; private String timestamp; @@ -111,14 +116,15 @@ public class WxPayUnifiedOrderV3Result implements Serializable { return (T) this.h5Url; case APP: AppResult appResult = new AppResult(); - appResult.setAppid(appId).setPrepayid(this.prepayId).setPartnerid(mchId) + appResult.setAppid(appId).setPrepayId(this.prepayId).setPartnerId(mchId) .setNoncestr(nonceStr).setTimestamp(timestamp) //暂填写固定值Sign=WXPay .setPackageValue("Sign=WXPay"); return (T) appResult; case NATIVE: return (T) this.codeUrl; + default: + throw new WxRuntimeException("不支持的支付类型"); } - return null; } } diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/ResourcesUtils.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/ResourcesUtils.java index 3a9e78855..ac68b00bb 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/ResourcesUtils.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/ResourcesUtils.java @@ -1,120 +1,86 @@ package com.github.binarywang.wxpay.util; -import jodd.io.IOUtil; import jodd.util.ClassUtil; import lombok.val; import java.io.IOException; import java.io.InputStream; import java.net.URL; -import java.net.URLConnection; /** * 基于jodd.util.ResourcesUtil改造实现 + * * @author jodd */ public class ResourcesUtils { + /** + * Retrieves given resource as URL. Resource is always absolute and may + * starts with a slash character. + *

+ * Resource will be loaded using class loaders in the following order: + *

+ */ + public static URL getResourceUrl(String resourceName, final ClassLoader classLoader) { - /** - * Retrieves given resource as URL. - * @see #getResourceUrl(String, ClassLoader) - */ - public static URL getResourceUrl(final String resourceName) { - return getResourceUrl(resourceName, null); - } + if (resourceName.startsWith("/")) { + resourceName = resourceName.substring(1); + } - /** - * Retrieves given resource as URL. Resource is always absolute and may - * starts with a slash character. - *

- * Resource will be loaded using class loaders in the following order: - *

- */ - public static URL getResourceUrl(String resourceName, final ClassLoader classLoader) { + URL resourceUrl; - if (resourceName.startsWith("/")) { - resourceName = resourceName.substring(1); - } + // try #1 - using provided class loader + if (classLoader != null) { + resourceUrl = classLoader.getResource(resourceName); + if (resourceUrl != null) { + return resourceUrl; + } + } - URL resourceUrl; + // try #2 - using thread class loader + final ClassLoader currentThreadClassLoader = Thread.currentThread().getContextClassLoader(); + if ((currentThreadClassLoader != null) && (currentThreadClassLoader != classLoader)) { + resourceUrl = currentThreadClassLoader.getResource(resourceName); + if (resourceUrl != null) { + return resourceUrl; + } + } - // try #1 - using provided class loader - if (classLoader != null) { - resourceUrl = classLoader.getResource(resourceName); - if (resourceUrl != null) { - return resourceUrl; - } - } - - // try #2 - using thread class loader - final ClassLoader currentThreadClassLoader = Thread.currentThread().getContextClassLoader(); - if ((currentThreadClassLoader != null) && (currentThreadClassLoader != classLoader)) { - resourceUrl = currentThreadClassLoader.getResource(resourceName); - if (resourceUrl != null) { - return resourceUrl; - } - } - - // try #3 - using caller classloader, similar as Class.forName() + // try #3 - using caller classloader, similar as Class.forName() val callerClass = ClassUtil.getCallerClass(2); val callerClassLoader = callerClass.getClassLoader(); - if ((callerClassLoader != classLoader) && (callerClassLoader != currentThreadClassLoader)) { - resourceUrl = callerClassLoader.getResource(resourceName); + if ((callerClassLoader != classLoader) && (callerClassLoader != currentThreadClassLoader)) { + resourceUrl = callerClassLoader.getResource(resourceName); return resourceUrl; - } + } - return null; - } + return null; + } - public static String getResourceAsString(final String resourceName) throws IOException { - final InputStream inputStream = getResourceAsStream(resourceName); - try { - final char[] data = IOUtil.readChars(inputStream); - return new String(data); - } - finally { - IOUtil.close(inputStream); - } - } + /** + * Opens a resource of the specified name for reading. + * + * @see #getResourceAsStream(String, ClassLoader) + */ + public static InputStream getResourceAsStream(final String resourceName) throws IOException { + return getResourceAsStream(resourceName, null); + } - /** - * Opens a resource of the specified name for reading. - * @see #getResourceAsStream(String, ClassLoader) - */ - public static InputStream getResourceAsStream(final String resourceName) throws IOException { - return getResourceAsStream(resourceName, null); - } - - /** - * Opens a resource of the specified name for reading. - * @see #getResourceUrl(String, ClassLoader) - */ - public static InputStream getResourceAsStream(final String resourceName, final ClassLoader callingClass) throws IOException { - final URL url = getResourceUrl(resourceName, callingClass); - if (url != null) { - return url.openStream(); - } - return null; - } - - /** - * Opens a resource of the specified name for reading. Controls caching, - * that is important when the same jar is reloaded using custom classloader. - */ - public static InputStream getResourceAsStream(final String resourceName, final ClassLoader callingClass, - final boolean useCache) throws IOException { - final URL url = getResourceUrl(resourceName, callingClass); - if (url != null) { - final URLConnection urlConnection = url.openConnection(); - urlConnection.setUseCaches(useCache); - return urlConnection.getInputStream(); - } - return null; - } + /** + * Opens a resource of the specified name for reading. + * + * @see #getResourceUrl(String, ClassLoader) + */ + public static InputStream getResourceAsStream(final String resourceName, final ClassLoader callingClass) throws IOException { + final URL url = getResourceUrl(resourceName, callingClass); + if (url != null) { + return url.openStream(); + } + return null; + } } diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/util/SignUtils.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/util/SignUtils.java index fff68ce28..7065d0638 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/util/SignUtils.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/util/SignUtils.java @@ -6,8 +6,10 @@ import java.security.*; import java.util.Base64; import java.util.Random; +/** +* @author cloudx + */ public class SignUtils { - public static String sign(String string, PrivateKey privateKey) { try { Signature sign = Signature.getInstance("SHA256withRSA"); @@ -35,7 +37,7 @@ public class SignUtils { * 生成随机字符串 * * @param length 字符串长度 - * @return + * @return 随机字符串 */ public static String genRandomStr(int length) { String base = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";