package kd100 import ( "applet/app/comm/utils" "encoding/json" "strings" "time" ) // 快递100电子面单对接 type kd100EOrder struct { Method string // 接口方法名 Key string // 客户授权key Secret string // 授权secret Sign string // 签名 Timestamp string // 时间戳 PrintData PrintData // 打印内容 ReturnData ReturnDataResp // 返回数据 } type PrintData struct { Type string `json:"type"` //业务类型,默认为10 PartnerID string `json:"partnerId"` // 电子面单客户账户或月结账号 PartnerKey string `json:"partnerKey"` //电子面单密码 Net string `json:"net"` //收件网点名称 非必填 KdCompany string `json:"kuaidicom"` // 快递公司编码,一律用小写字母 RecMan struct { Name string `json:"name"` Mobile string `json:"mobile"` PrintAddr string `json:"printAddr"` Company string `json:"company"` } `json:"recMan"` // 收件信息 SendMan struct { Name string `json:"name"` // 姓名 Mobile string `json:"mobile"` // 手机号 PrintAddr string `json:"printAddr"` // 完整地址 Company string `json:"company"` // 公司, 非必填 } `json:"sendMan"` // 寄件人信息 Cargo string `json:"cargo"` // 物品名称,例:文件,非必填 Count string `json:"count"` // 物品总数 Weight string `json:"weight"` // 物品总重量KG,例:1.5,单位kg 极兔速递必填,其他快递公司非必填 PayType string `json:"payType"` // 支付方式: SHIPPER:寄方付(默认) 非必填 ExpType string `json:"expType"` // 产品类型 非必填 Remark string `json:"remark"` // 备注,非必填 Tempid string `json:"tempid"` // 模板id Siid string `json:"siid"` // 打印机设备号,从配置获取 CallbackURL string `json:"callback_url,omitempty"` // 回调地址 } const eOrderUrl = "https://poll.kuaidi100.com/printapi/printtask.do" func NewKd100EOrder(key, secret string, printData PrintData) *kd100EOrder { nowStr := utils.AnyToString(time.Now().Unix()) return &kd100EOrder{ Method: "eOrder", Key: key, Secret: secret, Timestamp: nowStr, PrintData: printData, } } func (kd *kd100EOrder) CreateSign() *kd100EOrder { kd.Sign = strings.ToUpper(utils.Md5(utils.SerializeStr(kd.PrintData) + kd.Timestamp + kd.Key + kd.Secret)) return kd } func (kd *kd100EOrder) Send() error { reqBody := map[string]string{ "method": kd.Method, "key": kd.Key, "sign": kd.Sign, "t": kd.Timestamp, "param": utils.SerializeStr(kd.PrintData), } resp, err := utils.CurlPost(eOrderUrl, reqBody, nil) if err != nil { return err } err = json.Unmarshal(resp, &kd.ReturnData) if err != nil { return err } return nil }