阿里云短信服务 nodejs版本SDK,非阿里大鱼
来源:互联网 发布:大数据存储面临的问题 编辑:程序博客网 时间:2024/05/01 20:23
最近发现新注册的阿里大鱼全部转移到阿里云的短信服务器,目前还没有提供nodejs 的sdk,所以我自己写了一个,有什么问题大家可以指正。
有小伙伴反馈短信模块启动后只能发送一次,第二次就保存,后来查看了一下,是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,有具体错误提示,以此判断是否发送成功});
阅读全文
0 0
- 阿里云短信服务 nodejs版本SDK,非阿里大鱼
- 阿里云大鱼短信api
- 阿里大鱼,阿里短信,laravel5
- 阿里大鱼 短信验证
- 阿里大鱼 短信使用
- 阿里大鱼短信demo
- 阿里大鱼短信接口:
- 阿里大鱼短信
- 阿里大鱼发送短信
- 阿里大鱼短信
- 阿里大鱼短信接入
- Yii2使用阿里大鱼或阿里云短信发送短信
- 阿里云大鱼短信使用demo
- 阿里大鱼发短信SDK遇到的一点问题
- 阿里大鱼发短信SDK遇到的一点问题
- 阿里大鱼短信发送平台
- Laravel 阿里大鱼短信接口
- php短信接口(阿里大鱼)
- C++的单引号和双引号区别
- 《野火集》
- 调用一次fork返回2次
- super指针
- Java学习之始
- 阿里云短信服务 nodejs版本SDK,非阿里大鱼
- SpringMvc请求报错406问题
- LiDAR-MEMS激光雷达点云实时显示
- hibernate组件映射
- Bootstrap+Jquery笔记
- 正则表达式(网页爬虫)
- 多级分销系统(代理商佣金管理模块)设计概要(要求和数据库设计)
- WUST 1949 家谱树(拓扑排序+dfs)
- As3基础部分4