Go --- 使用各服务商的短信服务,实现短信验证等需求(二)

本文涉及的产品
数字短信套餐包(仅限零售电商行业),100条 12个月
短信服务,100条 3个月
国际/港澳台短信套餐包,全球plus 100条 6个月
简介: Go --- 使用各服务商的短信服务,实现短信验证等需求

互亿无线

互亿无线首页

调用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

  1. 申请签名

  2. 等待签名通过后,去注册模板

在这里添加测试用的手机号

阿里云 短信服务 API概览

如何通过阿里云短信服务来发送验证码短信(超详细)_chencheng_cs的博客

相关文章
|
2月前
|
数据采集 网络协议 测试技术
使用Go Validator在Go应用中有效验证数据
使用Go Validator在Go应用中有效验证数据
|
2月前
|
人工智能 Go
go validator 值为 0 required 验证
go validator 值为 0 required 验证
42 6
|
2月前
|
数据采集 网络协议 测试技术
使用Go Validator在Go应用中有效验证数据
使用Go Validator在Go应用中有效验证数据
|
4月前
|
存储 前端开发 中间件
Go Web 开发 Demo【用户登录、注册、验证】(3)
Go Web 开发 Demo【用户登录、注册、验证】
|
4月前
|
前端开发 数据库连接 Go
Go Web 开发 Demo【用户登录、注册、验证】(1)
Go Web 开发 Demo【用户登录、注册、验证】
|
4月前
|
JSON 算法 Go
go语言后端开发学习(一)——JWT的介绍以及基于JWT实现登录验证
go语言后端开发学习(一)——JWT的介绍以及基于JWT实现登录验证
|
4月前
|
JSON 前端开发 Java
Go Web 开发 Demo【用户登录、注册、验证】(4)
Go Web 开发 Demo【用户登录、注册、验证】
|
4月前
|
Go 数据库
Go Web 开发 Demo【用户登录、注册、验证】(2)
Go Web 开发 Demo【用户登录、注册、验证】
|
5月前
|
JSON 开发工具 数据格式
App Inventor 2 接入阿里云短信服务,实现短信验证码功能
App Inventor 2 接入阿里云短信服务,实现短信验证码功能:发送短信验证码功能一般都是基于短信平台提供的sdk进行调用,这里是基于阿里云短信平台进行的开发。
202 1
|
5月前
|
Java Maven
(短信服务)java SpringBoot 阿里云短信功能实现发送手机验证码
(短信服务)java SpringBoot 阿里云短信功能实现发送手机验证码
1296 0