@@ -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"); | |||||
} | |||||
} |