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

kd100_cloud_print.go 2.1 KiB

3 周前
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package kd100
  2. import (
  3. "applet/app/comm/utils"
  4. "encoding/json"
  5. "strings"
  6. "time"
  7. )
  8. // 快递100云打印对接
  9. type kd100CloudPrint struct {
  10. Method string `json:"method"`
  11. Key string `json:"key"` //客户授权key
  12. Secret string `json:"secret"` //授权secret
  13. Sign string `json:"sign"` // 签名
  14. Timestamp string `json:"t"` // 时间戳
  15. PrintParam map[string]interface{} `json:"param"` // 其他参数
  16. ReturnData ReturnDataResp `json:"return_data"` // 返回数据
  17. }
  18. type ReturnDataResp struct {
  19. ReturnCode string `json:"returnCode"`
  20. Message string `json:"message"`
  21. Data interface{} `json:"data"`
  22. Result bool `json:"result"`
  23. }
  24. //type PrintParam struct {
  25. // OrderId string `json:"orderId"` // 订单ID,系统内唯一
  26. // TempId string `json:"tempid"` // 模板id
  27. // Height string `json:"height"` // 高
  28. // Width string `json:"width"` // 宽
  29. // Salt string `json:"salt"` // 加盐
  30. // CallBackUrl string `json:"callBackUrl"` // 回调地址
  31. // Siid string `json:"siid"` // kd100打印机设备号
  32. //}
  33. const printUrl = "https://poll.kuaidi100.com/printapi/printtask.do"
  34. func NewKd100Print(key, secret string, printParam map[string]interface{}) *kd100CloudPrint {
  35. nowStr := utils.AnyToString(time.Now().Unix())
  36. return &kd100CloudPrint{
  37. Method: "printOrder",
  38. Key: key,
  39. Secret: secret,
  40. Timestamp: nowStr,
  41. PrintParam: printParam,
  42. }
  43. }
  44. func (kd *kd100CloudPrint) CreateSign() *kd100CloudPrint {
  45. kd.Sign = strings.ToUpper(utils.Md5(utils.SerializeStr(kd.PrintParam) + kd.Timestamp + kd.Key + kd.Secret))
  46. return kd
  47. }
  48. func (kd *kd100CloudPrint) Send() error {
  49. reqBody := map[string]string{
  50. "method": kd.Method,
  51. "key": kd.Key,
  52. "sign": kd.Sign,
  53. "t": kd.Timestamp,
  54. "param": utils.SerializeStr(kd.PrintParam),
  55. }
  56. resp, err := utils.CurlPost(printUrl, reqBody, nil)
  57. if err != nil {
  58. return err
  59. }
  60. err = json.Unmarshal(resp, &kd.ReturnData)
  61. if err != nil {
  62. return err
  63. }
  64. return nil
  65. }