Skip to content

Commit e2c2412

Browse files
authored
🆕 #2574 【小程序】物流服务增加即时配送查询相关接口
1 parent 2cb8331 commit e2c2412

File tree

9 files changed

+507
-66
lines changed

9 files changed

+507
-66
lines changed

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaExpressService.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,4 +136,7 @@ public interface WxMaExpressService {
136136
* @throws WxErrorException 模拟更新订单状态失败时返回
137137
*/
138138
void testUpdateOrder(WxMaExpressTestUpdateOrderRequest wxMaExpressTestUpdateOrderRequest) throws WxErrorException;
139+
140+
141+
139142
}

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaImmediateDeliveryService.java

Lines changed: 98 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111
import cn.binarywang.wx.miniapp.bean.delivery.GetOrderResponse;
1212
import cn.binarywang.wx.miniapp.bean.delivery.MockUpdateOrderRequest;
1313
import cn.binarywang.wx.miniapp.bean.delivery.MockUpdateOrderResponse;
14+
import cn.binarywang.wx.miniapp.bean.delivery.QueryWaybillTraceRequest;
15+
import cn.binarywang.wx.miniapp.bean.delivery.QueryWaybillTraceResponse;
16+
import cn.binarywang.wx.miniapp.bean.delivery.TraceWaybillRequest;
17+
import cn.binarywang.wx.miniapp.bean.delivery.TraceWaybillResponse;
1418
import me.chanjar.weixin.common.error.WxErrorException;
1519

