阿里云短信服务 nodejs版本SDK,非阿里大鱼
2017-07-15 14:10
435 查看
最近发现新注册的阿里大鱼全部转移到阿里云的短信服务器,目前还没有提供nodejs 的sdk,所以我自己写了一个,有什么问题大家可以指正。
有小伙伴反馈短信模块启动后只能发送一次,第二次就保存,后来查看了一下,是SignatureNonce和Timestamp每次发送都要更新,所以稍微修改一下。
有小伙伴反馈短信模块启动后只能发送一次,第二次就保存,后来查看了一下,是SignatureNonce和Timestamp每次发送都要更新,所以稍微修改一下。
/** * 阿里云短信发送接口 nodejs 版本 * 阿里云短信API官方文档: https://help.aliyun.com/document_detail/44364.html?spm=5176.8195934.507901.11.pLzahV */ const http = require('http'); const querystring=require("querystring"); const crypto = require('crypto'); var AliyunSMS = { //配置 config:{ AccessKeyId: '***', //阿里短信服务所用的密钥 AccessKeySecret: "***", //阿里短信服务所用的密钥值 Format: 'JSON', SignatureMethod: 'HMAC-SHA1', SignatureVersion: '1.0', Action: 'SendSms', Version: '2017-05-25', RegionId: 'cn-hangzhou' }, //发送POST请求 POST: function (Data,callback){ const postData = querystring.stringify(Data); const options = {host: 'dysmsapi.aliyuncs.com', port: 80, path: '', method: 'POST', headers: {'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': Buffer.byteLength(postData)}}; const req = http.request(options, function(res){ res.setEncoding('utf8'); res.on('data', function(chunk){callback(chunk);}); res.on('end', function() {console.log('end');}); }); req.on('error', function(e){callback({'error':e.message});}); req.write(postData); req.end(); }, //签名算法 sign: function (param) { var json={},p=Object.keys(param).sort(); for(var i=0;i<p.length;i++){json[p[i]]=param[p[i]];} return crypto.createHmac('sha1', param.AccessKeySecret + '&').update(new Buffer('POST&' + encodeURIComponent('/') + '&' + encodeURIComponent(querystring.stringify(json, '&', '=')), 'utf-8')).digest('base64'); }, //发送短信 send: function (data,callback) { data.SignatureNonce= Math.random().toString(); data.Timestamp=new Date().toISOString(); var param = Object.assign(data, this.config); param.Signature = this.sign(param); this.POST(param, function (data) { callback(data); }); } }; module.exports = AliyunSMS; AliyunSMS.config.AccessKeyId= '***'; //阿里短信服务所用的密钥 AliyunSMS.config.AccessKeySecret= "****"; //阿里短信服务所用的密钥值 AliyunSMS.send({ PhoneNumbers: '13411118888', //接收短信的手机,逗号隔开,最多20个号码 SignName: '阿里云短信', //短信签名 TemplateCode: 'SMS_11118888', //短信模板 TemplateParam: JSON.stringify({ 'code':'1111' }) //短信模板中参数指定 }, function (data) { console.log('返回data:'+data); //发送成功返回 {"Message":"OK","RequestId":"8AB21B6B-A92B-4110-A112-4F10A41511A5","BizId":"10876611111^1111773511111","Code":"OK"} // 失败没有OK,有具体错误提示,以此判断是否发送成功 });
相关文章推荐
- php 阿里云短信服务及阿里大鱼实现短信验证码的发送
- 精简阿里云短信服务官方SDK及DEMO
- 阿里云短信服务SDK踩坑(php)
- 阿里云短信验证SDK,支持node低版本
- 阿里大于(alidayu)升级为阿里云短信服务(dysms)Golang新版SDK
- ThinkPHP5 集成阿里云SMS短信服务--验证码发送
- 云服务系列:Windows Azure SDK for .NET(2012 年 6 月发布的版本)的最新消息
- 最新阿里云短信服务接口类【亲测成功】
- 阿里云短信服务实现免密登陆
- Springboot实现阿里云通信短信服务有关短信验证码的发送
- 基于PHP的阿里云短信发送服务。防坑!!!
- 阿里短信python3.6 版本简易sdk
- 云服务系列:Windows Azure SDK for .NET(2012 年 6 月发布的版本)的最新消息
- 【阿里云产品公测】结构化数据服务OTS之JavaSDK初体验
- 关于阿里云短信发送的asp版本
- 免费短信验证码SDK For iOS V1.0.4 版本发布
- thinkphp5 中使用阿里云的短信服务
- Springboot实现阿里云通信短信服务有关短信验证码的发送
- 阿里云短信服务
- Springboot实现阿里云通信短信服务有关短信验证码的发送