前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信小程序云开发,快速生成短信验证码

微信小程序云开发,快速生成短信验证码

原创
作者头像
用户4432598
修改2019-07-25 17:21:43
3.3K0
修改2019-07-25 17:21:43
举报
文章被收录于专栏:移动开发分享移动开发分享

使用微信小程序云函数实现注册短信验证码的管理,并不是一件分分钟的事,目前想要存储验证码只能放到数据库中,因为存储后才能和用户提交上来的验证码做比较。

管理验证码主要涉及到:生成、存储、校验、有效期管理、2条短信间隔时间控制等、云数据库的操作,小编可是用了整整一天才完成的。

下面推荐一个第三方的短信接口,支持小程序云函数发送短信验证码,而且SDK已经实现了上述的所有功能,不妨试一试。

下载地址: http://smsow.zhenzikj.com/doc/sdk.html

如何使用

1.安装

下载后的SDK在cloudfunctions文件夹下会包含zhenzisms文件夹,您直接把这个文件夹拷到您的项目中即可。

miniprogram文件夹下包含使用示例,您可以参考这个完成开发。

注: 使用云函数开发无需配置域名的

2.申请账号,获取AppId、AppSecret

免费注册地址: http://sms_developer.zhenzikj.com/zhenzisms_user/register.html

使用注册账号登录用户中心,在"我的应用"-> "详情"中可以查询AppId、AppSecret

AppId、AppSecret是用于开发者使用账号和秘钥, 以下的所有api中都需要用到

3.修改SDK中的AppId、AppSecret

打开SDK中云函数的index.js文件,填写appId、appSecret

4.发送短信

此方法sendCode是专用于发送短信验证码的,调用该方法会自动生成验证码并存储在数据库中,当用户提交信息后可以通过validateCode方法比对验证码是否正确。

首先,您需要在云开发控制台中创建名称为sms-record的集合,用于存放验证码信息的,这个集合您无需维护。如下图:

其次,修改集合的权限,如下图:

使用方法:

代码语言:javascript
复制
wx.cloud.callFunction({
      name: 'zhenzisms',
      data: {
        $url: 'sendCode',
        apiUrl: 'https://sms_developer.zhenzikj.com',
        message: '您的验证码为:{code}',
        number: '18511111111',
        messageId: 'aaabbb',
        seconds: 60
      }
    }).then((res) => {
      console.log(res.result.msg);
    }).catch((e) => {
      //console.log(e);
    });

apiUrl为请求地址,个人开发者使用https://sms_developer.zhenzikj.com,企业开发者使用https://sms.zhenzikj.com

send方法用于单条发送短信

参数$url:方法名称,固定不变的

参数message:发送短信的模板,您可以修改成您需要的,其中{code}会自动替换为验证码的

参数number:接收者手机号码

参数messageId:该条信息的唯一标识,可用于查询

参数seconds:验证码的有效期,单位秒

参数length:验证码的长度,比如常用的4位或6位

返回结果是json格式的字符串, code: 发送状态,0为成功。非0为发送失败,可从data中查看错误信息

注: 测试发送短信内容不要使用"你好"或"12132"全数字形式,这种短信内容没有具体的意义,可能会被运营商屏蔽

注:目前两条验证码短信获取的间隔时间是60秒,如需取消间隔时间或重新设置您需要修改sdk中的index.js文件,如下图:

6.校验验证码

此方法validateCode需要和方法sendCode配合使用,用于校验用户提交上来的验证码和系统生成的是否一致

代码语言:javascript
复制
wx.cloud.callFunction({
      name: 'zhenzisms',
      data: {
        $url: 'validateCode',
        apiUrl: 'https://sms_developer.zhenzikj.com',
        number: '18511111111',
        code: '6313'
      }
    }).then((res) => {
      console.log(res.result.msg);
    }).catch((e) => {
      console.log(e);
    });

apiUrl为请求地址,个人开发者使用https://sms_developer.zhenzikj.com,企业开发者使用https://sms.zhenzikj.com

参数$url:方法名称,固定不变的

参数number:发送短信的手机号码

参数code:用户输入的验证码

返回结果是json对象,其中code项是错误代码,msg项是错误描述。code说明 success: 校验成功,empty:未调用sendCode方法生成验证码, code_expired:验证码已过期,过期时间是通过sendCode方法的参数seconds控制,code_error:验证码错误

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
短信
腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档