Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ public String post(String url, String postData) throws WxErrorException {
if (isApiSignatureRequired(url)) {
// 接口需要签名
log.debug("已经配置接口需要签名,接口{}将走加密访问路径", url);
JsonObject jsonObject = GSON.fromJson(postData, JsonObject.class);
JsonObject jsonObject = GSON.fromJson(postData == null ? "{}" : postData, JsonObject.class);
return postWithSignature(url, jsonObject);
} else {
return execute(SimplePostRequestExecutor.create(this), url, postData);
Expand All @@ -323,12 +323,12 @@ public String post(String url, Object obj) throws WxErrorException {

@Override
public String post(String url, ToJson obj) throws WxErrorException {
return this.post(url, obj.toJson());
return this.post(url, obj == null ? "{}" : obj.toJson());
}

@Override
public String post(String url, JsonObject jsonObject) throws WxErrorException {
return this.post(url, jsonObject.toString());
return this.post(url, jsonObject == null ? "{}" : jsonObject.toString());
}

@Override
Expand Down Expand Up @@ -845,7 +845,12 @@ public String postWithSignature(String url, Object obj) throws WxErrorException
new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.create();
JsonObject jsonObject = gson.toJsonTree(obj).getAsJsonObject();
JsonObject jsonObject;
if (obj == null) {
jsonObject = gson.fromJson("{}", JsonObject.class);
} else {
jsonObject = gson.toJsonTree(obj).getAsJsonObject();
}
return this.postWithSignature(url, jsonObject);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class WxMaStoreBalance {
private String appid;
private int allBalance;

private List<Detail> balanceDetail;
private List<BalanceDetail> balanceDetail;

public String getWxStoreId() {
return wxStoreId;
Expand All @@ -39,11 +39,11 @@ public void setAllBalance(int allBalance) {
this.allBalance = allBalance;
}

public List<Detail> getBalanceDetail() {
public List<BalanceDetail> getBalanceDetail() {
return balanceDetail;
}

public void setBalanceDetail(List<Detail> balanceDetail) {
public void setBalanceDetail(List<BalanceDetail> balanceDetail) {
this.balanceDetail = balanceDetail;
}

Expand All @@ -52,7 +52,51 @@ public String toString() {
return ToStringBuilder.reflectionToString(this);
}

public static class Detail {
public static class BalanceDetail {
private int balance;
private String serviceTransId;
private String serviceTransName;
private List<OrderDetail> orderList;

public int getBalance() {
return balance;
}

public void setBalance(int balance) {
this.balance = balance;
}

public String getServiceTransId() {
return serviceTransId;
}

public void setServiceTransId(String serviceTransId) {
this.serviceTransId = serviceTransId;
}

public String getServiceTransName() {
return serviceTransName;
}

public void setServiceTransName(String serviceTransName) {
this.serviceTransName = serviceTransName;
}

public List<OrderDetail> getOrderList() {
return orderList;
}

public void setOrderList(List<OrderDetail> orderList) {
this.orderList = orderList;
}

@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
}

public static class OrderDetail {
private String payorderId;
private int chargeAmt;
private int unusedAmt;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@
import cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants;
import cn.binarywang.wx.miniapp.test.ApiTestModule;
import cn.binarywang.wx.miniapp.test.TestConfig;
import com.google.gson.JsonObject;
import com.google.inject.Inject;
import java.util.ArrayList;
import java.util.List;
import me.chanjar.weixin.common.bean.ToJson;
import me.chanjar.weixin.common.error.WxErrorException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -35,6 +37,85 @@ public void testApiSignature() throws Exception {
logger.info("apply 额度剩余 :{}", result.getQuota());
}

@Test
public void testApiGetPostNullData() throws Exception {
try {
wxService.get(WxMaApiUrlConstants.Analysis.GET_USER_PORTRAIT_URL, null);
} catch (NullPointerException npe) {
logger.error("NullPointerException", npe);
fail("遇到空指针 get(url, null)");
} catch (WxErrorException wxErrorException) {
// 这个是正常的,因为这里的调用没按照接口规则
}
// 走加密路径url
try {
wxService.post(WxMaApiUrlConstants.OpenApi.CLEAR_QUOTA, (Object) null);
} catch (NullPointerException npe) {
logger.error("NullPointerException", npe);
fail("遇到空指针 post(url, Object null)");
} catch (WxErrorException wxErrorException) {
// 这个是正常的,因为这里的调用没按照接口规则
}
try {
wxService.post(WxMaApiUrlConstants.OpenApi.CLEAR_QUOTA, (String) null);
} catch (NullPointerException npe) {
logger.error("NullPointerException", npe);
fail("遇到空指针 post(url, String null)");
} catch (WxErrorException wxErrorException) {
// 这个是正常的,因为这里的调用没按照接口规则
}
try {
wxService.post(WxMaApiUrlConstants.OpenApi.CLEAR_QUOTA, (JsonObject) null);
} catch (NullPointerException npe) {
logger.error("NullPointerException", npe);
fail("遇到空指针 post(url, JsonObject null)");
} catch (WxErrorException wxErrorException) {
// 这个是正常的,因为这里的调用没按照接口规则
}
try {
wxService.post(WxMaApiUrlConstants.OpenApi.CLEAR_QUOTA, (ToJson) null);
} catch (NullPointerException npe) {
logger.error("NullPointerException", npe);
fail("遇到空指针 post(url, ToJson null)");
} catch (WxErrorException wxErrorException) {
// 这个是正常的,因为这里的调用没按照接口规则
}

// 不走加密路径URL
try {
wxService.post(WxMaApiUrlConstants.Intracity.APPLY_URL, (Object) null);
} catch (NullPointerException npe) {
logger.error("NullPointerException", npe);
fail("遇到空指针 post(url, Object null)");
} catch (WxErrorException wxErrorException) {
// 这个是正常的,因为这里的调用没按照接口规则
}
try {
wxService.post(WxMaApiUrlConstants.Intracity.APPLY_URL, (String) null);
} catch (NullPointerException npe) {
logger.error("NullPointerException", npe);
fail("遇到空指针 post(url, String null)");
} catch (WxErrorException wxErrorException) {
// 这个是正常的,因为这里的调用没按照接口规则
}
try {
wxService.post(WxMaApiUrlConstants.Intracity.APPLY_URL, (JsonObject) null);
} catch (NullPointerException npe) {
logger.error("NullPointerException", npe);
fail("遇到空指针 post(url, JsonObject null)");
} catch (WxErrorException wxErrorException) {
// 这个是正常的,因为这里的调用没按照接口规则
}
try {
wxService.post(WxMaApiUrlConstants.Intracity.APPLY_URL, (ToJson) null);
} catch (NullPointerException npe) {
logger.error("NullPointerException", npe);
fail("遇到空指针 post(url, ToJson null)");
} catch (WxErrorException wxErrorException) {
// 这个是正常的,因为这里的调用没按照接口规则
}
}

@Test
public void testApply() throws Exception {
logger.debug("testApply");
Expand Down