注册送短信

DEMO:ShortUrl/Get

示例代码


依赖

import (
    "crypto/md5"
    "encoding/hex"
    "encoding/json"
    "fmt"
    "io"
    "io/ioutil"
    "net/http"
    "sort"
    "strconv"
    "strings"
)

配置信息

const (
    API    = "https://service.mysubmail.com/shorturl"
    APPID  = "10***"
    APPKEY = "f8a5**********************778df"
)

非加密代码示例

    data := make(map[string]string)
    data["appid"] = APPID
    data["signature"] = APPKEY
    data["short_url"] = "https://suburl.cn/4eHaXL"
    var data_str string
    data_arr := make([]string, 0, 32)
    for k, v := range data {
        data_arr = append(data_arr, k+"="+v)
    }
    data_str = strings.Join(data_arr, "&")
    q, _ := http.Get(API + "?" + data_str)
    r, _ := ioutil.ReadAll(q.Body)
    m := make(map[string]interface{})
    json.Unmarshal(r, &m)
    fmt.Println(m)

加密代码示例

    data := make(map[string]string)
    data["appid"] = APPID
    data["signature"] = ""
    data["short_url"] = "https://suburl.cn/4eHaXL"
    data["sign_type"] = "md5"
    //获取服务器时间戳,该时间戳为 UNIX 时间戳,也可以自己生成
    q, _ := http.Get("https://api.mysubmail.com/service/timestamp")
    r, _ := ioutil.ReadAll(q.Body)
    t := make(map[string]float64)
    json.Unmarshal(r, &t)
    data["timestamp"] = strconv.FormatFloat(t["timestamp"], 'f', -1, 64)
    //签名加密
    sign := make(map[string]string)
    sign["appid"] = data["appid"]
    sign["timestamp"] = data["timestamp"]
    sign["sign_type"] = data["sign_type"]
    keys := make([]string, 0, 32)
    for key, _ := range sign {
        keys = append(keys, key)
    }
    sort.Strings(keys)
    sign_list := make([]string, 0, 32)
    for _, key := range keys {
        sign_list = append(sign_list, key+"="+sign[key])
    }
    sign_str := APPID + APPKEY + strings.Join(sign_list, "&") + APPID + APPKEY
    mymd5 := md5.New()
    io.WriteString(mymd5, sign_str)
    data["signature"] = hex.EncodeToString(mymd5.Sum(nil))

    var data_str string
    data_arr := make([]string, 0, 32)
    for k, v := range data {
        data_arr = append(data_arr, k+"="+v)
    }
    data_str = strings.Join(data_arr, "&")
    resonse, _ := http.Get(API + "?" + data_str)
    result, _ := ioutil.ReadAll(resonse.Body)
    m := make(map[string]interface{})
    json.Unmarshal(result, &m)
    fmt.Println(m)