|
- package aliyun
-
- import (
- "encoding/json"
- "errors"
- "fmt"
- dypnsapi20170525 "github.com/alibabacloud-go/dypnsapi-20170525/v2/client"
- util "github.com/alibabacloud-go/tea-utils/v2/service"
- "github.com/alibabacloud-go/tea/tea"
- "strings"
- )
-
- /*
- *
- 发送短信
- https://help.aliyun.com/zh/pnvs/developer-reference/api-dypnsapi-2017-05-25-sendsmsverifycode?spm=a2c4g.11186623.0.0.4f51a5d7doAoA4
- templateParam= {"code":"##code##"} 可不填
- */
- func AliyunSendSms(accessKeyId, accessKeySecret, phone, signName, templateCode, templateParam string) error {
- client, _err := CreateClient(accessKeyId, accessKeySecret)
- if _err != nil {
- return _err
- }
- if templateParam == "" {
- templateParam = "{\"code\":\"##code##\"}"
- }
- sendSmsVerifyCodeRequest := &dypnsapi20170525.SendSmsVerifyCodeRequest{
- CodeLength: tea.Int64(4),
- Interval: tea.Int64(60),
- PhoneNumber: tea.String(phone),
- SignName: tea.String(signName),
- TemplateCode: tea.String(templateCode),
- TemplateParam: tea.String(templateParam),
- ValidTime: tea.Int64(300),
- }
- runtime := &util.RuntimeOptions{}
- tryErr := func() (_e error) {
- defer func() {
- if r := tea.Recover(recover()); r != nil {
- _e = r
- }
- }()
- // 复制代码运行请自行打印 API 的返回值
- _, _err = client.SendSmsVerifyCodeWithOptions(sendSmsVerifyCodeRequest, runtime)
- 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 errors.New("发送失败")
- }
- return _err
- }
-
- // 校验短信
- func AliyunCheckSms(accessKeyId, accessKeySecret, phone, verifyCode string) error {
- client, _err := CreateClient(accessKeyId, accessKeySecret)
- if _err != nil {
- return _err
- }
- checkSmsVerifyCodeRequest := &dypnsapi20170525.CheckSmsVerifyCodeRequest{
- PhoneNumber: tea.String(phone),
- VerifyCode: tea.String(verifyCode),
- }
- runtime := &util.RuntimeOptions{}
- tryErr := func() (_e error) {
- defer func() {
- if r := tea.Recover(recover()); r != nil {
- _e = r
- }
- }()
- // 复制代码运行请自行打印 API 的返回值
- _, _err = client.CheckSmsVerifyCodeWithOptions(checkSmsVerifyCodeRequest, runtime)
- 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 errors.New("验证失败")
- }
- return _err
- }
|