1620
/**
@@ -25,76 +29,104 @@
2529
*/
2630
public interface WxMaImmediateDeliveryService {
2731

28-
/**
29-
* 拉取已绑定账号.
30-
* <pre>
31-
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/immediate-delivery/by-business/immediateDelivery.getBindAccount.html
32-
* </pre>
33-
*
34-
* @return 响应
35-
* @throws WxErrorException 异常
36-
*/
37-
BindAccountResponse getBindAccount() throws WxErrorException;
32+
/**
33+
* 拉取已绑定账号.
34+
* <pre>
35+
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/immediate-delivery/by-business/immediateDelivery.getBindAccount.html
36+
* </pre>
37+
*
38+
* @return 响应
39+
* @throws WxErrorException 异常
40+
*/
41+
BindAccountResponse getBindAccount() throws WxErrorException;
3842

39-
/**
40-
* 下配送单接口.
41-
* <pre>
42-
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/immediate-delivery/by-business/immediateDelivery.addOrder.html
43-
* </pre>
44-
*
45-
* @param request request
46-
* @return 响应
47-
* @throws WxErrorException 异常
48-
*/
49-
AddOrderResponse addOrder(AddOrderRequest request) throws WxErrorException;
43+
/**
44+
* 下配送单接口.
45+
* <pre>
46+
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/immediate-delivery/by-business/immediateDelivery.addOrder.html
47+
* </pre>
48+
*
49+
* @param request request
50+
* @return 响应
51+
* @throws WxErrorException 异常
52+
*/
53+
AddOrderResponse addOrder(AddOrderRequest request) throws WxErrorException;
5054

51-
/**
52-
* 拉取配送单信息.
53-
* <pre>
54-
* 商家可使用本接口查询某一配送单的配送状态,便于商家掌握配送情况。
55-
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/immediate-delivery/by-business/immediateDelivery.getOrder.html
56-
* </pre>
57-
*
58-
* @param request request
59-
* @return 响应
60-
* @throws WxErrorException 异常
61-
*/
62-
GetOrderResponse getOrder(GetOrderRequest request) throws WxErrorException;
55+
/**
56+
* 拉取配送单信息.
57+
* <pre>
58+
* 商家可使用本接口查询某一配送单的配送状态,便于商家掌握配送情况。
59+
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/immediate-delivery/by-business/immediateDelivery.getOrder.html
60+
* </pre>
61+
*
62+
* @param request request
63+
* @return 响应
64+
* @throws WxErrorException 异常
65+
*/
66+
GetOrderResponse getOrder(GetOrderRequest request) throws WxErrorException;
6367

64-
/**
65-
* 取消配送单接口.
66-
* <pre>
67-
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/immediate-delivery/by-business/immediateDelivery.cancelOrder.html
68-
* </pre>
69-
*
70-
* @param request request
71-
* @return 响应
72-
* @throws WxErrorException 异常
73-
*/
74-
CancelOrderResponse cancelOrder(CancelOrderRequest request) throws WxErrorException;
68+
/**
69+
* 取消配送单接口.
70+
* <pre>
71+
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/immediate-delivery/by-business/immediateDelivery.cancelOrder.html
72+
* </pre>
73+
*
74+
* @param request request
75+
* @return 响应
76+
* @throws WxErrorException 异常
77+
*/
78+
CancelOrderResponse cancelOrder(CancelOrderRequest request) throws WxErrorException;
7579

76-
/**
77-
* 异常件退回商家商家确认收货接口.
78-
* <pre>
79-
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/immediate-delivery/by-business/immediateDelivery.abnormalConfirm.html
80-
* </pre>
81-
*
82-
* @param request request
83-
* @return 响应
84-
* @throws WxErrorException 异常
85-
*/
86-
AbnormalConfirmResponse abnormalConfirm(AbnormalConfirmRequest request) throws WxErrorException;
80+
/**
81+
* 异常件退回商家商家确认收货接口.
82+
* <pre>
83+
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/immediate-delivery/by-business/immediateDelivery.abnormalConfirm.html
84+
* </pre>
85+
*
86+
* @param request request
87+
* @return 响应
88+
* @throws WxErrorException 异常
89+
*/
90+
AbnormalConfirmResponse abnormalConfirm(AbnormalConfirmRequest request) throws WxErrorException;
91+
92+
/**
93+
* 模拟配送公司更新配送单状态, 该接口只用于沙盒环境,即订单并没有真实流转到运力方.
94+
* <pre>
95+
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/immediate-delivery/by-business/immediateDelivery.mockUpdateOrder.html
96+
* </pre>
97+
*
98+
* @param request request
99+
* @return 响应
100+
* @throws WxErrorException 异常
101+
*/
102+
MockUpdateOrderResponse mockUpdateOrder(MockUpdateOrderRequest request) throws WxErrorException;
103+
104+
105+
/**
106+
* 商户使用此接口向微信提供某交易单号对应的运单号。微信后台会跟踪运单的状态变化
107+
* <pre>
108+
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/express/express_search.html
109+
* </pre>
110+
*
111+
* @param request request
112+
* @return 响应
113+
* @throws WxErrorException 异常
114+
*/
115+
TraceWaybillResponse traceWaybill(TraceWaybillRequest request) throws WxErrorException;
116+
117+
118+
/**
119+
* 商户在调用完trace_waybill接口后,可以使用本接口查询到对应运单的详情信息
120+
* <pre>
121+
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/express/express_search.html
122+
* </pre>
123+
*
124+
* @param request request
125+
* @return 响应
126+
* @throws WxErrorException 异常
127+
*/
128+
QueryWaybillTraceResponse queryWaybillTrace(QueryWaybillTraceRequest request)
129+
throws WxErrorException;
87130

88-
/**
89-
* 模拟配送公司更新配送单状态, 该接口只用于沙盒环境,即订单并没有真实流转到运力方.
90-
* <pre>
91-
* 文档地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/immediate-delivery/by-business/immediateDelivery.mockUpdateOrder.html
92-
* </pre>
93-
*
94-
* @param request request
95-
* @return 响应
96-
* @throws WxErrorException 异常
97-
*/
98-
MockUpdateOrderResponse mockUpdateOrder(MockUpdateOrderRequest request) throws WxErrorException;
99131

100132
}

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaImmediateDeliveryServiceImpl.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,14 @@
1313
import cn.binarywang.wx.miniapp.bean.delivery.GetOrderResponse;
1414
import cn.binarywang.wx.miniapp.bean.delivery.MockUpdateOrderRequest;
1515
import cn.binarywang.wx.miniapp.bean.delivery.MockUpdateOrderResponse;
16+
import cn.binarywang.wx.miniapp.bean.delivery.QueryWaybillTraceRequest;
17+
import cn.binarywang.wx.miniapp.bean.delivery.QueryWaybillTraceResponse;
18+
import cn.binarywang.wx.miniapp.bean.delivery.TraceWaybillRequest;
19+
import cn.binarywang.wx.miniapp.bean.delivery.TraceWaybillResponse;
1620
import cn.binarywang.wx.miniapp.bean.delivery.base.WxMaDeliveryBaseResponse;
1721
import cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants;
22+
import cn.binarywang.wx.miniapp.constant.WxMaApiUrlConstants.InstantDelivery;
23+
import cn.binarywang.wx.miniapp.constant.WxMaConstants;
1824
import com.google.gson.JsonElement;
1925
import com.google.gson.JsonObject;
2026
import javassist.bytecode.ConstPool;
@@ -157,6 +163,29 @@ public MockUpdateOrderResponse mockUpdateOrder(final MockUpdateOrderRequest requ
157163
MockUpdateOrderResponse.class);
158164
}
159165

