From 8d6cfce13c67cb3f9e86e931aaddfb8febe642c1 Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Fri, 20 Oct 2017 15:19:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chanjar/weixin/common/util/BeanUtils.java | 15 +++++++++++---- .../cp/api/impl/WxCpServiceOkHttpImpl.java | 18 +++++------------- .../miniapp/api/impl/WxMaMediaServiceImpl.java | 10 ++-------- .../mp/api/impl/WxMpMaterialServiceImpl.java | 3 +-- .../mp/api/impl/WxMpServiceOkHttpImpl.java | 11 +++-------- .../wxpay/bean/request/WxPayBaseRequest.java | 2 +- .../binarywang/wxpay/util/SignUtils.java | 7 +++++-- .../impl/WxPayServiceAbstractImplTest.java | 2 +- 8 files changed, 29 insertions(+), 39 deletions(-) diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/BeanUtils.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/BeanUtils.java index d74f1d89..9e52aa22 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/BeanUtils.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/BeanUtils.java @@ -43,15 +43,20 @@ public class BeanUtils { boolean isAccessible = field.isAccessible(); field.setAccessible(true); if (field.isAnnotationPresent(Required.class)) { - if (field.get(bean) == null || (field.get(bean) instanceof String && StringUtils.isBlank(field.get(bean).toString()))) { - //两种情况,一种是值为null,另外一种情况是类型为字符串,但是字符串内容为空的,都认为是没有提供值 + // 两种情况,一种是值为null, + // 另外一种情况是类型为字符串,但是字符串内容为空的,都认为是没有提供值 + boolean isRequiredMissing = field.get(bean) == null + || (field.get(bean) instanceof String + && StringUtils.isBlank(field.get(bean).toString()) + ); + if (isRequiredMissing) { requiredFields.add(field.getName()); } } field.setAccessible(isAccessible); } catch (SecurityException | IllegalArgumentException | IllegalAccessException e) { - e.printStackTrace(); + log.error(e.getMessage(), e); } } @@ -83,11 +88,13 @@ public class BeanUtils { if (field.isAnnotationPresent(XStreamAlias.class)) { result.put(field.getAnnotation(XStreamAlias.class).value(), field.get(bean).toString()); + } else { + result.put(field.getName(), field.get(bean).toString()); } field.setAccessible(isAccessible); } catch (SecurityException | IllegalArgumentException | IllegalAccessException e) { - e.printStackTrace(); + log.error(e.getMessage(), e); } } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpServiceOkHttpImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpServiceOkHttpImpl.java index f8476ff5..d3580fe8 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpServiceOkHttpImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpServiceOkHttpImpl.java @@ -7,14 +7,10 @@ import me.chanjar.weixin.common.util.http.HttpType; import me.chanjar.weixin.common.util.http.okhttp.OkHttpProxyInfo; import me.chanjar.weixin.cp.config.WxCpConfigStorage; import okhttp3.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.IOException; public class WxCpServiceOkHttpImpl extends WxCpServiceAbstractImpl { - private final Logger logger = LoggerFactory.getLogger(this.getClass()); - protected OkHttpClient httpClient; protected OkHttpProxyInfo httpProxy; @@ -36,7 +32,7 @@ public class WxCpServiceOkHttpImpl extends WxCpServiceAbstractImplBinary Wang */ public class WxMaMediaServiceImpl implements WxMaMediaService { - private final Logger log = LoggerFactory.getLogger(this.getClass()); - private WxMaService wxMaService; public WxMaMediaServiceImpl(WxMaService wxMaService) { @@ -35,8 +31,7 @@ public class WxMaMediaServiceImpl implements WxMaMediaService { try { return this.uploadMedia(mediaType, FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), fileType)); } catch (IOException e) { - e.printStackTrace(); - throw new WxErrorException(WxError.newBuilder().setErrorMsg(e.getMessage()).build()); + throw new WxErrorException(WxError.newBuilder().setErrorMsg(e.getMessage()).build(), e); } } @@ -53,8 +48,7 @@ public class WxMaMediaServiceImpl implements WxMaMediaService { .create(this.wxMaService.getRequestHttp(), Files.createTempDirectory("wxma").toFile()); return this.wxMaService.execute(executor, MEDIA_GET_URL, "media_id=" + mediaId); } catch (IOException e) { - this.log.error(e.getMessage(), e); - throw new WxErrorException(WxError.newBuilder().setErrorMsg(e.getMessage()).build()); + throw new WxErrorException(WxError.newBuilder().setErrorMsg(e.getMessage()).build(), e); } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImpl.java index 90594fe0..91c3fc33 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMaterialServiceImpl.java @@ -37,8 +37,7 @@ public class WxMpMaterialServiceImpl implements WxMpMaterialService { try { return this.mediaUpload(mediaType, FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), fileType)); } catch (IOException e) { - e.printStackTrace(); - throw new WxErrorException(WxError.newBuilder().setErrorMsg(e.getMessage()).build()); + throw new WxErrorException(WxError.newBuilder().setErrorMsg(e.getMessage()).build(), e); } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceOkHttpImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceOkHttpImpl.java index 9066dc8d..cab1dfc6 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceOkHttpImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceOkHttpImpl.java @@ -8,16 +8,11 @@ import me.chanjar.weixin.common.util.http.okhttp.OkHttpProxyInfo; import me.chanjar.weixin.mp.api.WxMpConfigStorage; import me.chanjar.weixin.mp.api.WxMpService; import okhttp3.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.concurrent.locks.Lock; public class WxMpServiceOkHttpImpl extends WxMpServiceAbstractImpl { - - private final Logger logger = LoggerFactory.getLogger(this.getClass()); - private OkHttpClient httpClient; private OkHttpProxyInfo httpProxy; @@ -38,7 +33,7 @@ public class WxMpServiceOkHttpImpl extends WxMpServiceAbstractImpl 0) { diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/WxPayBaseRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/WxPayBaseRequest.java index ad191166..7147adfe 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/WxPayBaseRequest.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/WxPayBaseRequest.java @@ -190,7 +190,7 @@ public abstract class WxPayBaseRequest { * 3、生成签名,并设置进去 * * - * @param config 支付配置对象,用于读取相应系统配置信息 + * @param config 支付配置对象,用于读取相应系统配置信息 * @param isIgnoreSignType 签名时,是否忽略signType */ public void checkAndSign(WxPayConfig config, boolean isIgnoreSignType) throws WxPayException { diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/SignUtils.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/SignUtils.java index c3014c76..745514d0 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/SignUtils.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/SignUtils.java @@ -6,6 +6,8 @@ import me.chanjar.weixin.common.util.BeanUtils; import org.apache.commons.codec.binary.Hex; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; @@ -23,11 +25,12 @@ import java.util.TreeMap; * */ public class SignUtils { + private static final Logger log = LoggerFactory.getLogger(SignUtils.class); /** * 微信公众号支付签名算法(详见:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3) * - * @param xmlBean Bean需要标记有XML注解 + * @param xmlBean Bean里的属性如果存在XML注解,则使用其作为key,否则使用变量名 * @param signType 签名类型,如果为空,则默认为MD5 * @param signKey 签名Key * @param isIgnoreSignType 签名时,是否忽略signType @@ -81,7 +84,7 @@ public class SignUtils { byte[] bytes = hmacSHA256.doFinal(message.getBytes()); return Hex.encodeHexString(bytes).toUpperCase(); } catch (NoSuchAlgorithmException | InvalidKeyException e) { - e.printStackTrace(); + log.error(e.getMessage(), e); } return null; diff --git a/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/WxPayServiceAbstractImplTest.java b/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/WxPayServiceAbstractImplTest.java index b6f7caf1..84a9156b 100644 --- a/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/WxPayServiceAbstractImplTest.java +++ b/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/WxPayServiceAbstractImplTest.java @@ -67,7 +67,7 @@ public class WxPayServiceAbstractImplTest { } @Test - public void testCreateOrder_jssdk() throws Exception { + public void testCreateOrder_jsapi() throws Exception { WxPayMpOrderResult result = this.payService .createOrder(WxPayUnifiedOrderRequest.newBuilder() .body("我去")