一、话不多说,先上精华
package tools
import (
"errors"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
"github.com/go-kratos/kratos/pkg/log"
)
// todo: 替换为公司账号
const (
SignName = "--------------------------"
REGION_ID = "cn-shenzhen"
ACCESS_KEY_ID = "------------------------------------"
ACCESS_KEY_SECRET = "------------------------------"
)
func SendSms(phone string, code string) (err error) {
client, err := sdk.NewClientWithAccessKey(REGION_ID, ACCESS_KEY_ID, ACCESS_KEY_SECRET)
if err != nil {
log.Error("ali ecs client failed, err:%s", err.Error())
return
}
request := requests.NewCommonRequest() // 构造一个公共请求
request.Method = "POST" // 设置请求方式
request.Product = "Ecs" // 指定产品
request.Scheme = "https" // https | http
request.Domain = "dysmsapi.aliyuncs.com" // 指定域名则不会寻址,如认证方式为 Bearer Token 的服务则需要指定
request.Version = "2017-05-25" // 指定产品版本
request.ApiName = "SendSms" // 指定接口名
request.QueryParams["RegionId"] = "cn-hangzhou" // 地区
request.QueryParams["PhoneNumbers"] = phone //手机号
request.QueryParams["SignName"] = SignName //阿里云验证过的项目名 自己设置
request.QueryParams["TemplateCode"] = "SMS_175543553" //阿里云的短信模板号 自己设置
request.QueryParams["TemplateParam"] = "{\"code\":" + code + "}" //短信模板中的验证码内容 自己生成
response, err := client.ProcessCommonRequest(request)
if err != nil {
log.Error("ali ecs client failed, err:%s", err.Error())
return
}
log.Info(response.String())
var message Message //阿里云返回的json信息对应的类
//记得判断错误信息
_ := json.Unmarshal(response.GetHttpContentBytes(), &message)
if message.Message != "OK" {
错误处理
return
}
return nil
}
//json数据解析
type Message struct {
Message string
RequestId string
BizId string
Code string
}
二、参数解析
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
PhoneNumbers | String | 是 | 15900000000 | 接收短信的手机号码。 |
SignName | String | 是 | 阿里云 | 短信签名名称。请在控制台签名管理页面签名名称一列查看。 |
AccessKeyId | String | 否 | LTAIP00vvvvvvvvv | 主账号AccessKey的ID。 |
Action | String | 否 | SendSms | 系统规定参数。取值:SendSms。 |
OutId | String | 否 | abcdefgh | 外部流水扩展字段。 |
SmsUpExtendCode | String | 否 | 90999 | 上行短信扩展码,无特殊需要此字段的用户请忽略此字段。 |
TemplateParam | String | 否 | {"code":"1111"} | 短信模板变量对应的实际值,JSON格式。 |
手机号码格式:
国内短信:11位手机号码,例如15951955195。
国际/港澳台消息:国际区号+号码,例如85200000000。
支持对多个手机号码发送短信,手机号码之间以英文逗号(,)分隔。上限为1000个手机号码。批量调用相对于单条调用及时性稍有延迟。
说明 验证码类型短信,建议使用单独发送的方式。
短信签名名称说明 必须是已添加、并通过审核的短信签名。
TemplateCode String 是 SMS_153055065
短信模板ID。请在控制台模板管理页面模板CODE一列查看。
说明 必须是已添加、并通过审核的短信签名;且发送国际/港澳台消息时,请使用国际/港澳台短信模版。
|短信模板变量对应的实际值说明 如果JSON中需要带换行符,请参照标准的JSON协议处理。
三、获取参数
1. SignName

2. REGION_ID

3. ACCESS_KEY_ID
- 登录阿里云管理控制台。
-
查看accessKey
3.获取ACCESS_KEY_ID&&ACCESS_KEY_SECRET
网友评论