This commit is contained in:
苏尹岚
2020-10-28 17:03:13 +08:00
parent 9eefd9a729
commit 30d13e39a5
2 changed files with 41 additions and 15 deletions

View File

@@ -221,8 +221,8 @@ type WaybillReceiveParam struct {
// GoodsCount int `json:"goodsCount"` //否 无 寄托物数量 // GoodsCount int `json:"goodsCount"` //否 无 寄托物数量
PromiseTimeType int `json:"promiseTimeType"` //否 无 产品类型1特惠送 2特快送 4城际闪送 5同城当日达 6次晨达 7微小件 8: 生鲜专送 16生鲜特快 17、生鲜特惠 21特惠小包 PromiseTimeType int `json:"promiseTimeType"` //否 无 产品类型1特惠送 2特快送 4城际闪送 5同城当日达 6次晨达 7微小件 8: 生鲜专送 16生鲜特快 17、生鲜特惠 21特惠小包
// Freight int `json:"freight"` //否 无 运费 // Freight int `json:"freight"` //否 无 运费
PickUpStartTime time.Time `json:"pickUpStartTime"` //否 1 预约取件开始时间 PickUpStartTime time.Time `json:"pickUpStartTime,omitempty"` //否 1 预约取件开始时间
PickUpEndTime time.Time `json:"pickUpEndTime"` //否 1 预约取件结束时间 PickUpEndTime time.Time `json:"pickUpEndTime,omitempty"` //否 1 预约取件结束时间
// UnpackingInspection string `json:"unpackingInspection"` //否 无 开箱验货标识 // UnpackingInspection string `json:"unpackingInspection"` //否 无 开箱验货标识
// BoxCode []string `json:"boxCode"` //否 无 商家箱号,多个箱号请用逗号分隔例如三个箱号为a123,b456,c789 // BoxCode []string `json:"boxCode"` //否 无 商家箱号,多个箱号请用逗号分隔例如三个箱号为a123,b456,c789
// FileURL string `json:"fileUrl"` //否 无 文件url // FileURL string `json:"fileUrl"` //否 无 文件url
@@ -417,7 +417,7 @@ func (a *API) QueryStock(goodsNo string) (queryStockResult []*QueryStockResult,
func (a *API) WaybillReceive(waybillReceiveParam *WaybillReceiveParam) (deliveryId string, err error) { func (a *API) WaybillReceive(waybillReceiveParam *WaybillReceiveParam) (deliveryId string, err error) {
result, err := a.AccessAPI("jingdong.ldop.waybill.receive", prodURL, utils.Struct2FlatMap(waybillReceiveParam)) result, err := a.AccessAPI("jingdong.ldop.waybill.receive", prodURL, utils.Struct2FlatMap(waybillReceiveParam))
if err == nil { if err == nil {
deliveryId = result["jingdong_ldop_waybill_receive_responce"].(map[string]map[string]string)["receiveorderinfo_result"]["deliveryId"] deliveryId = result["jingdong_ldop_waybill_receive_responce"].(map[string]interface{})["receiveorderinfo_result"].(map[string]interface{})["deliveryId"].(string)
} }
return deliveryId, err return deliveryId, err
} }
@@ -429,19 +429,34 @@ func (a *API) CancelWayBill(cancelWayBillParam *CancelWayBillParam) (err error)
return err return err
} }
type QueryDynamicTraceInfoResult struct {
OpeTitle string `json:"opeTitle"`
OpeTime string `json:"opeTime"`
State string `json:"state"`
OpeRemark string `json:"opeRemark"`
OpeName string `json:"opeName"`
WaybillCode string `json:"waybillCode"`
}
//京东物流全程跟踪接口 //京东物流全程跟踪接口
//https://open.jd.com/home/home#/doc/api?apiCateId=64&apiId=4257&apiName=jingdong.trace.dynamicQueryService.queryDynamicTraceInfo //https://open.jd.com/home/home#/doc/api?apiCateId=64&apiId=4257&apiName=jingdong.trace.dynamicQueryService.queryDynamicTraceInfo
func (a *API) QueryDynamicTraceInfo(waybillCode string) (err error) { func (a *API) QueryDynamicTraceInfo(waybillCode string) (queryDynamicTraceInfo []*QueryDynamicTraceInfoResult, err error) {
_, err = a.AccessAPI("jingdong.trace.dynamicQueryService.queryDynamicTraceInfo", prodURL, map[string]interface{}{ result, err := a.AccessAPI("jingdong.trace.dynamicQueryService.queryDynamicTraceInfo", prodURL, map[string]interface{}{
"waybillCode": waybillCode, "waybillCode": waybillCode,
"customerCode": CustomerCode,
}) })
return err if err == nil {
utils.Map2StructByJson(result["jingdong_trace_dynamicQueryService_queryDynamicTraceInfo_responce"].(map[string]interface{})["response"].(map[string]interface{})["data"], &queryDynamicTraceInfo, false)
}
return queryDynamicTraceInfo, err
} }
type WaybillQueryResult struct { type WaybillQueryResult struct {
Weight float64 `json:"weight"` Weight float64 `json:"weight"`
DeliveryID string `json:"deliveryId"` DeliveryID string `json:"deliveryId"`
GoodNumber int `json:"goodNumber"` GoodNumber int `json:"goodNumber"`
StatusCode int `json:"statusCode"`
StatusMessage string `json:"statusMessage"`
} }
//京东物流运单查询 //京东物流运单查询
@@ -454,5 +469,8 @@ func (a *API) WaybillQuery(deliveryId string) (waybill *WaybillQueryResult, err
if err == nil { if err == nil {
utils.Map2StructByJson(result["jingdong_ldop_waybill_query_responce"].(map[string]interface{})["resultInfo"].(map[string]interface{})["data"], &waybill, false) utils.Map2StructByJson(result["jingdong_ldop_waybill_query_responce"].(map[string]interface{})["resultInfo"].(map[string]interface{})["data"], &waybill, false)
} }
if waybill == nil {
utils.Map2StructByJson(result["jingdong_ldop_waybill_query_responce"].(map[string]interface{})["resultInfo"], &waybill, false)
}
return waybill, err return waybill, err
} }

