代码改变世界

nodejs 搞定 阿里云短信API 后面有适用于小白的解决方案

2016-12-03 19:49  弹簧歌  阅读(990)  评论(3编辑  收藏  举报

exports.sendSms=function(phone,content,ret){

 

var d={
RecNum:phone,
Action:'SingleSendSms',
SignName:'????',
TemplateCode:'?????',
ParamString:'{"code":"'+content+'"}',
Format:'json',
Version:'2016-09-27',
SignatureMethod:'HMAC-SHA1',
SignatureNonce:Math.random()+'',
SignatureVersion:'1.0',
AccessKeyId:'????',
Timestamp:JSON.stringify(new Date()).replace(/\"/g,''),
}

var q=buildQueryString(d);

var key='?????&';
var s='GET&%2F&'+encodeURIComponent(q);

var sign=hmac(s,key);
var href='Signature='+encodeURIComponent(sign)+'&'+encodeURI(buildQueryString1(d));

client = restify.createStringClient({
url: 'https://sms.aliyuncs.com/?'+href,

});

client.get('', function(err, req, res, data) {

ret(data);
});

}

function buildQueryString(d){
var i=0;
var ns=[];
for(var k in d){
ns[i]=k;
i++;
}
ns.sort();
var str=''
for(var i in ns){
if(str) str+='&';
str+=encodeURIComponent(ns[i])+'='+encodeURIComponent(d[ns[i]]);
}

return str;
}


function buildQueryString1(d){
var i=0;
var ns=[];
for(var k in d){
ns[i]=k;
i++;
}
ns.sort();
var str=''
for(var i in ns){
if(str) str+='&';
str+=(ns[i])+'='+(d[ns[i]]);
}

return str;
}

 

var hmac=function (s,key){
var h = crypto.createHmac('sha1', key);
h.update(s);
return h.digest().toString('base64');
}

有“?”的地方自己替换相应的内容。

很乐意解答相关问题,有问题请加微信 thunder_f,添加时写一下验证信息哦。