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.
82 lines
2.0 KiB
82 lines
2.0 KiB
1 month ago
|
package aliyun
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"fmt"
|
||
|
dysmsapi20170525 "github.com/alibabacloud-go/dysmsapi-20170525/v4/client"
|
||
|
util "github.com/alibabacloud-go/tea-utils/v2/service"
|
||
|
"github.com/alibabacloud-go/tea/tea"
|
||
|
"math/rand"
|
||
|
"strings"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
func SendSmsLogin(mobile string) (string, error) {
|
||
|
captcha := generateCaptcha()
|
||
|
err := send(mobile, "逸采", "SMS_478575808", fmt.Sprintf(`{"code":"%s"}`, captcha))
|
||
|
if err != nil {
|
||
|
return "", err
|
||
|
}
|
||
|
return captcha, nil
|
||
|
}
|
||
|
|
||
|
func generateCaptcha() string {
|
||
|
rand.Seed(time.Now().UnixNano())
|
||
|
captcha := rand.Intn(900000) + 100000
|
||
|
return fmt.Sprintf("%d", captcha)
|
||
|
}
|
||
|
|
||
|
func send(mobile, signName, templateCode, TemplateParam string) error {
|
||
|
client, _err := CreateClient(tea.String("LTAI5tBqQqufN9SctTUGLYMn"), tea.String("Kj1t2pMEjo8Cgj4D0CwqLS6CDPgczV"))
|
||
|
if _err != nil {
|
||
|
return _err
|
||
|
}
|
||
|
|
||
|
sendSmsRequest := &dysmsapi20170525.SendSmsRequest{
|
||
|
PhoneNumbers: tea.String(mobile),
|
||
|
SignName: tea.String(signName),
|
||
|
TemplateCode: tea.String(templateCode),
|
||
|
TemplateParam: tea.String(TemplateParam),
|
||
|
}
|
||
|
tryErr := func() (_e error) {
|
||
|
defer func() {
|
||
|
if r := tea.Recover(recover()); r != nil {
|
||
|
_e = r
|
||
|
}
|
||
|
}()
|
||
|
// 复制代码运行请自行打印 API 的返回值
|
||
|
msg, _err := client.SendSmsWithOptions(sendSmsRequest, &util.RuntimeOptions{})
|
||
|
fmt.Println(msg.String())
|
||
|
if _err != nil {
|
||
|
return _err
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}()
|
||
|
|
||
|
if tryErr != nil {
|
||
|
var error = &tea.SDKError{}
|
||
|
if _t, ok := tryErr.(*tea.SDKError); ok {
|
||
|
error = _t
|
||
|
} else {
|
||
|
error.Message = tea.String(tryErr.Error())
|
||
|
}
|
||
|
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
|
||
|
// 错误 message
|
||
|
fmt.Println(tea.StringValue(error.Message))
|
||
|
// 诊断地址
|
||
|
var data interface{}
|
||
|
d := json.NewDecoder(strings.NewReader(tea.StringValue(error.Data)))
|
||
|
d.Decode(&data)
|
||
|
if m, ok := data.(map[string]interface{}); ok {
|
||
|
recommend, _ := m["Recommend"]
|
||
|
fmt.Println(recommend)
|
||
|
}
|
||
|
_, _err = util.AssertAsString(error.Message)
|
||
|
if _err != nil {
|
||
|
return _err
|
||
|
}
|
||
|
}
|
||
|
return _err
|
||
|
}
|