|
|
|
package service
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
|
|
"github.com/gogf/gf/v2/os/gctx"
|
|
|
|
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
|
|
|
|
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
|
|
|
|
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
|
|
|
|
sms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms/v20210111"
|
|
|
|
"log"
|
|
|
|
)
|
|
|
|
|
|
|
|
type ITencentSms interface {
|
|
|
|
ConfigInit()
|
|
|
|
Main(args []string) (_err error)
|
|
|
|
}
|
|
|
|
|
|
|
|
type tencentSmsServiceTmpl struct {
|
|
|
|
}
|
|
|
|
|
|
|
|
var tencentSmsService = tencentSmsServiceTmpl{}
|
|
|
|
|
|
|
|
func TencentSms() ITencentSms {
|
|
|
|
return &tencentSmsService
|
|
|
|
}
|
|
|
|
|
|
|
|
type TencentSmsData struct {
|
|
|
|
AccessKeyId string
|
|
|
|
AccessSecret string
|
|
|
|
AppId string
|
|
|
|
CodeSignName string
|
|
|
|
TemplateCode string
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
tencentSmsConfig TencentSmsData
|
|
|
|
)
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
tencentSmsService.ConfigInit()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (a *tencentSmsServiceTmpl) ConfigInit() {
|
|
|
|
//加载游戏相关配置
|
|
|
|
ctx := gctx.New()
|
|
|
|
|
|
|
|
tencentSmsConfig.AccessKeyId = g.Cfg().MustGet(ctx, "game.tencentSms.accessKeyId").String() // 替换为你的 SecretId
|
|
|
|
tencentSmsConfig.AccessSecret = g.Cfg().MustGet(ctx, "game.tencentSms.accessSecret").String() // 替换为你的 SecretKey
|
|
|
|
tencentSmsConfig.AppId = g.Cfg().MustGet(ctx, "game.tencentSms.appId").String() // 短信应用ID (SdkAppId)
|
|
|
|
tencentSmsConfig.CodeSignName = g.Cfg().MustGet(ctx, "game.tencentSms.codeSignName").String() // 已审核通过的短信签名内容
|
|
|
|
tencentSmsConfig.TemplateCode = g.Cfg().MustGet(ctx, "game.tencentSms.templateCode").String() // 已审核通过的模板ID
|
|
|
|
|
|
|
|
log.Println("tencentSms init", tencentSmsConfig)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (a *tencentSmsServiceTmpl) Main(args []string) (_err error) {
|
|
|
|
// 初始化认证对象
|
|
|
|
credential := common.NewCredential(tencentSmsConfig.AccessKeyId, tencentSmsConfig.AccessSecret)
|
|
|
|
|
|
|
|
// 初始化客户端配置
|
|
|
|
cpf := profile.NewClientProfile()
|
|
|
|
cpf.HttpProfile.Endpoint = "sms.tencentcloudapi.com" // 接口域名
|
|
|
|
|
|
|
|
// 创建 SMS 客户端
|
|
|
|
client, _ := sms.NewClient(credential, "ap-guangzhou", cpf) // 地域根据实际情况选择
|
|
|
|
|
|
|
|
// 构建请求
|
|
|
|
request := sms.NewSendSmsRequest()
|
|
|
|
request.SmsSdkAppId = common.StringPtr(tencentSmsConfig.AppId)
|
|
|
|
request.SignName = common.StringPtr(tencentSmsConfig.CodeSignName)
|
|
|
|
request.TemplateId = common.StringPtr(tencentSmsConfig.TemplateCode)
|
|
|
|
request.PhoneNumberSet = common.StringPtrs([]string{"+86" + args[0]})
|
|
|
|
|
|
|
|
// 模板参数(根据模板要求填写,若无参数则留空)
|
|
|
|
templateParams := []string{args[1], "10"} // 示例验证码
|
|
|
|
request.TemplateParamSet = common.StringPtrs(templateParams)
|
|
|
|
|
|
|
|
// 发送请求
|
|
|
|
response, err := client.SendSms(request)
|
|
|
|
|
|
|
|
// 错误处理
|
|
|
|
if _, ok := err.(*errors.TencentCloudSDKError); ok {
|
|
|
|
fmt.Printf("API error: %v\n", err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if err != nil {
|
|
|
|
fmt.Printf("Failed: %v\n", err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// 打印结果
|
|
|
|
fmt.Printf("Response: %s\n", response.ToJsonString())
|
|
|
|
return
|
|
|
|
}
|