فهرست منبع

追加接口【微信物流服务 /微信物流服务(商家查看) /查询组件】 (#843)

* feat: 添加 微信物流服务 /微信物流服务(商家查看) /消息组件

* fix lint issues

* fix: 查询运单详情信息返回结果结构

* 追加官方文档地址

* feat: 追加接口【微信物流服务 /微信物流服务(商家查看) /查询组件】

* fix: comments

* fix: indents
ccfish 11 ماه پیش
والد
کامیت
5927c26152
1فایلهای تغییر یافته به همراه106 افزوده شده و 2 حذف شده
  1. 106 2
      miniprogram/express/delivery.go

+ 106 - 2
miniprogram/express/delivery.go

@@ -8,10 +8,19 @@ import (
 )
 
 const (
-	// 传运单接口
+	// 传运单接口,商户使用此接口向微信提供某交易单号对应的运单号。微信后台会跟踪运单的状态变化
+	openMsgTraceWaybillURL = "https://api.weixin.qq.com/cgi-bin/express/delivery/open_msg/trace_waybill?access_token=%s"
+
+	// 查询运单接口,商户在调用完trace_waybill接口后,可以使用本接口查询到对应运单的详情信息
+	openMsgQueryTraceURL = "https://api.weixin.qq.com/cgi-bin/express/delivery/open_msg/query_trace?access_token=%s"
+
+	// 更新物流信息,更新物品信息
+	openMsgUpdateWaybillGoodsURL = "https://api.weixin.qq.com/cgi-bin/express/delivery/open_msg/update_waybill_goods?access_token=%s"
+
+	// 传运单接口,商户使用此接口向微信提供某交易单号对应的运单号。微信后台会跟踪运单的状态变化,在关键物流节点给下单用户推送消息通知
 	openMsgFollowWaybillURL = "https://api.weixin.qq.com/cgi-bin/express/delivery/open_msg/follow_waybill?access_token=%s"
 
-	// 查运单接口
+	// 查运单接口,商户在调用完follow_waybill接口后,可以使用本接口查询到对应运单的详情信息
 	openMsgQueryFollowTraceURL = "https://api.weixin.qq.com/cgi-bin/express/delivery/open_msg/query_follow_trace?access_token=%s"
 
 	// 更新物品信息接口
@@ -21,6 +30,63 @@ const (
 	openMsgGetDeliveryListURL = "https://api.weixin.qq.com/cgi-bin/express/delivery/open_msg/get_delivery_list?access_token=%s"
 )
 
+// TraceWaybill 传运单
+// https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/express/business/express_search.html#_2-%E6%8E%A5%E5%8F%A3%E5%88%97%E8%A1%A8
+func (express *Express) TraceWaybill(ctx context.Context, in *TraceWaybillRequest) (res TraceWaybillResponse, err error) {
+	accessToken, err := express.GetAccessToken()
+	if err != nil {
+		return
+	}
+
+	uri := fmt.Sprintf(openMsgTraceWaybillURL, accessToken)
+	response, err := util.PostJSONContext(ctx, uri, in)
+	if err != nil {
+		return
+	}
+
+	// 使用通用方法返回错误
+	err = util.DecodeWithError(response, &res, "TraceWaybill")
+	return
+}
+
+// QueryTrace 查询运单详情信息
+// https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/express/business/express_search.html#_2-%E6%8E%A5%E5%8F%A3%E5%88%97%E8%A1%A8
+func (express *Express) QueryTrace(ctx context.Context, in *QueryTraceRequest) (res QueryTraceResponse, err error) {
+	accessToken, err := express.GetAccessToken()
+	if err != nil {
+		return
+	}
+
+	uri := fmt.Sprintf(openMsgQueryTraceURL, accessToken)
+	response, err := util.PostJSONContext(ctx, uri, in)
+	if err != nil {
+		return
+	}
+
+	// 使用通用方法返回错误
+	err = util.DecodeWithError(response, &res, "QueryTrace")
+	return
+}
+
+// UpdateWaybillGoods 更新物品信息
+// https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/express/business/express_search.html#_2-%E6%8E%A5%E5%8F%A3%E5%88%97%E8%A1%A8
+func (express *Express) UpdateWaybillGoods(ctx context.Context, in *UpdateWaybillGoodsRequest) (err error) {
+	accessToken, err := express.GetAccessToken()
+	if err != nil {
+		return
+	}
+
+	uri := fmt.Sprintf(openMsgUpdateWaybillGoodsURL, accessToken)
+	response, err := util.PostJSONContext(ctx, uri, in)
+	if err != nil {
+		return
+	}
+
+	// 使用通用方法返回错误
+	err = util.DecodeWithCommonError(response, "UpdateWaybillGoods")
+	return
+}
+
 // FollowWaybill 传运单
 // https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/express/business/express_open_msg.html#_4-1%E3%80%81%E4%BC%A0%E8%BF%90%E5%8D%95%E6%8E%A5%E5%8F%A3-follow-waybill
 func (express *Express) FollowWaybill(ctx context.Context, in *FollowWaybillRequest) (res FollowWaybillResponse, err error) {
@@ -97,6 +163,44 @@ func (express *Express) GetDeliveryList(ctx context.Context) (res GetDeliveryLis
 	return
 }
 
+// TraceWaybillRequest 传运单接口请求参数
+type TraceWaybillRequest struct {
+	GoodsInfo       FollowWaybillGoodsInfo `json:"goods_info"`        // 必选,商品信息
+	Openid          string                 `json:"openid"`            // 必选,用户openid
+	SenderPhone     string                 `json:"sender_phone"`      // 寄件人手机号
+	ReceiverPhone   string                 `json:"receiver_phone"`    // 必选,收件人手机号,部分运力需要用户手机号作为查单依据
+	DeliveryID      string                 `json:"delivery_id"`       // 运力id(运单号所属运力公司id)
+	WaybillID       string                 `json:"waybill_id"`        // 必选,运单号
+	TransID         string                 `json:"trans_id"`          // 必选,交易单号(微信支付生成的交易单号,一般以420开头)
+	OrderDetailPath string                 `json:"order_detail_path"` // 订单详情页地址
+
+}
+
+// TraceWaybillResponse 传运单接口返回参数
+type TraceWaybillResponse struct {
+	util.CommonError
+	WaybillToken string `json:"waybill_token"` // 查询id
+}
+
+// QueryTraceRequest 查询运单详情接口请求参数
+type QueryTraceRequest struct {
+	WaybillToken string `json:"waybill_token"` // 必选,查询id
+}
+
+// QueryTraceResponse 查询运单详情接口返回参数
+type QueryTraceResponse struct {
+	util.CommonError
+	WaybillInfo  FlowWaybillInfo         `json:"waybill_info"`  // 运单信息
+	ShopInfo     FollowWaybillShopInfo   `json:"shop_info"`     // 商品信息
+	DeliveryInfo FlowWaybillDeliveryInfo `json:"delivery_info"` // 运力信息
+}
+
+// UpdateWaybillGoodsRequest 更新物品信息接口请求参数
+type UpdateWaybillGoodsRequest struct {
+	WaybillToken string                 `json:"waybill_token"` // 必选,查询id
+	GoodsInfo    FollowWaybillGoodsInfo `json:"goods_info"`    // 必选,商品信息
+}
+
 // FollowWaybillRequest 传运单接口请求参数
 type FollowWaybillRequest struct {
 	GoodsInfo       FollowWaybillGoodsInfo `json:"goods_info"`        // 必选,商品信息