狗是人類的朋友,淘寶文檔真心不如他們
前幾天別人說阿里大魚 發短信很快
這幾天說充點錢試試 正好有個小項目
結果發現簽名工具沒有 Node.js的版本
淘寶的文檔 誰看誰知道 這裏不吐槽了 一點意思都沒有
馬老闆別每天數錢,我們不能特麼好好作作基礎設施建設
能不能造福廣大程序猿 能不能快樂的玩耍javascript
實在沒辦法 只能本身寫一個java
這裏使用Hmac方式實現簽名npm
/* Node.js的 crypto 庫實在搞不懂 因此下面的兩行代碼方式的Hmac結果永遠都是不對的 誰知道怎麼用 不妨留言給我 */ var hmac = crypto.createHmac("md5", secret); var result= hmac.update(message).digest('hex');
使用blueimp-md5 沒有的本身裝個npm install blueimp-md5
json
如下是庫數組
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;
下面 就簡單了 使用 算一下 就行了app
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
好了,代碼能用了,各位參考,感興趣按照你的實際狀況本身優化
我這裏就當弄個筆記了工具