1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
package jingdong
import (
"context"
"github.com/gogf/gf/encoding/gjson"
"github.com/gogf/gf/frame/g"
)
type orderJD struct {
}
//Order 订单
var Order = orderJD{}
//GetDeliveryRes 物流轨迹
type GetDeliveryRes struct {
*CommonRes
Result struct {
OrderTrack []struct {
Content string `json:"content"` //操作内容明细
MsgTime string `json:"msgTime"` //操作时间。日期格式为“yyyy-MM-dd hh:mm:ss”
Operator string `json:"operator"` //操作员名称
} `json:"orderTrack"`
WaybillCode []struct {
OrderID string `json:"orderId"` //订单号
ParentID string `json:"parentId"` //父订单号。 此字段为0 未拆单
Carrier string `json:"carrier"` //承运商
DeliveryOrderID string `json:"deliveryOrderId"` //运单号
} `json:"waybillCode"`
JdOrderID int `json:"jdOrderId"`
} `json:"result"`
}
//PriceSnap 商品价格
type PriceSnap struct {
SkuID int `json:"skuId"` //商品编号
Price int `json:"price"` //商品价格 格式:21.30
}
//PlaceOrderReq 下单
type PlaceOrderReq struct {
OrderSn string //订单单号
SkuNums []*SkuNums
Consignee string //收货人姓名,最多20个字符
Phone string //手机号,最多20个字符
Address *PlaceOrderAddress
PriceSnap []*PriceSnap
}
//PlaceOrderAddress 下单地址
type PlaceOrderAddress struct {
Province string //一级地址编码
City string //二级地址编码
County string //三级地址编码
Town string //四级地址编码
Desc string //收货人详细地址,最多100个字符
}
//PlaceOrderRes 下单
type PlaceOrderRes struct {
*CommonRes
Result struct {
JdOrderID int64 `json:"jdOrderId"` //京东订单号
OrderPrice float64 `json:"orderPrice"` //订单总金额
OrderNakedPrice float64 `json:"orderNakedPrice"` //订单未税金额
OrderTaxPrice float64 `json:"orderTaxPrice"` //订单税额
Sku []*OrderSkuItem `json:"sku"`
} `json:"result"`
}
//OrderSkuItem 订单商品
type OrderSkuItem struct {
SkuID int `json:"skuId"` //商品编号
Num int `json:"num"` //商品数量
Price float64 `json:"price"` //商品单价
Name string `json:"name"` //商品名称
NakedPrice float64 `json:"nakedPrice"` //商品未税价
}
//ReflectOrderRes 反查订单
type ReflectOrderRes struct {
*CommonRes
Result string `json:"result"` //第三方订单号(非京东订单号)
}
//GetOrderRes 订单详情
type GetOrderRes struct {
*CommonRes
Result struct {
JdOrderID int64 `json:"jdOrderId"` //京东订单编号
Type int `json:"type"` //订单类型。1是父订单 2是子订单
Freight float64 `json:"freight"` //运费
OrderPrice float64 `json:"orderPrice"` //订单总金额
OrderNakedPrice float64 `json:"orderNakedPrice"` //订单未含税金额
OrderTaxPrice float64 `json:"orderTaxPrice"` //订单税额
Sku []*OrderSkuItem `json:"sku"` //商品列表
OrderState int `json:"orderState"` //订单状态。0为取消订单 1为有效
State int `json:"state"` //物流状态。0 是新建 1是妥投 2是拒收
POrder struct {
JdOrderID int64 `json:"jdOrderId"` //京东订单编号
Freight float64 `json:"freight"` //运费
OrderPrice float64 `json:"orderPrice"` //订单总金额
OrderNakedPrice float64 `json:"orderNakedPrice"` //订单未含税金额
Sku []*OrderSkuItem `json:"sku"` //商品列表
} `json:"pOrder"`
COrder []struct {
POrder string `json:"pOrder"` //父订单号。为0时,此订单为父单。
JdOrderID int `json:"jdOrderId"` //京东订单编号
Freight float64 `json:"freight"` //运费
OrderPrice float64 `json:"orderPrice"` //订单总金额
OrderNakedPrice float64 `json:"orderNakedPrice"` //订单未含税金额
Sku []OrderSkuItem `json:"sku"` //商品列表
} `json:"cOrder"`
} `json:"result"`
}
//GetFreightRes 运费
type GetFreightRes struct {
*CommonRes
Result struct {
Freight float64 `json:"freight"` //总运费
BaseFreight float64 `json:"baseFreight"` //基础运费
RemoteRegionFreight float64 `json:"remoteRegionFreight"` //偏远地区加收运费
} `json:"result"`
}
//SkuNums 商品数量
type SkuNums struct {
SkuID int `json:"skuId"` //商品编号
Num int `json:"num"` //商品数量
}
// GetDelivery 物流信息
func (*orderJD) GetDelivery(ctx context.Context, OrderID string) (res *GetDeliveryRes, err error) {
method := "order/orderTrack"
param := g.Map{
"jdOrderId": OrderID,
"waybillCode": "1",
}
result, err := server.requestApi(ctx, method, param)
if err != nil {
return
}
err = gjson.New(result).Scan(&res)
return
}
// PlaceOrder 下单
func (orderJD) PlaceOrder(ctx context.Context, req *PlaceOrderReq) (res *PlaceOrderRes, err error) {
method := "order/submitOrder"
var param = g.Map{
"thirdOrder": req.OrderSn,
"sku": gjson.New(req.SkuNums).MustToJsonString(),
"orderPriceSnap": gjson.New(req.PriceSnap).MustToJsonString(),
"name": req.Consignee,
"mobile": req.Phone,
"province": req.Address.Province,
"city": req.Address.City,
"county": req.Address.County,
"town": req.Address.Town,
"address": req.Address.Desc,
"email": server.Email,
"companyName": server.CompanyName,
"submitState": server.SubmitState,
"invoicePhone": server.Mobile,
"invoiceState": "2",
"invoiceType": "4",
"selectedInvoiceTitle": "5",
"invoiceContent": "1",
"paymentType": "4",
"isUseBalance": "1",
"doOrderPriceMode": "1",
}
result, err := server.requestApi(ctx, method, param)
if err != nil {
return
}
err = gjson.New(result).Scan(&res)
return
}
// ReflectOrder 反查订单
func (orderJD) ReflectOrder(ctx context.Context, thirdOrder string) (res *ReflectOrderRes, err error) {
method := "order/selectJdOrderIdByThirdOrder"
param := g.Map{
"thirdOrder": thirdOrder,
}
result, err := server.requestApi(ctx, method, param)
if err != nil {
return
}
err = gjson.New(result).Scan(&res)
return
}
// GetOrderInfo 订单详情
func (orderJD) GetOrderInfo(ctx context.Context, OrderID string) (res *GetOrderRes, err error) {
method := "order/selectJdOrder"
param := g.Map{
"jdOrderId": OrderID,
}
result, err := server.requestApi(ctx, method, param)
if err != nil {
return
}
_ = gjson.New(result).Scan(&res)
return
}
// GetFreight 查询运费
func (orderJD) GetFreight(ctx context.Context, sku []*SkuNums, province, city, county, town string) (res *GetFreightRes, err error) {
method := "order/getFreight"
param := g.Map{
"sku": gjson.New(sku).MustToJsonString(),
"province": province,
"city": city,
"county": county,
"town": town,
"paymentType": "4",
}
result, err := server.requestApi(ctx, method, param)
if err != nil {
return
}
err = gjson.New(result).Scan(&res)
return
}
// ConfirmReceived 确认收货
func (orderJD) ConfirmReceived(ctx context.Context, OrderID string) (res *CommonRes, err error) {
method := "order/confirmReceived"
param := g.Map{
"jdOrderId": OrderID,
}
result, err := server.requestApi(ctx, method, param)
if err != nil {
return
}
err = gjson.New(result).Scan(&res)
return
}