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

管理验证码主要涉及到:生成、存储、校验、有效期管理、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的集合,用于存放验证码信息的,这个集合您无需维护。如下图:

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

使用方法:

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配合使用,用于校验用户提交上来的验证码和系统生成的是否一致

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:验证码错误

微信小程序云开发,快速生成短信验证码的更多相关文章

  1. 微信小程序云开发不完全指北

    微信小程序云开发不完全指北 首先必须说明云开发的"云"并不是类似云玩家里的云的意思,而是微信小程序真的提供了云开发的接口以及一个简单的提供存储.数据库服务的虚拟后台(对于一些轻量小 ...

  2. 第一章 “我要点爆”微信小程序云开发之项目建立与我的页面功能实现

    第一章 “我要点爆”微信小程序云开发之项目建立与我的页面功能实现 开发环境搭建 使用自己的AppID新建小程序项目,后端服务选择小程序·云开发,点击新建,完成项目新建. 新建成功后跳转到开发者工具界面 ...

  3. 微信小程序云开发-从0打造云音乐全栈小程序

    第1章 首门小程序“云开发”课程,你值得学习本章主要介绍什么是小程序云开发以及学习云开发的重要性,并介绍项目的整体架构,真机演示项目功能,详细介绍整体课程安排.课程适用人群以及需要掌握的前置知识.通过 ...

  4. 微信小程序云开发如何上手

    简要介绍 微信小程序云开发,是基于 Serverless 的一站式后端云服务,涵盖函数.数据库.存储.CDN等服务,免后端运维.基于云开发可以免鉴权调用微信所有开放能力. 前提准备 微信开发者工具 创 ...

  5. 技本功丨收藏!斜杠青年与你共探微信小程序云开发(下篇)

    2019年2月26日,人们为了一个杯子疯了一天. 星巴克猫爪杯,一场已经与猫无关了的“圣杯战争“.网上的倒卖价格,已炒至近千元! 求而不得,舍而不能,得而不惜.这是人最大的悲哀... 所以,请珍惜以下 ...

  6. 微信小程序-云开发(手记)

    微信小程序-云开发(手记) 1.创建data.json文件 注意以下几点要求: 入门示例: init方法的env:默认环境配置,传入字符串形式的环境 ID(理解为数据库)可以指定所有服务的默认环境(意 ...

  7. 第六章 “我要点爆”微信小程序云开发实例之爆文详情页制作

    爆文详情页制作 从首页中数据列表打开相应详情页面的方法: 给数据列表中每个数据项加一个点击事件,同时将当前数据项的id暂时记录在本地,然后跳转到详情页面detail goopen: function ...

  8. “我要点爆”微信小程序云开发实例

    使用云开发进行微信小程序“我要点爆”的制作 下一章:“我要点爆”微信小程序云开发之项目建立与我的页面功能实现 接下来我将对“我要点爆”微信小程序进行完整的开源介绍 小程序名称: 我要点爆 查看方式:从 ...

  9. 微信小程序-云开发实战教程

    微信小程序-云开发实战教程 云函数,云存储,云数据库,云调用 https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/gettin ...

  10. 微信小程序-云开发-实战项目

    微信小程序-云开发-实战项目 微信小程序 微信小程序平台服务条款 https://developers.weixin.qq.com/miniprogram/product/service.html h ...

随机推荐

  1. Java06 面向对象

    一 什么是面向对象 面向对象编程(Object-Oriented Programming,OOP) 面向对象编程的本质就是:以类的方式组织代码,以对象组织(封装)数据. 三大特性: 封装 继承 多态 ...

  2. Gtiee_上传本地项目

    Git_本地代码上传到码云 本文仅作学习记录,方便日后翻看 创建本地仓库 找到自己本地代码的文件夹,打开Git GUI Here,输入git init创建本地仓库,当前文件夹下有.git文件表示创建成 ...

  3. 7.mysql索引失效

          失效的七字口诀: 模型数空运最快 模:模糊查询以%开始索引失效: 型:数据类型转换 函数:函数的索引 空:索引列为空不走索引, 运:对索引列进行加减乘除会失效 最:不按聚合索引的最左匹配会 ...

  4. top单核与32C--CPU爆表

    linux的cpu使用频率是根据cpu个数和核数决定的 top, 然后你按一下键盘的1,这就是单个核心的负载,不然是所有核心的负载相加,自然会超过100 单核为100%,服务器是32核的,下面基本用了 ...

  5. java向上转型知识点收录

    package tex2polymorphism; /*总结如下: * 对于多态,可以总结它为: 一.使用父类类型的引用指向子类的对象: 二.该引用只能调用父类中定义的方法和变量: 三.如果子类中重写 ...

  6. Zookeeper ZAB协议

    这篇博客是从源码的角度了解Zookeeper 从接收客户端请求开始,到返回数据为止,有很多涉及到的对象创建因为在前几篇文章已经说明过了,这里就不再重复的说明了,如果不是很明白的的,可以先看前几篇博文了 ...

  7. python逐行读取替换文件中的字符串

    用列表中的值逐行替换文件中符合条件的字符串,并保存为新的文件, open("file").readlines 方案1: 逐行替换并保存为新的文件 import re def rep ...

  8. protobuf笔记

    protobuf的enum .proto的enum类型在编译后,是C++的enum

  9. 通过xshell在linux上安装nginx1.12.0

    0)环境安装 Nginx是C语言开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本,本篇则使用 CentOS 7 作为安装环境. 0.1 gcc 安装 安装 nginx 需要先将 ...

  10. 解决-装了WPS后Windows无法预览word、Excel、PPT等的问题

    https://www.bilibili.com/read/cv10469054/ https://www.cnblogs.com/qq3285862072/p/15097970.html Windo ...