劲创营---任务项目
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

87 行
2.9 KiB

  1. package kd100
  2. import (
  3. "applet/app/comm/utils"
  4. "encoding/json"
  5. "strings"
  6. "time"
  7. )
  8. // 快递100电子面单对接
  9. type kd100EOrder struct {
  10. Method string // 接口方法名
  11. Key string // 客户授权key
  12. Secret string // 授权secret
  13. Sign string // 签名
  14. Timestamp string // 时间戳
  15. PrintData PrintData // 打印内容
  16. ReturnData ReturnDataResp // 返回数据
  17. }
  18. type PrintData struct {
  19. Type string `json:"type"` //业务类型,默认为10
  20. PartnerID string `json:"partnerId"` // 电子面单客户账户或月结账号
  21. PartnerKey string `json:"partnerKey"` //电子面单密码
  22. Net string `json:"net"` //收件网点名称 非必填
  23. KdCompany string `json:"kuaidicom"` // 快递公司编码,一律用小写字母
  24. RecMan struct {
  25. Name string `json:"name"`
  26. Mobile string `json:"mobile"`
  27. PrintAddr string `json:"printAddr"`
  28. Company string `json:"company"`
  29. } `json:"recMan"` // 收件信息
  30. SendMan struct {
  31. Name string `json:"name"` // 姓名
  32. Mobile string `json:"mobile"` // 手机号
  33. PrintAddr string `json:"printAddr"` // 完整地址
  34. Company string `json:"company"` // 公司, 非必填
  35. } `json:"sendMan"` // 寄件人信息
  36. Cargo string `json:"cargo"` // 物品名称,例:文件,非必填
  37. Count string `json:"count"` // 物品总数
  38. Weight string `json:"weight"` // 物品总重量KG,例:1.5,单位kg 极兔速递必填,其他快递公司非必填
  39. PayType string `json:"payType"` // 支付方式: SHIPPER:寄方付(默认) 非必填
  40. ExpType string `json:"expType"` // 产品类型 非必填
  41. Remark string `json:"remark"` // 备注,非必填
  42. Tempid string `json:"tempid"` // 模板id
  43. Siid string `json:"siid"` // 打印机设备号,从配置获取
  44. CallbackURL string `json:"callback_url,omitempty"` // 回调地址
  45. }
  46. const eOrderUrl = "https://poll.kuaidi100.com/printapi/printtask.do"
  47. func NewKd100EOrder(key, secret string, printData PrintData) *kd100EOrder {
  48. nowStr := utils.AnyToString(time.Now().Unix())
  49. return &kd100EOrder{
  50. Method: "eOrder",
  51. Key: key,
  52. Secret: secret,
  53. Timestamp: nowStr,
  54. PrintData: printData,
  55. }
  56. }
  57. func (kd *kd100EOrder) CreateSign() *kd100EOrder {
  58. kd.Sign = strings.ToUpper(utils.Md5(utils.SerializeStr(kd.PrintData) + kd.Timestamp + kd.Key + kd.Secret))
  59. return kd
  60. }
  61. func (kd *kd100EOrder) Send() error {
  62. reqBody := map[string]string{
  63. "method": kd.Method,
  64. "key": kd.Key,
  65. "sign": kd.Sign,
  66. "t": kd.Timestamp,
  67. "param": utils.SerializeStr(kd.PrintData),
  68. }
  69. resp, err := utils.CurlPost(eOrderUrl, reqBody, nil)
  70. if err != nil {
  71. return err
  72. }
  73. err = json.Unmarshal(resp, &kd.ReturnData)
  74. if err != nil {
  75. return err
  76. }
  77. return nil
  78. }