166+
@Override
167+
public TraceWaybillResponse traceWaybill(
168+
TraceWaybillRequest request) throws WxErrorException {
169+
String responseContent = this.wxMaService.post(InstantDelivery.TRACE_WAYBILL_URL, request);
170+
TraceWaybillResponse response = TraceWaybillResponse.fromJson(responseContent);
171+
if (response.getErrcode() == -1) {
172+
throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp));
173+
}
174+
return response;
175+
176+
}
177+
178+
@Override
179+
public QueryWaybillTraceResponse queryWaybillTrace(
180+
QueryWaybillTraceRequest request) throws WxErrorException {
181+
String responseContent = this.wxMaService.post(InstantDelivery.QUERY_WAYBILL_TRACE_URL, request);
182+
QueryWaybillTraceResponse response = QueryWaybillTraceResponse.fromJson(responseContent);
183+
if (response.getErrcode() == -1) {
184+
throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp));
185+
}
186+
return response;
187+
}
188+
160189
/**
161190
* 解析响应.
162191
*
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package cn.binarywang.wx.miniapp.bean.delivery;
2+
3+
4+
import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
5+
import com.google.gson.annotations.SerializedName;
6+
import java.io.Serializable;
7+
import lombok.AllArgsConstructor;
8+
import lombok.Builder;
9+
import lombok.Data;
10+
import lombok.NoArgsConstructor;
11+
import lombok.experimental.Accessors;
12+
13+
/**
14+
* <pre>
15+
* 查询运单接口 query_trace
16+
*
17+
* 商户在调用完trace_waybill接口后,可以使用本接口查询到对应运单的详情信息
18+
* </pre>
19+
*
20+
* @author boris
21+
* @since 2022-04-01
22+
*/
23+
@Data
24+
@Builder
25+
@NoArgsConstructor
26+
@AllArgsConstructor
27+
@Accessors(chain = true)
28+
public class QueryWaybillTraceRequest implements Serializable {
29+
30+
private static final long serialVersionUID = -7538739003766268386L;
31+
32+
33+
/**
34+
* 查询id
35+
* <pre>
36+
* 是否必填: 是
37+
* 描述: 可以从 传运单接口 trace_waybill 取数据
38+
* </pre>
39+
*/
40+
@SerializedName("waybill_token")
41+
private String waybillToken;
42+
43+
public String toJson() {
44+
return WxMaGsonBuilder.create().toJson(this);
45+
}
46+
}

0 commit comments

Comments
 (0)