|
- 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
- }
|