7a2b7cb8ed
现有 sms.py(极光自管码)升级为 app/integrations/sms/ 包:
- base : SmsError + provider 无关的 mock_verify
- jiguang: 原极光自管码逻辑逐字迁入,行为零改动(git 识别为 sms.py 的 rename)
- aliyun : 新增阿里云 dypns 号码认证(Mode A:阿里云生成+下发+校验,核验免费)
- __init__: 按 SMS_PROVIDER 每次调用路由的分派器(默认 jiguang,可秒切回退)
关键决策:
- Mode A:发码 SendSmsVerifyCode(##code## 占位)、校验 CheckSmsVerifyCode(PASS/UNKNOWN);
本服务不再存码 → 消除极光路径「内存存码、多 worker 不共享」技术债。
- 防爆破与极光一致:aliyun 保留 per-phone 失败计数(SMS_MAX_VERIFY_ATTEMPTS),达上限本地作废,
避免两 provider 行为不同致排查困惑(此为 aliyun 路径唯一本地态)。
- 校验降级:阿里云接口异常 → verify_code 抛 SmsError(503),auth 两处 try/except 透出 503(非误报 400)。
- 官方 SDK alibabacloud_dypnsapi20170525;SDK 交互隔离在 _call_send/_call_check(惰性 import + 惰性建
client),单测 monkeypatch 不触真网络。
测试:test_sms_aliyun(17)+ test_sms_dispatch(3)全绿;test_auth 内部访问 retarget 到 jiguang.*。
配置:SMS_PROVIDER + ALIYUN_SMS_*(见 .env.example);文档 docs/integrations/sms.md + aliyun 接口参考。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
225 lines
3.5 KiB
Markdown
225 lines
3.5 KiB
Markdown
CheckSmsVerifyCode - 核验验证码
|
|
更新时间:2026年3月19日 20:02:53
|
|
核验短信验证码并返回核验是否成功的结果。
|
|
|
|
调试
|
|
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
|
|
|
|
调试
|
|
授权信息
|
|
下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:
|
|
|
|
操作:是指具体的权限点。
|
|
|
|
访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
|
|
|
|
资源类型:是指操作中支持授权的资源类型。具体说明如下:
|
|
|
|
对于必选的资源类型,用前面加 * 表示。
|
|
|
|
对于不支持资源级授权的操作,用全部资源表示。
|
|
|
|
条件关键字:是指云产品自身定义的条件关键字。
|
|
|
|
关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
|
|
|
|
放大查看
|
|
操作
|
|
|
|
访问级别
|
|
|
|
资源类型
|
|
|
|
条件关键字
|
|
|
|
关联操作
|
|
|
|
dypns:CheckSmsVerifyCode
|
|
|
|
none
|
|
|
|
*全部资源
|
|
|
|
*
|
|
|
|
无 无
|
|
请求参数
|
|
放大查看
|
|
名称
|
|
|
|
类型
|
|
|
|
必填
|
|
|
|
描述
|
|
|
|
示例值
|
|
|
|
SchemeName
|
|
string
|
|
|
|
否
|
|
|
|
方案名称,如果不填则为“默认方案”。最多不超过 20 个字符。
|
|
|
|
重要 如果发送接口的方案名称不为空,请确保该参数不为空且与发送接口的方案名称参数一致
|
|
测试方案
|
|
|
|
CountryCode
|
|
string
|
|
|
|
否
|
|
|
|
号码国家编码,默认为 86。
|
|
|
|
86
|
|
|
|
PhoneNumber
|
|
string
|
|
|
|
是
|
|
|
|
手机号。
|
|
|
|
186****0000
|
|
|
|
OutId
|
|
string
|
|
|
|
否
|
|
|
|
外部流水号。
|
|
|
|
12123231
|
|
|
|
VerifyCode
|
|
string
|
|
|
|
是
|
|
|
|
验证码。
|
|
|
|
说明
|
|
SendSmsVerifyCode 接口的字段 TemplateParam,配置方式有 2 种:
|
|
|
|
{"code":"##code##","min":"5"}
|
|
|
|
{"code":"123456","min":"5"}
|
|
|
|
{"code":"##code##","min":"5"}验证码是 api 动态生成的,阿里云接口可以完成校验。
|
|
|
|
{"code":"123456","min":"5"}验证码是用户配置的不是 api 动态生成,阿里云接口无法校验。
|
|
|
|
请您按照实际情况传入对应的验证码。
|
|
|
|
1231
|
|
|
|
CaseAuthPolicy
|
|
integer
|
|
|
|
否
|
|
|
|
验证码大小写字母核验策略。取值:
|
|
|
|
1:不区分大小写。
|
|
|
|
2:区分大小写。
|
|
|
|
1
|
|
|
|
返回参数
|
|
放大查看
|
|
名称
|
|
|
|
类型
|
|
|
|
描述
|
|
|
|
示例值
|
|
|
|
object
|
|
|
|
AccessDeniedDetail
|
|
string
|
|
|
|
访问被拒绝详细信息。
|
|
|
|
无
|
|
|
|
Message
|
|
string
|
|
|
|
状态码的描述。
|
|
|
|
成功
|
|
|
|
Model
|
|
object
|
|
|
|
请求结果数据。
|
|
|
|
OutId
|
|
string
|
|
|
|
外部流水号。
|
|
|
|
1212312
|
|
|
|
VerifyResult
|
|
string
|
|
|
|
短信验证码核验结果。取值:
|
|
|
|
PASS:短信验证码核验成功。
|
|
|
|
UNKNOWN:短信验证码核验失败。
|
|
|
|
PASS
|
|
|
|
Code
|
|
string
|
|
|
|
接口请求状态码。
|
|
|
|
返回 OK 代表请求成功。
|
|
|
|
其他错误码,请参见返回码。
|
|
|
|
重要 接口请求成功不代表短信验证码核验成功,短信验证码核验结果仅以Model.VerifyResult参数返回值为准。
|
|
OK
|
|
|
|
Success
|
|
boolean
|
|
|
|
接口调用是否成功。取值:
|
|
|
|
true:接口调用成功。
|
|
|
|
false:接口调用失败。
|
|
|
|
重要 接口调用成功不代表短信验证码核验成功,短信验证码核验结果仅以Model.VerifyResult参数返回值为准。
|
|
true
|
|
|
|
RequestId
|
|
string
|
|
|
|
CF8854E5-DB21-3E5D-A9B1-DDC752FD7384
|
|
|
|
示例
|
|
正常返回示例
|
|
|
|
JSON格式
|
|
|
|
放大查看复制代码
|
|
{
|
|
"AccessDeniedDetail": "无",
|
|
"Message": "成功",
|
|
"Model": {
|
|
"OutId": "1212312",
|
|
"VerifyResult": "PASS"
|
|
},
|
|
"Code": "OK",
|
|
"Success": true,
|
|
"RequestId": "CF8854E5-DB21-3E5D-A9B1-DDC752FD7384"
|
|
}
|