🎨 #4074 【微信支付】完善小程序纯签约接口的版本字段的兼容性
This commit is contained in:
@@ -6,6 +6,7 @@ import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamOmitField;
|
||||
import lombok.*;
|
||||
import me.chanjar.weixin.common.annotation.Required;
|
||||
|
||||
@@ -25,6 +26,8 @@ import java.util.Map;
|
||||
@AllArgsConstructor
|
||||
@XStreamAlias("xml")
|
||||
public class WxMaEntrustRequest extends BaseWxPayRequest {
|
||||
private static final long serialVersionUID = -2823017402712927893L;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 协议模板ID
|
||||
@@ -101,18 +104,12 @@ public class WxMaEntrustRequest extends BaseWxPayRequest {
|
||||
private String notifyUrl;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 版本号
|
||||
* sign
|
||||
* 是
|
||||
* string(8)
|
||||
* 1.0
|
||||
* 固定值1.0
|
||||
* </pre>
|
||||
* @deprecated 小程序纯签约接口不支持该参数,设置后不会参与请求序列化或签名。
|
||||
*/
|
||||
@Required
|
||||
@Deprecated
|
||||
@XStreamOmitField
|
||||
@XStreamAlias("version")
|
||||
private String version;
|
||||
private transient String version;
|
||||
|
||||
|
||||
/**
|
||||
@@ -155,6 +152,11 @@ public class WxMaEntrustRequest extends BaseWxPayRequest {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String[] getIgnoredParamsForSign() {
|
||||
return new String[]{"version"};
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void storeMap(Map<String, String> map) {
|
||||
map.put("plan_id", planId);
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.github.binarywang.wxpay.constant.WxPayConstants.SignType;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||
import com.thoughtworks.xstream.annotations.XStreamOmitField;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.codec.digest.DigestUtils;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
@@ -238,6 +239,10 @@ public class SignUtils {
|
||||
|
||||
for (Field field : fields) {
|
||||
try {
|
||||
if (field.isAnnotationPresent(XStreamOmitField.class)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
boolean isAccessible = field.isAccessible();
|
||||
field.setAccessible(true);
|
||||
if (field.get(bean) == null) {
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.github.binarywang.wxpay.bean.request;
|
||||
|
||||
import com.github.binarywang.wxpay.config.WxPayConfig;
|
||||
import com.github.binarywang.wxpay.constant.WxPayConstants;
|
||||
import com.github.binarywang.wxpay.util.SignUtils;
|
||||
import com.github.binarywang.wxpay.util.XmlConfig;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Tests for {@link WxMaEntrustRequest}.
|
||||
*/
|
||||
public class WxMaEntrustRequestTest {
|
||||
|
||||
@Test
|
||||
public void versionIsExcludedFromPayloadAndSignature() throws Exception {
|
||||
WxMaEntrustRequest request = WxMaEntrustRequest.newBuilder()
|
||||
.planId("plan-id")
|
||||
.contractCode("contract-code")
|
||||
.requestSerial(1L)
|
||||
.contractDisplayAccount("account")
|
||||
.notifyUrl("https://example.com/notify")
|
||||
.timestamp("1710000000")
|
||||
.version("1.0")
|
||||
.build();
|
||||
WxPayConfig config = new WxPayConfig();
|
||||
config.setAppId("wx-app-id");
|
||||
config.setMchId("mch-id");
|
||||
config.setMchKey("mch-key");
|
||||
|
||||
request.checkAndSign(config);
|
||||
|
||||
assertThat(request.toString()).doesNotContain("\"version\"");
|
||||
assertThat(request.toXML()).doesNotContain("<version");
|
||||
boolean fastMode = XmlConfig.fastMode;
|
||||
try {
|
||||
XmlConfig.fastMode = true;
|
||||
assertThat(request.toXML()).doesNotContain("<version");
|
||||
} finally {
|
||||
XmlConfig.fastMode = fastMode;
|
||||
}
|
||||
assertThat(request.getSign()).isEqualTo(SignUtils.createSign(
|
||||
request, WxPayConstants.SignType.MD5, config.getMchKey(), null));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user