mirror of
https://gitee.com/dromara/dax-pay.git
synced 2025-09-04 03:30:36 +00:00
fix: 修复 BigDecimal 类型数据序列化和签名异常问题, 修复微信支付方式判断逻辑
This commit is contained in:
@@ -30,7 +30,7 @@ public class WechatPayService {
|
|||||||
// 判断是否是支持的支付方式
|
// 判断是否是支持的支付方式
|
||||||
String method = payParam.getMethod();
|
String method = payParam.getMethod();
|
||||||
PayMethodEnum methodEnum = PayMethodEnum.findByCode(method);
|
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("不支持的支付方式");
|
throw new ValidationFailedException("不支持的支付方式");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -17,6 +17,7 @@ import lombok.experimental.UtilityClass;
|
|||||||
public class JsonUtil {
|
public class JsonUtil {
|
||||||
private final JSONConfig JSON_CONFIG = JSONConfig.create()
|
private final JSONConfig JSON_CONFIG = JSONConfig.create()
|
||||||
.setDateFormat(DatePattern.NORM_DATETIME_PATTERN);
|
.setDateFormat(DatePattern.NORM_DATETIME_PATTERN);
|
||||||
|
// .setStripTrailingZeros(false);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 转换为实体
|
* 转换为实体
|
||||||
|
@@ -77,7 +77,7 @@ public class PaySignUtil {
|
|||||||
// BigDecimal类型
|
// BigDecimal类型
|
||||||
else if (field.getType().equals(BigDecimal.class)) {
|
else if (field.getType().equals(BigDecimal.class)) {
|
||||||
BigDecimal bigDecimal = (BigDecimal) fieldValue;
|
BigDecimal bigDecimal = (BigDecimal) fieldValue;
|
||||||
String decimalString = bigDecimal.toString();
|
String decimalString = bigDecimal.stripTrailingZeros().toPlainString();;
|
||||||
map.put(fieldName, decimalString);
|
map.put(fieldName, decimalString);
|
||||||
}
|
}
|
||||||
// 集合类型
|
// 集合类型
|
||||||
|
@@ -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.param.trade.pay.PayParam;
|
||||||
import cn.daxpay.single.sdk.response.DaxPayResult;
|
import cn.daxpay.single.sdk.response.DaxPayResult;
|
||||||
import cn.daxpay.single.sdk.util.JsonUtil;
|
import cn.daxpay.single.sdk.util.JsonUtil;
|
||||||
|
import cn.daxpay.single.sdk.util.PaySignUtil;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
@@ -29,7 +30,7 @@ public class PayOrderTest {
|
|||||||
DaxPayConfig config = DaxPayConfig.builder()
|
DaxPayConfig config = DaxPayConfig.builder()
|
||||||
.serviceUrl("http://127.0.0.1:9999")
|
.serviceUrl("http://127.0.0.1:9999")
|
||||||
.signSecret("123456")
|
.signSecret("123456")
|
||||||
.appId("M7934041241299655")
|
.appId("M8207639754663343")
|
||||||
.signType(SignTypeEnum.HMAC_SHA256)
|
.signType(SignTypeEnum.HMAC_SHA256)
|
||||||
.build();
|
.build();
|
||||||
DaxPayKit.initConfig(config);
|
DaxPayKit.initConfig(config);
|
||||||
@@ -45,7 +46,7 @@ public class PayOrderTest {
|
|||||||
param.setBizOrderNo("SDK_"+ System.currentTimeMillis());
|
param.setBizOrderNo("SDK_"+ System.currentTimeMillis());
|
||||||
param.setTitle("测试微信扫码支付");
|
param.setTitle("测试微信扫码支付");
|
||||||
param.setDescription("这是支付备注");
|
param.setDescription("这是支付备注");
|
||||||
param.setAmount(BigDecimal.valueOf(0.01));
|
param.setAmount(BigDecimal.valueOf(1.00));
|
||||||
param.setChannel(ChannelEnum.WECHAT.getCode());
|
param.setChannel(ChannelEnum.WECHAT.getCode());
|
||||||
param.setMethod(PayMethodEnum.QRCODE.getCode());
|
param.setMethod(PayMethodEnum.QRCODE.getCode());
|
||||||
param.setAttach("{回调参数}");
|
param.setAttach("{回调参数}");
|
||||||
@@ -55,6 +56,7 @@ public class PayOrderTest {
|
|||||||
|
|
||||||
DaxPayResult<PayResultModel> execute = DaxPayKit.execute(param);
|
DaxPayResult<PayResultModel> execute = DaxPayKit.execute(param);
|
||||||
System.out.println(JsonUtil.toJsonStr(execute));
|
System.out.println(JsonUtil.toJsonStr(execute));
|
||||||
|
System.out.println(PaySignUtil.hmacSha256Sign(execute, "123456"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -78,7 +78,7 @@ public class PaySignUtil {
|
|||||||
// BigDecimal类型
|
// BigDecimal类型
|
||||||
else if (field.getType().equals(BigDecimal.class)) {
|
else if (field.getType().equals(BigDecimal.class)) {
|
||||||
BigDecimal bigDecimal = (BigDecimal) fieldValue;
|
BigDecimal bigDecimal = (BigDecimal) fieldValue;
|
||||||
String decimalString = bigDecimal.toString();
|
String decimalString = bigDecimal.stripTrailingZeros().toPlainString();
|
||||||
map.put(fieldName, decimalString);
|
map.put(fieldName, decimalString);
|
||||||
}
|
}
|
||||||
// 集合类型
|
// 集合类型
|
||||||
|
Reference in New Issue
Block a user