简要描述:
- 通过腾讯/阿里/百度/华为/即时通等第三方短信服务进行获取
接口版本:
版本号 |
制定人 |
制定日期 |
修订日期 |
v3 |
陈碧贵 |
2019-01-20 |
xxxx-xx-xx |
请求URL:
- http://{url参数}/bs/api/v3/dev/sms/verify/login/{telephone}?verifySmsGuid={guid des加密}
{telephone}:可加密传递
请求方式:
请求头:
参数名 |
是否必须 |
类型 |
说明 |
XownerId |
是 |
string |
项目唯一ID,对应bo_project {ownerId} |
XsysId |
否 |
string |
所属系统 对应 bo_system 表 |
XuserFromFirstShareId |
string |
否 |
一级分享用户ID, bo_user user_id |
XuserFromSecondShareId |
string |
否 |
二级分享用户ID, bo_user user_id |
XverifyApi |
是 |
string |
加密规则encryptByDES(`${newGuid()} |
XfilterAreaCode |
否 |
string |
行政区编码, 对应 bo_sys_area area_code |
Content-Type: |
是 |
string |
application/json; charset=utf-8 请求类型 |
请求参数:
参数名 |
是否必须 |
类型 |
说明 |
verifySmsGuid |
是 |
string |
Guid 加密,encryptByDES规则 that.user.verifySmsGuid = encryptByDES(newGuid()); DESUtil.EncryptEcb(userVo.Password, securityKey) |
_nodejs |
是 |
string |
common-data 对应/Config/AppNodeJs/Plugins/fn- common-data.js, 通过nodejs插件,对响应结果进行二次处理 common-data 普通数据(小写驼峰)common-data-under 普通数据下划线 |
path参数名 |
是否必须 |
类型 |
说明 |
telephone |
是 |
string |
手机号码 |
返回示例:
正确时返回:
{
data: {
second: 60,
secondHt: 300,
cacheKeyHt: "1816C409AB7FE0C83D7A0BF38A2435F8JJ__1",
cacheStartDateHt: "0001-01-01T00:00:00",
},
code: 0,
success: true,
}
cacheKeyHt: PF.Abstractions.Securitys.MD5.MD5Encrypt($"{ownerId}JJ{sysId}JJ{moudleKey}JJ{JsonUtil.Serialize(phoneNumbers)}") + $"JJ{clientIp}";
错误时返回:
{
"code": 0,
"message": ""
"error":{
errorCode:null,
errorText:null
}
"success": false,
}
返回参数说明:
参数名 |
类型 |
说明 |
success |
bool |
true 表示数据请求成功(跟code=0一致),调用者优先使用 |
code |
int |
true 表示数据请求成功(跟code=0一致),调用者优先使用 |
data |
object |
second: 60, //用于前端倒计时 secondHt: 300,//后端缓存数据时间 cacheKeyHt //后台存储缓存的key,需要传递给后台 |
cacheType |
string |
redis/sqlite/local 数据来源缓存 的类型(便于开发调试和性能优化) |
cacheDate |
date |
最后数据获取时间 |
接口实现代码参考
#region 设置缓存,控制短信的访问次数
string cacheClientKey = clientIp;
if (!string.IsNullOrEmpty(clientIp))
{
cacheClientKey = PF.Abstractions.Securitys.MD5.MD5Encrypt($"{ownerId}JJ{sysId}JJ{moudleKey}JJ{JsonUtil.Serialize(phoneNumbers)}") + $"JJ{clientIp}";
}
if (!string.IsNullOrEmpty(cacheClientKey) && _cache.Get<SmsResult>(cacheClientKey) != null)
{
var result = _cache.Get<SmsResult>(cacheClientKey);
if (result.Data.CacheStartDateHt.AddSeconds(Convert.ToInt32(result.Data.SecondHt)) <= DateTimeUtil.Now())
{
_cache.Remove(cacheClientKey);
}
else
{
return new SmsResult { Success = true, Data = new SmsInfo { Second = result.Data.Second, CacheKeyHt = result.Data.CacheKeyHt }, Message = $"短信在{result.Data.SecondHt / 60}分钟内已经发送,可以直接使用" };
}
}
#endregion
文档更新时间: 2023-06-02 14:12 作者:admin