一、話(huà)不多說(shuō),先上精華
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: 替換為公司賬號(hào)
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() // 構(gòu)造一個(gè)公共請(qǐng)求
request.Method = "POST" // 設(shè)置請(qǐng)求方式
request.Product = "Ecs" // 指定產(chǎn)品
request.Scheme = "https" // https | http
request.Domain = "dysmsapi.aliyuncs.com" // 指定域名則不會(huì)尋址,如認(rèn)證方式為 Bearer Token 的服務(wù)則需要指定
request.Version = "2017-05-25" // 指定產(chǎn)品版本
request.ApiName = "SendSms" // 指定接口名
request.QueryParams["RegionId"] = "cn-hangzhou" // 地區(qū)
request.QueryParams["PhoneNumbers"] = phone //手機(jī)號(hào)
request.QueryParams["SignName"] = SignName //阿里云驗(yàn)證過(guò)的項(xiàng)目名 自己設(shè)置
request.QueryParams["TemplateCode"] = "SMS_175543553" //阿里云的短信模板號(hào) 自己設(shè)置
request.QueryParams["TemplateParam"] = "{\"code\":" + code + "}" //短信模板中的驗(yàn)證碼內(nèi)容 自己生成
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信息對(duì)應(yīng)的類(lèi)
//記得判斷錯(cuò)誤信息
_ := json.Unmarshal(response.GetHttpContentBytes(), &message)
if message.Message != "OK" {
錯(cuò)誤處理
return
}
return nil
}
//json數(shù)據(jù)解析
type Message struct {
Message string
RequestId string
BizId string
Code string
}
二怔蚌、參數(shù)解析
名稱(chēng) | 類(lèi)型 | 是否必選 | 示例值 | 描述 |
---|---|---|---|---|
PhoneNumbers | String | 是 | 15900000000 | 接收短信的手機(jī)號(hào)碼。 |
SignName | String | 是 | 阿里云 | 短信簽名名稱(chēng)旁赊。請(qǐng)?jiān)诳刂婆_(tái)簽名管理頁(yè)面簽名名稱(chēng)一列查看桦踊。 |
AccessKeyId | String | 否 | LTAIP00vvvvvvvvv | 主賬號(hào)AccessKey的ID。 |
Action | String | 否 | SendSms | 系統(tǒng)規(guī)定參數(shù)终畅。取值:SendSms籍胯。 |
OutId | String | 否 | abcdefgh | 外部流水?dāng)U展字段。 |
SmsUpExtendCode | String | 否 | 90999 | 上行短信擴(kuò)展碼离福,無(wú)特殊需要此字段的用戶(hù)請(qǐng)忽略此字段杖狼。 |
TemplateParam | String | 否 | {"code":"1111"} | 短信模板變量對(duì)應(yīng)的實(shí)際值,JSON格式妖爷。 |
手機(jī)號(hào)碼格式:
國(guó)內(nèi)短信:11位手機(jī)號(hào)碼蝶涩,例如15951955195。
國(guó)際/港澳臺(tái)消息:國(guó)際區(qū)號(hào)+號(hào)碼赠涮,例如85200000000子寓。
支持對(duì)多個(gè)手機(jī)號(hào)碼發(fā)送短信暗挑,手機(jī)號(hào)碼之間以英文逗號(hào)(,)分隔笋除。上限為1000個(gè)手機(jī)號(hào)碼。批量調(diào)用相對(duì)于單條調(diào)用及時(shí)性稍有延遲炸裆。
說(shuō)明 驗(yàn)證碼類(lèi)型短信垃它,建議使用單獨(dú)發(fā)送的方式。
短信簽名名稱(chēng)說(shuō)明 必須是已添加、并通過(guò)審核的短信簽名国拇。
TemplateCode String 是 SMS_153055065
短信模板ID洛史。請(qǐng)?jiān)诳刂婆_(tái)模板管理頁(yè)面模板CODE一列查看。
說(shuō)明 必須是已添加酱吝、并通過(guò)審核的短信簽名也殖;且發(fā)送國(guó)際/港澳臺(tái)消息時(shí),請(qǐng)使用國(guó)際/港澳臺(tái)短信模版务热。
|短信模板變量對(duì)應(yīng)的實(shí)際值說(shuō)明 如果JSON中需要帶換行符忆嗜,請(qǐng)參照標(biāo)準(zhǔn)的JSON協(xié)議處理。
三崎岂、獲取參數(shù)
1. SignName
獲取SignName
2. REGION_ID
image.png
3. ACCESS_KEY_ID
- 登錄阿里云管理控制臺(tái)捆毫。
-
查看accessKey
3.獲取ACCESS_KEY_ID&&ACCESS_KEY_SECRET