网易短信接口集成 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 ...
随机推荐
- codevs——1049 棋盘染色
1049 棋盘染色 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 有一个5×5的棋盘,上面有一 ...
- 转:C#并口热敏小票打印机打印位图
最近一直在研究并口小票打印机打印图片问题,这也是第一次和硬件打交道,不过还好,最终成功了. 这是DEMO的窗体: 下面是打印所需要调用的代码: class LptControl { private s ...
- RED HAT 7 性能监控工具
https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Performance_Tuning_Gui ...
- Windows Server 远程桌面报错:No Remote Desktop License Servers Available
问题描述: 在用远程桌面访问Window Server服务器时,出现如下错误: The remote session was disconnected because there are no Rem ...
- 使用SourceTree 来管理 Gitcafe 的Pages 发布Blog!
有个好爹的 SourceTree 是来自 JIRA 的娘家 Bitbucket 的新东家 ATLASSIAN.com 一家成功的,对敏捷软件工程拥有全栈式支持的商业公司, 所推出的 MAC 专用, S ...
- Java笔试面试题007
Java笔试面试题007 1.请用正則表達式匹配出QQ号(如果QQ号码为5-10位). 解答: ^ \d{5,10}$ 2.String, StringBuffer StringBuilder的差别. ...
- 紫书p199 八数码(BFS,hash)
八数码问题 紫书上的简单搜索 渣渣好久才弄懂 #include<cstdio> #include<cstring> using namespace std; const i ...
- C#.net word excel powerpoint (ppt) 转换成 pdf 文件
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- 【转载】一张“神图”看懂单机/集群/热备/磁盘阵列(RAID)
单机部署(stand-alone):只有一个饮水机提供服务,服务只部署一份 集群部署(cluster):有多个饮水机同时提供服务,服务冗余部署,每个冗余的服务都对外提供服务,一个服务挂掉时依然可用 热 ...
- 【c语言】二维数组中的查找,杨氏矩阵在一个二维数组中,每行都依照从左到右的递增的顺序排序,输入这种一个数组和一个数,推断数组中是否包括这个数
// 二维数组中的查找,杨氏矩阵在一个二维数组中.每行都依照从左到右的递增的顺序排序. // 每列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个数组和一个数.推断数组中是否包括这个数 #i ...