Nodejs实现短信验证码功能


Posted in NodeJs onFebruary 09, 2017

使用Nodejs的开发者愈来越多,基于Nodejs的后台开发也多了起来,像短信验证码、短信群发、国际短信这些需求,完全可以采用第三方接口来实现,云片就提供了这样的接口。

Nodejs

// 修改为您的apikey.可在官网(https://www.yunpian.com)登录后获取
var https = require('https');
var qs = require('querystring');
var apikey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
// 修改为您要发送的手机号码,多个号码用逗号隔开
var mobile = 'xxxxxxxxxxx';
// 修改为您要发送的短信内容
var text = '【云片网】您的验证码是1234';
// 指定发送的模板编号
var tpl_id = 1;
// 指定发送模板的内容
var tpl_value = {'#code#':'1234','#company#':'yunpian'};
// 语音短信的内容
var code = '1234';
// 查询账户信息https地址
var get_user_info_uri = '/v2/user/get.json';
// 智能匹配模板发送https地址
var sms_host = 'sms.yunpian.com';
var voice_host = 'voice.yunpian.com';
send_sms_uri = '/v2/sms/single_send.json';
// 指定模板发送接口https地址
send_tpl_sms_uri = '/v2/sms/tpl_single_send.json';
// 发送语音验证码接口https地址
send_voice_uri = '/v2/voice/send.json';
query_user_info(get_user_info_uri,apikey);
send_sms(send_sms_uri,apikey,mobile,text);
send_tpl_sms(send_tpl_sms_uri,apikey,mobile,tpl_id,tpl_value);
send_voice_sms(send_voice_uri,apikey,mobile,code);
function query_user_info(uri,apikey){
 var post_data = { 
 'apikey': apikey, 
 };//这是需要提交的数据
 var content = qs.stringify(post_data); 
 post(uri,content,sms_host);
}
function send_sms(uri,apikey,mobile,text){
 var post_data = { 
 'apikey': apikey, 
 'mobile':mobile,
 'text':text,
 };//这是需要提交的数据 
 var content = qs.stringify(post_data); 
 post(uri,content,sms_host);
}
function send_tpl_sms(uri,apikey,mobile,tpl_id,tpl_value){
 var post_data = { 
 'apikey': apikey,
 'mobile':mobile,
 'tpl_id':tpl_id,
 'tpl_value':qs.stringify(tpl_value), 
 };//这是需要提交的数据 
 var content = qs.stringify(post_data); 
 post(uri,content,sms_host); 
}
function send_voice_sms(uri,apikey,mobile,code){
 var post_data = { 
 'apikey': apikey,
 'mobile':mobile,
 'code':code,
 };//这是需要提交的数据 
 var content = qs.stringify(post_data); 
 console.log(content);
 post(uri,content,voice_host); 
}
function post(uri,content,host){
 var options = { 
  hostname: host,
  port: 443, 
  path: uri, 
  method: 'POST', 
  headers: { 
   'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' 
  } 
 };
 var req = https.request(options, function (res) { 
  // console.log('STATUS: ' + res.statusCode); 
  // console.log('HEADERS: ' + JSON.stringify(res.headers)); 
  res.setEncoding('utf8'); 
  res.on('data', function (chunk) { 
   console.log('BODY: ' + chunk); 
  }); 
 }); 
 //console.log(content);
 req.write(content); 
 req.end(); 
}

上面就是云片的全部接口,在实际使用的过程中,可以根据自己的需求,选择对应的接口使用,具体的可以看这篇文章如何使用云片API发送短信验证码,里面讲了如何使用单发短信API、群发短信API、不同短信内容批量发送API,很实用。

另外最重要的是,云片的服务还不错,短信的到达率比较高,出了问题也有人及时回复,这点在国内所有SaaS厂家中,算是做得很好的一家。

NodeJs 相关文章推荐
NodeJS学习笔记之(Url,QueryString,Path)模块
Jan 13 NodeJs
使用NodeJs 开发微信公众号(三)微信事件交互实例
Mar 02 NodeJs
NodeJS和BootStrap分页效果的实现代码
Nov 07 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
nodeJS实现路由功能实例代码
Jun 08 NodeJs
使用Nodejs连接mongodb数据库的实现代码
Aug 21 NodeJs
用nodejs实现json和jsonp服务的方法
Aug 25 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
nodejs同步调用获取mysql数据时遇到的大坑
Mar 02 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 21 NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 #NodeJs
使用nodejs下载风景壁纸
Feb 05 #NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 #NodeJs
nodejs基础应用
Feb 03 #NodeJs
nodejs基础知识
Feb 03 #NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 #NodeJs
图片上传之FileAPI与NodeJs
Jan 24 #NodeJs
You might like
星际RPG字典
2020/03/04 星际争霸
php中session定期自动清理的方法
2015/11/12 PHP
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
javascript常用函数归纳整理
2014/10/31 Javascript
JS+CSS实现可拖动的弹出提示框
2015/02/16 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
[原创]jQuery常用的4种加载方式分析
2016/07/25 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
Vue动态加载异步组件的方法
2018/11/21 Javascript
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
2021/02/23 Vue.js
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
python用于url解码和中文解析的小脚本(python url decoder)
2013/08/11 Python
Python模拟登录12306的方法
2014/12/30 Python
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
Python 正则表达式入门(中级篇)
2016/12/07 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
如何基于python实现年会抽奖工具
2020/10/20 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
HTML5触摸事件(touchstart、touchmove和touchend)的实现
2020/05/08 HTML / CSS
化学相关工作求职信
2013/10/02 职场文书
2015年售票员工作总结
2015/04/29 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
python3实现无权最短路径的方法
2021/05/12 Python
mybatis源码解读之executor包语句处理功能
2022/02/15 Java/Android
OpenCV实现常见的四种图像几何变换
2022/04/01 Python