Created
October 25, 2012 01:11
-
-
Save saighost/3949915 to your computer and use it in GitHub Desktop.
短信SDK
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//client | |
(function () { | |
var smsclient = {}; | |
module.exports = smsclient; | |
var cfg = require("./config").config; | |
var soap = require('soap'); | |
var url = cfg.serviceURL+'?WSDL'; | |
var root = this; | |
var client,counter = 0; | |
function ServiceError(code){ | |
this.name = 'ServiceError'; | |
this.msg = 'error code : '+ code; | |
Error.call(this, this.msg); | |
Error.captureStackTrace(this, arguments.callee); | |
} | |
ServiceError.prototype.__proto__ = Error.prototype; | |
var Parem = function (arr) | |
{ | |
for (var i = 0; i < arr.length; i++) { | |
this['arg'+i] = arr[i] | |
}; | |
} | |
smsclient.init = function (callback) | |
{ | |
soap.createClient(url, function(err, cl) { | |
if(err){ | |
console.error('init:',err); | |
if(callback) | |
callback(err); | |
}else{ | |
client = cl; | |
// console.dir(client); | |
if(callback) | |
callback(err); | |
} | |
}); | |
} | |
/** | |
* | |
* 进行登录操作,配置信息从config中读取 | |
* | |
* @return int 操作结果状态码 | |
* | |
* 0 注册成功 | |
* 10 客户端注册失败 | |
* 101 客户端网络故障 | |
* 305 服务器端返回错误,错误的返回值(返回值不是数字字符串) | |
* 999 操作频繁 | |
*/ | |
smsclient.login = function (callback) | |
{ | |
var parem = new Parem([cfg.sn,cfg.key,cfg.password]); | |
client = null; | |
smsclient.init(function (error) { | |
if(!error){ | |
client.registEx(parem, function (err,result) { | |
if(err){ | |
console.error('login:',err); | |
callback(err); | |
client = null; | |
}else{ | |
console.log(result); | |
if(result['return']!='0'){ | |
var error = new ServiceError(result['return']) | |
console.error('login:',error); | |
callback(error); | |
}else{ | |
callback(null,true); | |
} | |
} | |
}) | |
} | |
}) | |
} | |
/** | |
* 注销操作 (注:此方法必须为已登录状态下方可操作) | |
* | |
* @return int 操作结果状态码 | |
* | |
* 0 注销成功 | |
* 11 注销失败 | |
* 101 客户端网络故障 | |
* 305 服务器端返回错误,错误的返回值(返回值不是数字字符串) | |
* 999 操作频繁 | |
*/ | |
smsclient.logout = function (callback) | |
{ | |
var parem = new Parem([cfg.sn,cfg.key]); | |
client.logout(parem,function (err,result) { | |
if(err){ | |
console.error('logout:',err); | |
callback(err); | |
}else{ | |
console.log(result['return']); | |
if(result['return']!=0){ | |
var error = new ServiceError(result['return']) | |
console.error('logout:',error); | |
callback(error); | |
}else{ | |
callback(null,true); | |
} | |
} | |
}); | |
} | |
/** | |
* 获取版本信息 | |
* @return string 版本信息 | |
*/ | |
smsclient.getVersion = function(callback) | |
{ | |
client.getVersion(null,function (err,result) { | |
if(err){ | |
console.error('getVersion:',err); | |
callback(err); | |
}else{ | |
console.log(result['return']); | |
if(result['return']!=0){ | |
var error = new ServiceError(result['return']) | |
console.error('getVersion:',error); | |
callback(error); | |
}else{ | |
callback(null,true); | |
} | |
} | |
}); | |
} | |
/** | |
* 企业注册 [邮政编码]长度为6 其它参数长度为20以内 | |
* | |
* @param string $eName 企业名称 | |
* @param string $linkMan 联系人姓名 | |
* @param string $phoneNum 联系电话 | |
* @param string $mobile 联系手机号码 | |
* @param string $email 联系电子邮件 | |
* @param string $fax 传真号码 | |
* @param string $address 联系地址 | |
* @param string $postcode 邮政编码 | |
* | |
* @return int 操作结果状态码 | |
* | |
*/ | |
smsclient.registDetailInfo = function (callback) | |
{ | |
var parem = new Parem([cfg.eName,cfg.linkMan,cfg.phoneNum,cfg.mobile,cfg.email,cfg.fax,cfg.address,cfg.postcode]); | |
client.registDetailInfo(parem,function (err,result) { | |
if(err){ | |
console.error('registDetailInfo:',err); | |
callback(err); | |
}else{ | |
console.log(result['return']); | |
if(result['return']!=0){ | |
var error = new ServiceError(result['return']) | |
console.error('registDetailInfo:',error); | |
callback(error); | |
}else{ | |
callback(null,true); | |
} | |
} | |
}); | |
} | |
/** | |
* 得到上行短信 (注:此方法必须为已登录状态下方可操作) | |
* | |
* @return array 上行短信列表, 每个元素是Mo对象, Mo对象内容参考最下面 | |
* | |
* | |
* 如: | |
* | |
* $moResult = $client->getMO(); | |
* echo "返回数量:".count($moResult); | |
* foreach($moResult as $mo) | |
* { | |
* //$mo 是位于 Client.php 里的 Mo 对象 | |
* echo "发送者附加码:".$mo->getAddSerial(); | |
* echo "接收者附加码:".$mo->getAddSerialRev(); | |
* echo "通道号:".$mo->getChannelnumber(); | |
* echo "手机号:".$mo->getMobileNumber(); | |
* echo "发送时间:".$mo->getSentTime(); | |
* echo "短信内容:".$mo->getSmsContent(); | |
* } | |
* | |
* | |
*/ | |
smsclient.getMO = function (callback) | |
{ | |
var parem = new Parem([cfg.sn,cfg.key]); | |
client.getMO(parem,function (err,result) { | |
if(err){ | |
console.error('getMO:',err); | |
callback(err); | |
}else{ | |
console.log(result['return']); | |
callback(null,result['return']); | |
} | |
}); | |
} | |
/** | |
* 得到状态报告 (注:此方法必须为已登录状态下方可操作) | |
* @return array 状态报告列表, 一次最多取5个 | |
*/ | |
smsclient.getReport = function (callback) | |
{ | |
var parem = new Parem([cfg.sn,cfg.key]); | |
client.getReport(parem,function (err,result) { | |
if(err){ | |
console.error('getReport:',err); | |
callback(err); | |
}else{ | |
console.log(result['return']); | |
callback(null,result['return']); | |
} | |
}); | |
} | |
/** | |
* 短信发送 (注:此方法必须为已登录状态下方可操作) | |
* | |
* @param array mobiles 手机号, 如 array('159xxxxxxxx'),如果需要多个手机号群发,如 array('159xxxxxxxx','159xxxxxxx2') | |
* @param string content 短信内容 | |
* @param string sendTime 定时发送时间,格式为 yyyymmddHHiiss, 即为 年年年年月月日日时时分分秒秒,例如:20090504111010 代表2009年5月4日 11时10分10秒 | |
* 如果不需要定时发送,请为'' (默认) | |
* | |
* @param string addSerial 扩展号, 默认为 '' | |
* @param string charset 内容字符集, 默认GBK | |
* @param int priority 优先级, 默认5 | |
* @param int smsId 信息序列ID(唯一的正整数) | |
* @return int 操作结果状态码 | |
*/ | |
smsclient.sendSMS = function (mobile,content,sendTime,callback) | |
{ | |
var arr = [cfg.sn,cfg.key,sendTime,mobile,content,'','utf8',5,counter++] | |
var parem = new Parem(arr); | |
client.sendSMS(parem,function (err,result) { | |
if(err){ | |
console.error('sendSMS:',err); | |
callback(err); | |
}else{ | |
console.log(result['return']); | |
if(result['return']!=0){ | |
var error = new ServiceError(result['return']) | |
console.error('sendSMS:',error); | |
callback(error); | |
}else{ | |
callback(null,true); | |
} | |
} | |
}); | |
if(counter>99999){ | |
counter = 0; | |
} | |
} | |
}()); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment