diff --git a/docs/superpowers/specs/2026-05-22-sms-register-design.md b/docs/superpowers/specs/2026-05-22-sms-register-design.md index c29d348..d1cee7e 100644 --- a/docs/superpowers/specs/2026-05-22-sms-register-design.md +++ b/docs/superpowers/specs/2026-05-22-sms-register-design.md @@ -155,8 +155,12 @@ register.vue setNickname.vue | 项目 | 选择 | |------|------| -| 短信 SDK | `github.com/aliyundysms/dysmsapi-go-sdk`(阿里官方 Go SDK,需确认最新包名) | -| 认证方式 | AccessKeyID/Secret(短信服务使用直接 AccessKey,非 OSS 的 STS 方式) | +| 短信 SDK | `github.com/alibabacloud-go/dysmsapi-20180501/v2`(阿里官方 V2 Go SDK) | +| 环境要求 | Go 1.10.x 或更高 | +| 安装方式 | `go get github.com/alibabacloud-go/dysmsapi-20180501/v2` | +| 依赖包 | 还需 `github.com/alibabacloud-go/darabonba-openapi/v2/client` | +| 认证方式 | 阿里云默认凭据链(AccessKey 等)自动查找 | +| API Endpoint | `dysmsapi.aliyuncs.com` | | 验证码存储 | Redis(已部署,过期自动失效) | | 推荐方案 | **方案一**(userService) | @@ -399,11 +403,77 @@ SMS_REGION=cn-hangzhou - 签名名称(SignName) - 模板 CODE(TemplateCode) -### 12.5 相关文档 +### 12.5 Go SDK 使用说明 + +#### 依赖安装 + +```bash +go get github.com/alibabacloud-go/dysmsapi-20180501/v2 +go get github.com/alibabacloud-go/darabonba-openapi/v2/client +go get github.com/aliyun/credentials-go/credentials +go get github.com/alibabacloud-go/tea/tea +go get github.com/alibabacloud-go/tea-utils/v2/service +``` + +#### 初始化客户端 + +```go +import ( + dysmsapi20180501 "github.com/alibabacloud-go/dysmsapi-20180501/v2/client" + openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" + credential "github.com/aliyun/credentials-go/credentials" +) + +// 使用默认凭据链初始化 +cred, _ := credential.NewCredential(nil) +config := &openapi.Config{ + Credential: cred, + Endpoint: tea.String("dysmsapi.aliyuncs.com"), +} +client, _ := dysmsapi20180501.NewClient(config) +``` + +#### 发送短信(注册验证码场景) + +```go +// 构造请求 +request := &dysmsapi20180501.SendSmsRequest{ + PhoneNumbers: tea.String("13800138000"), // 手机号 + SignName: tea.String("TopFans"), // 签名 + TemplateCode: tea.String("SMS_xxxxxxx"), // 模板CODE + TemplateParam: tea.String(`{"code":"123456"}`), // 模板变量 +} + +// 发送 +resp, err := client.SendSmsWithOptions(request, &util.RuntimeOptions{}) +if err != nil { + // 错误处理 + return err +} + +// 成功返回 +fmt.Println(resp.Body.RequestId) // 请求ID +fmt.Println(resp.Body.Code) // 状态码 +fmt.Println(resp.Body.Message) // 状态消息 +``` + +#### 返回码说明 + +| Code | Message | 说明 | +|------|---------|------| +| OK | 请求成功 | 短信发送成功 | +| isv.BUSINESS_LIMIT_CONTROL | 触发频率限制 | 发送过于频繁 | +| isv.DAY_LIMIT_CONTROL | 触发日限额 | 当天发送量已达上限 | +| isv.SMS_CONTENT_ILLEGAL | 内容违规 | 短信内容包含敏感词 | +| isv.MOBILE_NUMBER_ILLEGAL | 手机号格式错误 | 手机号不符合规范 | + +### 12.6 相关文档 - [阿里云短信服务帮助文档](https://help.aliyun.com/zh/sms) -- [短信 API 调用指南](https://help.aliyun.com/zh/sms/developer-reference/sendSms) -- [Go SDK 文档](https://help.aliyun.com/zh/sms/developer-reference/aliyun-java-sdk-sms) +- [快速入门(Go SDK)](https://help.aliyun.com/zh/sms/getting-started/get-started-with-sms) +- [SDK 示例](https://help.aliyun.com/zh/sms/sdk-demo/go) +- [SendSms API 文档](https://help.aliyun.com/zh/sms/developer-reference/sendsms) +- [Go SDK 源码仓库](https://github.com/alibabacloud-go/dysmsapi-20180501/) ---