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 float64 `json:"price"` //商品价格 格式:21.30 } //PlaceOrderReq 下单 type PlaceOrderReq struct { OrderSn string //订单单号 SkuNums []*SkuNums Consignee string //收货人姓名,最多20个字符 Phone string //手机号,最多20个字符 Address *PlaceOrderAddress PriceSnap []*PriceSnap InvoiceType InvoiceType } //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": req.InvoiceType, "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 }