Node.js验证码通知短信DEMO示例代码


/* *
 * 接口类型:互亿无线触发短信接口,支持发送验证码短信、订单通知短信等。
 * 账户注册:通过该链接免费开通账号 https://user.ihuyi.com/new/register.html
 * 注意事项:
*(1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。
 *(2)请使用 用户名 及 APIkey来调用接口,APIkey在会员中心可以获取;
*(3)提供的代码示例仅供参考,您可以根据具体需求自行开发适用于您的应用程序的代码。
*/
 
/**
 * Created by XadillaX on 14-2-12.
 * https://github.com/XadillaX/ihuyi106js
 */
String.prototype.replaceAll = function(reallyDo, replaceWith, ignoreCase) {
    if (!RegExp.prototype.isPrototypeOf(reallyDo)) {
        return this.replace(new RegExp(reallyDo, (ignoreCase ? "gi": "g")), replaceWith);
    } else {
        return this.replace(reallyDo, replaceWith);
    }
};
 
var dom = require('xmldom').DOMParser;
 
var _baseUri = "http://106.ihuyi.com/webservice/sms.php?method=Submit";
var _userAgent = "node-ihuyi106-module by 死月 (admin@xcoder.in)";
 
/**
 * iHuyi constructure.
 * @param account
 * @param password 查看密码请登录用户中心->验证码、通知短信->帐户及签名设置->APIKEY
 */
var iHuyi = function(account, password) {
    this.spidex = require("spidex");
    this.spidex.setDefaultUserAgent(_userAgent);
 
    this.account = account;
    this.password = password;
};
 
/**
 * send an SMS.
 * @param mobile
 * @param content
 * @param callback
 */
iHuyi.prototype.send = function(mobile, content, callback) {
    var data = {
        account         : this.account,
        password        : this.password,
        mobile          : mobile,
        content         : content
    };
 
    this.spidex.post(_baseUri, function(html, status) {
        if(status !== 200) {
            callback(new Error("短信发送服务器响应失败。"));
            return;
        }
 
        html = html.replaceAll("\r", "");
        html = html.replaceAll("\n", "");
        html = html.replaceAll(" xmlns=\"http://106.ihuyi.com/\"", "");
 
        //console.log(html);
        var doc = new dom().parseFromString(html);
        var result = doc.lastChild;
        var json = {};
        for(var node = result.firstChild; node !== null; node = node.nextSibling) {
            json[node.tagName] = node.firstChild.data;
        }
 
        //console.log(json);
        if(json.code == "2") {
            callback(null, json.smsid);
        } else {
            callback(new Error(json.msg, parseInt(json.code)));
        }
    }, data, "utf8").on("err", function(e) {
        callback(e);
    });
};
 
module.exports = iHuyi;