You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
1.9 KiB

package aliyun
import (
"encoding/json"
"errors"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
)
var Sms = sms{}
type sms struct {
client *sdk.Client
}
const ()
/*
发送验证短信
*/
const (
regionId = "cn-hangzhou"
accessKey = "LTAI4Fe9j26vbarEGVZ7Nany"
accessKeySecret = "ysEYgqgpKtPbEJmHwdZ5psKsT15nel"
SUCCESS = "SMS_243631426"
FAIL = "SMS_243616481"
)
func init() {
c, err := sdk.NewClientWithAccessKey(regionId, accessKey, accessKeySecret)
if err != nil {
panic(err)
}
Sms.client = c
}
type AliResp struct {
Message string
RequestId string
BizId string
Code string
}
// SendMessage @Title 短信发送
func (s *sms) SendMessage(mobile, loginTemplateCode string, data map[string]string) error {
marshal, _ := json.Marshal(&data)
request := returnRequest(mobile, string(marshal), loginTemplateCode)
response, err := s.client.ProcessCommonRequest(request)
if err != nil {
return errors.New(err.Error())
}
if response.IsSuccess() {
var p AliResp
if err := json.Unmarshal(response.GetHttpContentBytes(), &p); err != nil {
return errors.New(err.Error())
}
if p.Message != "OK" {
return errors.New("短信发送失败: " + p.Message)
}
return nil
} else {
return errors.New("短信发送失败")
}
}
func returnRequest(mobile string, data string, templateCode string) *requests.CommonRequest {
request := requests.NewCommonRequest()
request.Method = "POST"
request.Scheme = "https"
request.Domain = "dysmsapi.aliyuncs.com"
request.Version = "2017-05-25"
request.ApiName = "SendSms"
request.QueryParams["RegionId"] = regionId
request.QueryParams["SignName"] = "瑞库客"
request.QueryParams["TemplateCode"] = templateCode
request.QueryParams["TemplateParam"] = data
request.QueryParams["PhoneNumbers"] = mobile
return request
}