View File

@@ -94,10 +94,10 @@ func TestWaybillReceive(t *testing.T) {
SalePlat: SalePlatSourceDelivery, SalePlat: SalePlatSourceDelivery,
CustomerCode: CustomerCode, CustomerCode: CustomerCode,
OrderID: "883289609977992", OrderID: "883289609977992",
SenderName: "金牛店", SenderName: "测试别派件",
SenderAddress: "四川省成都市金牛区加州湾v派", SenderAddress: "四川省成都市金牛区加州湾v派",
SenderTel: "18160030913", SenderTel: "18160030913",
ReceiveName: "明珠怡园", ReceiveName: "后面会取消",
ReceiveAddress: "四川省成都市天府大道", ReceiveAddress: "四川省成都市天府大道",
ReceiveTel: "18160030913", ReceiveTel: "18160030913",
PackageCount: 1, PackageCount: 1,
@@ -114,7 +114,7 @@ func TestWaybillReceive(t *testing.T) {
func TestCancelWayBill(t *testing.T) { func TestCancelWayBill(t *testing.T) {
err := api.CancelWayBill(&CancelWayBillParam{ err := api.CancelWayBill(&CancelWayBillParam{
WaybillCode: "JDVD00717018403", WaybillCode: "JDVD01096487452",
CustomerCode: CustomerCode, CustomerCode: CustomerCode,
Source: "JOS", Source: "JOS",
CancelReason: "测试", CancelReason: "测试",
@@ -126,8 +126,16 @@ func TestCancelWayBill(t *testing.T) {
// t.Log(utils.Format4Output(result, false)) // t.Log(utils.Format4Output(result, false))
} }
func TestWaybillQuery(t *testing.T) { func TestQueryDynamicTraceInfo(t *testing.T) {
result, err := api.WaybillQuery("JDVD01093075824") result, err := api.QueryDynamicTraceInfo("JDVD01096487452")
if err != nil {
t.Fatal(err)
}
t.Log(utils.Format4Output(result, false))
}
func TestWaybillQuery(t *testing.T) {
result, err := api.WaybillQuery("JDVD01096487452")
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }