go对接快递

  • 韵达签名
  func YunDaSign(structData interface{}) ([]byte, string, string) {
      jsonData, _ := json.Marshal(structData)
      appKey := "你的key"
      appSecret := "你的秘钥"
      newStr := string(jsonData) + "_" + appSecret
      md := md5.New()
      md.Write([]byte(newStr))
      md5Str := hex.EncodeToString(md.Sum(nil))
      return jsonData, appKey, md5Str
  }
  • 京东签名
  func JdSigin(body string, path string) (string, string, string, string, string) {
      appKey := "你的key"
      appSecret := "你的秘钥"
      accessToken := "你的token"
      timestamp := Util.GetDate()
      algorithm := "md5-salt"
      content := strings.Join([]string{
          appSecret,
          "access_token", accessToken,
          "app_key", appKey,
          "method", path,
          "param_json", body,
          "timestamp", timestamp,
          "v", "2.0",
          appSecret,
      }, "")

      sign, err := Sign(algorithm, []byte(content), appSecret)
      if err != nil {
          panic(err)
      }
      return sign, appKey, accessToken, timestamp, algorithm
  }

  func Sign(algorithm string, data []byte, secret string) (string, error) {
      if algorithm == "md5-salt" {
          h := md5.New()
          if _, err := h.Write(data); err != nil {
              return "", err
          }
          return fmt.Sprintf("%x", h.Sum(nil)), nil
      } else if algorithm == "HMacMD5" {
          h := hmac.New(md5.New, []byte(secret))
          if _, err := h.Write(data); err != nil {
              return "", err
          }
          return base64.StdEncoding.EncodeToString(h.Sum(nil)), nil
      } else if algorithm == "HMacSHA1" {
          h := hmac.New(sha1.New, []byte(secret))
          if _, err := h.Write(data); err != nil {
              return "", err
          }
          return base64.StdEncoding.EncodeToString(h.Sum(nil)), nil
      } else if algorithm == "HMacSHA256" {
          h := hmac.New(sha256.New, []byte(secret))
          if _, err := h.Write(data); err != nil {
              return "", err
          }
          return base64.StdEncoding.EncodeToString(h.Sum(nil)), nil
      } else if algorithm == "HMacSHA512" {
          h := hmac.New(sha512.New, []byte(secret))
          if _, err := h.Write(data); err != nil {
              return "", err
          }
          return base64.StdEncoding.EncodeToString(h.Sum(nil)), nil
      }
      return "", fmt.Errorf("algorithm %s not supported yet", algorithm)
  }