网易短信接口集成 nodejs 版
/*
name:网易短信服务集成nodejs版;
author:zeq
time:20180607
test:
// checkValidCode('157****6954','284561').then(res=>console.log(res))
// .catch(err=>console.log(err));
// sendMsg(3992798,['157****6954'],['zeq']).then(res=>{
// console.log(JSON.stringify(res));
// }).catch(e=>{
// console.log(JSON.stringify(e));
// });
// sendValidCode('15726656954').then(res=>{
// console.log(res);
// }).catch(e=>{
// console.log(e);
// });
*/ var http =require('http');
var qs = require('querystring');
var crypto = require('crypto');
var util = require('./util'); const appKey = '';
const appSecret = '';
const noticeMsgUrl = 'https://api.netease.im/sms/sendtemplate.action';
const validCodeUrl = 'https://api.netease.im/sms/sendcode.action';
const checkValidCodeUrl = 'https://api.netease.im/sms/verifycode.action'; module.exports = {
sendValidCode,
sendMsg,
checkValidCode
}; function checkValidCode(mobile,code){
return new Promise((resolve,reject)=>{
let postData = qs.stringify({
mobile,
code
});
let options = packageHeaders('/sms/verifycode.action',postData);
let req = http.request(options,res=>{
var data = '';
res.on('data',d=> data += d);
res.on('end',()=>resolve(data));
res.on('error',(err)=>reject(err));
});
req.on('error',(err)=>reject(err));
req.write(postData);
req.end();
});
} function sendMsg(templateid,mobiles,params){
return new Promise((resolve,reject) => {
mobiles = JSON.stringify(mobiles);
params = JSON.stringify(params);
let postData = `templateid=${templateid}&mobiles=${mobiles}¶ms=${params}`;
let options = packageHeaders('/sms/sendtemplate.action',postData);
let req = http.request(options,(res)=>{
res.on('error',(res)=>{
reject(res);
});
let resData = '';
res.on('data',d=>{
resData += d;
});
res.on('end',()=>{
resolve(resData);
});
});
req.on('error',(err)=>{
reject(err);
});
req.on('warning',(err)=>{
reject(err);
});
req.write(postData);
req.end();
});
}
function sendValidCode(tel){
return new Promise((resolve,reject) => {
const data = qs.stringify({
mobile:tel,
codeLen:6
});
let options = packageHeaders('/sms/sendcode.action',data);
let req = http.request(options,(res)=>{
var resData = '';
res.on('data',d=>{
resData += d;
});
res.on('end',()=>{
resolve(resData);
});
}); req.on('error',(err)=>{
console.log(err);
reject(err);
});
req.write(data);
req.end();
})
}
/*sha1 加密 其实是在util里的*/
function sha1(str){
var sha1 = crypto.createHash('sha1');
sha1.update(str);
var secret = sha1.digest('hex');
return secret;
} /*请求header里的参数*/
function packageHeaders(urlPath,postData){
var Nonce = util.createRandomNum(10);
var CurTime = Date.now();
var CheckSum = sha1([appSecret,Nonce,CurTime].join(''));
return {
hostname:'api.netease.im',
port:80,
path:urlPath,
method:'POST',
headers:{
appKey,
Nonce,
CurTime,
CheckSum,
'content-type': contentType,
'content-length':Buffer.byteLength(postData)
}
}
}
网易短信网关nodejs项目集成,已经调通。如果有网易的IM帐号,就可以直接用,只需要修改appId,appSecret就可以了。需要的拿走,不谢。
网易短信接口集成 nodejs 版的更多相关文章
- 阿里大鱼短信接口(Python3版)
近期由于须要用到短信接口,选型的的结果是用阿里大鱼的短信服务,然而淘宝开放平台(TOP)的SDK已经非常多年没有更新了.不支持python3.自己动手改了半天,还是不太正常,索性不用它,自己写一个算了 ...
- 阿里短信接口使用(JAVA版)
近期项目需要使用短信接口,对比下选择了阿里的短信接口 以下为开发笔记: maven pom.xml中引入: <dependency> <groupId>com.aliyun&l ...
- 模板短信接口调用java,pythoy版(一) 网易云信
说明 短信服务平台有很多,我只是个人需求,首次使用,算是测试用的,故选个网易(大公司). 稳定性:我只测试了15条短信... 不过前3条短信5分钟左右的延时,后面就比较快.... 我只是需要发短信,等 ...
- asp.net mvc短信接口调用——阿里大于API开发心得
互联网上有许多公司提供短信接口服务,诸如网易云信.阿里大于等等.我在自己项目里需要使用到短信服务起到通知作用,实际开发周期三天,完成配置.开发和使用,总的说,阿里大于提供的接口易于开发,非常的方便,短 ...
- Thinkphp框架 -- 短信接口验证码
我用的是一款名叫 短信宝 的应用,新注册的用户可以免费3条测试短信,发现一个BUG,同个手机可以无限注册,自己玩玩还是可以的. 里面的短信接口代码什么信息都没有,感觉看得不是很明白,自己测试了一遍,可 ...
- 阿里云短信验证解决方案(java版)(redis存储)
最近搞了一个互联网项目的注册,需要写一个手机号验证(由于之前没有轮子,只能自己摸索了); 1:基本思路: 1>购买了阿里云短信服务->下载阿里云短信发送demo(java版); 2> ...
- ABP框架中短信发送处理,包括阿里云短信和普通短信商的短信发送集成
在一般的系统中,往往也有短信模块的需求,如动态密码的登录,系统密码的找回,以及为了获取用户手机号码的短信确认等等,在ABP框架中,本身提供了对邮件.短信的基础支持,那么只需要根据自己的情况实现对应的接 ...
- asp.net两种方式的短信接口使用(提供接口的都是收费的)
一种是http请求的方式,另一种就是提供WebService接口供调用的. //服务商 sms.webchinese.cn //sms_url="http://sms.webchinese. ...
- destoon短信接口修改方法
destoon是很优秀的B2B行业站程序.程序模块化开发契合度很高,二次开发起来也很顺畅.数据缓存,权限分配,SEO功能方面都不错. 但是在使用这套程序的时候,常常要用到发送短信的功能,而destoo ...
随机推荐
- Codeforces 864E Fire(DP)
题目链接 Fire 题意 有n个物品,每个物品的挽救时间代价为ti, 消失时刻为di, 价值为pi. 如果要救某个物品,必须在他消失之前救出来. 同一时刻最多只能救一件物品. 当前耗时为当前已经救出的 ...
- java 文件复制操作
本案例采用第三方 jar 包完成,commons-io-2.5.jar, 这个 jar 对文件操作非常方便,大家可以尝试使用一下. 这里贴一个简单的 demo 供大家使用 import java.io ...
- mysql 密碼忘記 解決
WINDOW 1.my.ini 加入 [mysqld] skip-grant-tables 2.mysql -uroot -p 登入 USE MYSQL: update user set passwo ...
- Mysql导出导入相关操作记录
一.使用source source sql脚本文件路径 二.使用mysqldump 命令行下具体用法如下: mysqldump -u用户名 -p密码 -d 数据库名 表名 脚本名; 1.导出数据库為 ...
- PostgreSQL触发器的使用
原文: https://www.yiibai.com/postgresql/postgresql-trigger.html -------------------------------------- ...
- outlook 2010 自动密送Email
以下功能请勿非法使用: 密抄到多人这个需要用到宏 方法一: 1.在Outlook里面键入ALT+F11打开VBA编辑器 2.展开“Project (VbaProject.OTM)/Microsoft ...
- 前端编程提高之旅(十)----表单验证插件与cookie插件
实际项目开发中与用户交互的常见手法就是採用表单的形式.取得用户注冊.登录等信息.而当用户注冊或登录后又须要记住用户的登录状态.这就涉及到经常使用的两个操作:表单验证与cookie增删查找. ...
- 百科知识 手机QQ的视频如何保存
手机QQ上打开一个视频,然后进入播放界面,然后暂停播放 点击右上角的按钮,就可以保存到手机
- 自己定义控件事实上非常easy1/6
尊重原创转载请注明:From AigeStudio(http://blog.csdn.net/aigestudio)Power by Aige 侵权必究! 炮兵镇楼 上一节我们粗略地讲了下怎样去实现我 ...
- ubuntu如何修改root密码
安装完Ubuntu后忽然意识到没有设置root密码,不知道密码自然就无法进入根用户下.到网上搜了一下,原来是这麽回事.Ubuntu的默认root密码是随机的,即每次开机都有一个新的root密码.我们可 ...