互亿无线
调用API
package main import ( "crypto/md5" "encoding/hex" "fmt" "io/ioutil" "math/rand" "net/http" "net/url" "strconv" "strings" "time" ) func GetMd5String(s string) string { h := md5.New() h.Write([]byte(s)) return hex.EncodeToString(h.Sum(nil)) } // 互易无线 短信服务 func main() { v := url.Values{} _now := strconv.FormatInt(time.Now().Unix(), 10) //fmt.Printf(_now) _account := "C****"//查看用户名 登录用户中心->验证码通知短信>产品总览->API接口信息->APIID _password := "******************" //查看密码 登录用户中心->验证码通知短信>产品总览->API接口信息->APIKEY _mobile := "137XXXXXXX" _content := "您的验证码是:1111。请不要把验证码泄露给其他人。" v.Set("account", _account) v.Set("password", GetMd5String(_account+_password+_mobile+_content+_now)) v.Set("mobile", _mobile) v.Set("content", _content) v.Set("time", _now) body := strings.NewReader(v.Encode()) //把form数据编下码 client := &http.Client{} req, _ := http.NewRequest("POST", "http://106.ihuyi.com/webservice/sms.php?method=Submit&format=json", body) req.Header.Set("Content-Type", "application/x-www-form-urlencoded; param=value") //fmt.Printf("%+v\n", req) //看下发送的结构 resp, err := client.Do(req) //发送 defer resp.Body.Close() //一定要关闭resp.Body data, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(data), err) }
这个官方给我们的代码,当然我们可以简单优化一下,如添加随机验证码
// randCode 生成4位数随机验证码 func randCode() string { // 将时间设置为种子数,以便生成随机种子数 rand.Seed (time.Now ().UnixNano()) var s []byte var code = []byte{'1','2','3','4','5','6','7','8','9','0'} for i := 0; i < 4; i++ { s = append(s, code[rand.Intn(10)]) } return string(s) }
然后将 _content
改为如下
_content := "您的验证码是:"+ randCode() +"。请不要把验证码泄露给其他人。"
我们接下来介绍如何使用
其中 _account
_password
是官方提供的,你可以在登陆后在如图所示的地方找到。
然后 _mobile
是你要发送验证码的对象。
当完善这三个信息后,什么都不需要动了,让我们运行,看发生了什么。
首先是控制台输出:
接着是接收到验证码信息:
如此我们就可以浪费了一条短信服务
阿里云
因为博主暂无申请阿里云短信服务的权限,这里就只介绍到我可以走到的地方,我会在最后贴上阿里云的官方文档。
测试
先去充值,阿里云没有腾讯云和互亿无线送的那几条测试短信,不过也不贵,一块钱可以发送20条短信,一条短信大概价钱在4~5分
在快速学习这里点击调用API发送测试短信
可以进入测试(没有签名和模板也没问题,这里使用的是阿里云默认的测试签名和模板),点击右侧运行示例,等待控制台加载完成,回车。
如果失败就看看控制台的打印内容,他会告诉你结果的。
正式使用
因为博主暂无申请阿里云短信服务的权限,这里就只介绍到我可以走到的地方
注意:阿里云上使用需要有上线的业务或者是APP
- 申请签名
- 等待签名通过后,去注册模板
在这里添加测试用的手机号