52 lines
1.0 KiB
Go
52 lines
1.0 KiB
Go
|
|
package smsx
|
||
|
|
|
||
|
|
import (
|
||
|
|
"errors"
|
||
|
|
"fmt"
|
||
|
|
|
||
|
|
"github.com/aliyun/alibaba-cloud-sdk-go/services/dysmsapi"
|
||
|
|
)
|
||
|
|
|
||
|
|
type sms struct {
|
||
|
|
endPoint string
|
||
|
|
accessKeyId string
|
||
|
|
accessKeySecret string
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewSms(endPoint string, accessKeyId string, accessKeySecret string) *sms {
|
||
|
|
return &sms{
|
||
|
|
endPoint: endPoint,
|
||
|
|
accessKeyId: accessKeyId,
|
||
|
|
accessKeySecret: accessKeySecret,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (s *sms) Send(phone, code, signName, templateCode string) error {
|
||
|
|
client, err := dysmsapi.NewClientWithAccessKey(s.endPoint, s.accessKeyId, s.accessKeySecret)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
req := dysmsapi.CreateSendSmsRequest()
|
||
|
|
req.Scheme = "https"
|
||
|
|
req.PhoneNumbers = phone
|
||
|
|
req.SignName = signName
|
||
|
|
req.TemplateCode = templateCode
|
||
|
|
req.TemplateParam = fmt.Sprintf(`{"code":"%s"}`, code)
|
||
|
|
resp, err := client.SendSms(req)
|
||
|
|
// fmt.Printf("sms send: resp:%+v err:%+v", resp, err)
|
||
|
|
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
if resp == nil {
|
||
|
|
return errors.New("没有获取到发送结果")
|
||
|
|
}
|
||
|
|
|
||
|
|
if resp.Code != "OK" {
|
||
|
|
return errors.New(resp.Message)
|
||
|
|
}
|
||
|
|
|
||
|
|
return nil
|
||
|
|
}
|