mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-05-03 20:27:46 +08:00
🐛 #1455 修复微信支付分账结果查询接口的分账接收人解析错误的问题,并补充相关单元测试代码
This commit is contained in:
parent
8d6978d757
commit
38959f821a
@ -4,12 +4,15 @@ import com.github.binarywang.wxpay.bean.result.BaseWxPayResult;
|
|||||||
import com.google.gson.FieldNamingPolicy;
|
import com.google.gson.FieldNamingPolicy;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
import com.google.gson.GsonBuilder;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
import com.thoughtworks.xstream.annotations.XStreamAlias;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Wang GuangXin 2019/10/22 15:51
|
* @author Wang GuangXin 2019/10/22 15:51
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
@ -49,7 +52,11 @@ public class ProfitSharingQueryResult extends BaseWxPayResult {
|
|||||||
* 分账接收方列表
|
* 分账接收方列表
|
||||||
*/
|
*/
|
||||||
@XStreamAlias("receivers")
|
@XStreamAlias("receivers")
|
||||||
private String receivers;
|
private String receiversJson;
|
||||||
|
/**
|
||||||
|
* 分账接收方列表json转换后的对象
|
||||||
|
*/
|
||||||
|
private List<Receiver> receivers;
|
||||||
/**
|
/**
|
||||||
* 分账金额
|
* 分账金额
|
||||||
*/
|
*/
|
||||||
@ -61,11 +68,14 @@ public class ProfitSharingQueryResult extends BaseWxPayResult {
|
|||||||
@XStreamAlias("description")
|
@XStreamAlias("description")
|
||||||
private String description;
|
private String description;
|
||||||
|
|
||||||
public ProfitSharingQueryResult.Receivers formatReceivers() {
|
public List<Receiver> formatReceivers() {
|
||||||
GsonBuilder gsonBuilder = new GsonBuilder();
|
GsonBuilder gsonBuilder = new GsonBuilder();
|
||||||
gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
|
gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
|
||||||
Gson gson = gsonBuilder.create();
|
Gson gson = gsonBuilder.create();
|
||||||
return gson.fromJson(receivers, Receivers.class);
|
final List<Receiver> receivers = gson.fromJson(receiversJson, new TypeToken<List<Receiver>>() {
|
||||||
|
}.getType());
|
||||||
|
this.receivers = receivers;
|
||||||
|
return receivers;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -75,13 +85,13 @@ public class ProfitSharingQueryResult extends BaseWxPayResult {
|
|||||||
orderId = readXMLString(d, "orderId");
|
orderId = readXMLString(d, "orderId");
|
||||||
status = readXMLString(d, "status");
|
status = readXMLString(d, "status");
|
||||||
closeReason = readXMLString(d, "close_reason");
|
closeReason = readXMLString(d, "close_reason");
|
||||||
receivers = readXMLString(d, "receivers");
|
receiversJson = readXMLString(d, "receivers");
|
||||||
amount = readXMLInteger(d, "amount");
|
amount = readXMLInteger(d, "amount");
|
||||||
description = readXMLString(d, "description");
|
description = readXMLString(d, "description");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class Receivers {
|
public class Receiver {
|
||||||
/**
|
/**
|
||||||
* 分账接收方类型
|
* 分账接收方类型
|
||||||
*/
|
*/
|
||||||
|
@ -81,6 +81,7 @@ public class ProfitSharingServiceImpl implements ProfitSharingService {
|
|||||||
|
|
||||||
String responseContent = this.payService.post(url, request.toXML(), true);
|
String responseContent = this.payService.post(url, request.toXML(), true);
|
||||||
ProfitSharingQueryResult result = BaseWxPayResult.fromXML(responseContent, ProfitSharingQueryResult.class);
|
ProfitSharingQueryResult result = BaseWxPayResult.fromXML(responseContent, ProfitSharingQueryResult.class);
|
||||||
|
result.formatReceivers();
|
||||||
result.checkResult(this.payService, request.getSignType(), true);
|
result.checkResult(this.payService, request.getSignType(), true);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,59 @@
|
|||||||
|
package com.github.binarywang.wxpay.bean.profitsharing;
|
||||||
|
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 测试.
|
||||||
|
*
|
||||||
|
* @author <a href="https://github.com/binarywang">Binary Wang</a>
|
||||||
|
* @date 2020-03-22
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public class ProfitSharingQueryResultTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFormatReceivers() {
|
||||||
|
ProfitSharingQueryResult result = new ProfitSharingQueryResult();
|
||||||
|
result.setReceiversJson("[\n" +
|
||||||
|
"{\n" +
|
||||||
|
"\"type\": \"MERCHANT_ID\",\n" +
|
||||||
|
"\"account\":\"190001001\",\n" +
|
||||||
|
"\"amount\":100,\n" +
|
||||||
|
"\"description\": \"分到商户\",\n" +
|
||||||
|
"\"result\": \"SUCCESS\",\n" +
|
||||||
|
"\"finish_time\": \"20180608170132\"\n" +
|
||||||
|
"},\n" +
|
||||||
|
"{\n" +
|
||||||
|
"\"type\": \"PERSONAL_WECHATID\",\n" +
|
||||||
|
"\"account\":\"86693952\",\n" +
|
||||||
|
"\"amount\":888,\n" +
|
||||||
|
"\"description\": \"分到个人\",\n" +
|
||||||
|
"\"result\": \"SUCCESS\",\n" +
|
||||||
|
"\"finish_time\": \"20180608170132\"\n" +
|
||||||
|
"}\n" +
|
||||||
|
"]");
|
||||||
|
|
||||||
|
List<ProfitSharingQueryResult.Receiver> receivers = result.formatReceivers();
|
||||||
|
assertThat(receivers).isNotEmpty();
|
||||||
|
|
||||||
|
assertThat(receivers.get(0)).isNotNull();
|
||||||
|
assertThat(receivers.get(0).getType()).isEqualTo("MERCHANT_ID");
|
||||||
|
assertThat(receivers.get(0).getAccount()).isEqualTo("190001001");
|
||||||
|
assertThat(receivers.get(0).getAmount()).isEqualTo(100);
|
||||||
|
assertThat(receivers.get(0).getDescription()).isEqualTo("分到商户");
|
||||||
|
assertThat(receivers.get(0).getResult()).isEqualTo("SUCCESS");
|
||||||
|
assertThat(receivers.get(0).getFinishTime()).isEqualTo("20180608170132");
|
||||||
|
|
||||||
|
assertThat(receivers.get(1)).isNotNull();
|
||||||
|
assertThat(receivers.get(1).getType()).isEqualTo("PERSONAL_WECHATID");
|
||||||
|
assertThat(receivers.get(1).getAccount()).isEqualTo("86693952");
|
||||||
|
assertThat(receivers.get(1).getAmount()).isEqualTo(888);
|
||||||
|
assertThat(receivers.get(1).getDescription()).isEqualTo("分到个人");
|
||||||
|
assertThat(receivers.get(1).getResult()).isEqualTo("SUCCESS");
|
||||||
|
assertThat(receivers.get(1).getFinishTime()).isEqualTo("20180608170132");
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user