狗是人类的朋友,淘宝文档真心不如他们
实在没办法 只能自己写一个
这里使用Hmac方式实现签名
/* Node.js的 crypto 库实在搞不懂 所以下面的两行代码方式的Hmac结果永远都是不对的 谁知道怎么用 不妨留言给我*/var hmac = crypto.createHmac("md5", secret);var result= hmac.update(message).digest('hex');
使用blueimp-md5 没有的自己装个
npm install blueimp-md5
以下是库
var md5 = require("blueimp-md5").md5;// 掏包网的App信息var config = { AppKey: '123456', AppSecret: '123456'};var tbSign = function (obj) { // 时间戳 var time = new Date(); var timestamp = time.getFullYear() + "-" + ("0" + (time.getMonth() + 1)).slice(-2) + "-" + ("0" + time.getDate()).slice(-2) + ' ' + ("0" + time.getHours()).slice(-2) + ":" + ("0" + time.getMinutes()).slice(-2) + ":" + ("0" + time.getSeconds()).slice(-2); obj.timestamp = timestamp; // 程序key obj.app_key = config.AppKey; // 参数数组 var arr = []; // 循环添加参数项 for(var p in obj){ arr.push(p + obj[p]); } // 排序 arr.sort(); // 参数喘 var msg = arr.join(''); console.log(msg); // Hmac 签名 var sign = md5(msg, config.AppSecret); // 返回 return { timestamp:timestamp, sign:sign.toUpperCase() }}module.exports.tbSign = tbSign;
下面 就简单了 使用 算一下 就好了
var helperTb = require('./helper_tbsign');// 短信发送的参数对象var obj = { format : 'json', method : 'alibaba.aliqin.fc.sms.num.send', partner_id : 'top-sdk-java-20151020', rec_num : '13901234567', sign_method : 'hmac', sms_type : 'normal', sms_param : '{"code":"1234", "product":"Demo"}', sms_free_sign_name : '注册验证', sms_template_code : 'SMS_123456', v : '2.0', timestamp : '2015-10-20 20:41:05'}var sign = helperTb.tbSign(obj);// 结果 4F045A8A04A1B0B5A7F196A91C6EF6D1
好了,代码能用了,各位参考,感兴趣按照你的实际情况自己优化
我这里就当弄个笔记了