From 2c94841e4f5760a7d1825b80cf4d0dcfd7481b3a Mon Sep 17 00:00:00 2001 From: DaxPay Date: Mon, 11 Nov 2024 10:16:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20BigDecimal=20?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E6=95=B0=E6=8D=AE=E5=BA=8F=E5=88=97=E5=8C=96?= =?UTF-8?q?=E5=92=8C=E7=AD=BE=E5=90=8D=E5=BC=82=E5=B8=B8=E9=97=AE=E9=A2=98?= =?UTF-8?q?,=20=E4=BF=AE=E5=A4=8D=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E5=88=A4=E6=96=AD=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../daxpay/channel/wechat/service/pay/WechatPayService.java | 2 +- .../src/main/java/cn/daxpay/single/sdk/util/JsonUtil.java | 1 + .../main/java/cn/daxpay/single/sdk/util/PaySignUtil.java | 2 +- .../java/cn/daxpay/single/sdk/test/trade/PayOrderTest.java | 6 ++++-- .../main/java/org/dromara/daxpay/core/util/PaySignUtil.java | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayService.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayService.java index 3fa7575c7..3345699dd 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayService.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/pay/WechatPayService.java @@ -30,7 +30,7 @@ public class WechatPayService { // 判断是否是支持的支付方式 String method = payParam.getMethod(); PayMethodEnum methodEnum = PayMethodEnum.findByCode(method); - if (List.of(PayMethodEnum.APP,PayMethodEnum.BARCODE,PayMethodEnum.WAP,PayMethodEnum.QRCODE,PayMethodEnum.JSAPI).contains(methodEnum)) { + if (!List.of(PayMethodEnum.APP,PayMethodEnum.BARCODE,PayMethodEnum.WAP,PayMethodEnum.QRCODE,PayMethodEnum.JSAPI).contains(methodEnum)) { throw new ValidationFailedException("不支持的支付方式"); } diff --git a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/util/JsonUtil.java b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/util/JsonUtil.java index ba63746d0..7ac733c70 100644 --- a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/util/JsonUtil.java +++ b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/util/JsonUtil.java @@ -17,6 +17,7 @@ import lombok.experimental.UtilityClass; public class JsonUtil { private final JSONConfig JSON_CONFIG = JSONConfig.create() .setDateFormat(DatePattern.NORM_DATETIME_PATTERN); +// .setStripTrailingZeros(false); /** * 转换为实体 diff --git a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/util/PaySignUtil.java b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/util/PaySignUtil.java index 1805e5732..f535b167f 100644 --- a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/util/PaySignUtil.java +++ b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/util/PaySignUtil.java @@ -77,7 +77,7 @@ public class PaySignUtil { // BigDecimal类型 else if (field.getType().equals(BigDecimal.class)) { BigDecimal bigDecimal = (BigDecimal) fieldValue; - String decimalString = bigDecimal.toString(); + String decimalString = bigDecimal.stripTrailingZeros().toPlainString();; map.put(fieldName, decimalString); } // 集合类型 diff --git a/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/test/trade/PayOrderTest.java b/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/test/trade/PayOrderTest.java index c7a99439d..b7193cbfe 100644 --- a/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/test/trade/PayOrderTest.java +++ b/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/test/trade/PayOrderTest.java @@ -11,6 +11,7 @@ import cn.daxpay.single.sdk.param.channel.WechatPayParam; import cn.daxpay.single.sdk.param.trade.pay.PayParam; import cn.daxpay.single.sdk.response.DaxPayResult; import cn.daxpay.single.sdk.util.JsonUtil; +import cn.daxpay.single.sdk.util.PaySignUtil; import org.junit.Before; import org.junit.Test; @@ -29,7 +30,7 @@ public class PayOrderTest { DaxPayConfig config = DaxPayConfig.builder() .serviceUrl("http://127.0.0.1:9999") .signSecret("123456") - .appId("M7934041241299655") + .appId("M8207639754663343") .signType(SignTypeEnum.HMAC_SHA256) .build(); DaxPayKit.initConfig(config); @@ -45,7 +46,7 @@ public class PayOrderTest { param.setBizOrderNo("SDK_"+ System.currentTimeMillis()); param.setTitle("测试微信扫码支付"); param.setDescription("这是支付备注"); - param.setAmount(BigDecimal.valueOf(0.01)); + param.setAmount(BigDecimal.valueOf(1.00)); param.setChannel(ChannelEnum.WECHAT.getCode()); param.setMethod(PayMethodEnum.QRCODE.getCode()); param.setAttach("{回调参数}"); @@ -55,6 +56,7 @@ public class PayOrderTest { DaxPayResult execute = DaxPayKit.execute(param); System.out.println(JsonUtil.toJsonStr(execute)); + System.out.println(PaySignUtil.hmacSha256Sign(execute, "123456")); } /** diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/util/PaySignUtil.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/util/PaySignUtil.java index e0592a1de..d32de30f8 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/util/PaySignUtil.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/util/PaySignUtil.java @@ -78,7 +78,7 @@ public class PaySignUtil { // BigDecimal类型 else if (field.getType().equals(BigDecimal.class)) { BigDecimal bigDecimal = (BigDecimal) fieldValue; - String decimalString = bigDecimal.toString(); + String decimalString = bigDecimal.stripTrailingZeros().toPlainString(); map.put(fieldName, decimalString); } // 集合类型