简要描述:

  • 通过腾讯/阿里/百度/华为/即时通等第三方短信服务进行获取

接口版本:

版本号 制定人 制定日期 修订日期
v3 陈碧贵 2019-01-20 xxxx-xx-xx

请求URL:

  • http://{url参数}/bs/api/v3/dev/sms/verify/login/{telephone}?verifySmsGuid={guid des加密}

{telephone}:可加密传递

请求方式:

  • GET

请求头:

参数名 是否必须 类型 说明
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