www.gusucode.com > ShopEx481 & PHPWind 整合版码程序 > plugins/messenger/sms/messenger.sms.php

    <?php
class messenger_sms{
	
	var $name = '手机短信'; //名称
	var $iconclass="sysiconBtn sms"; //操作区图标
	var $name_show = '发短信'; //列表页操作区名称
	var $version='$ver$'; //版本
	var $updateUrl=false;  //新版本检查地址
	var $isHtml = false; //是否html消息
	var $hasTitle = false; //是否有标题
//	var $maxtitlelength =300; //最多字符
	var $maxtime = 300; //发送超时时间 ,单位:秒
	var $maxbodylength =300; //最多字符
	var $allowMultiTarget=false; //是否允许多目标
//  var $targetSplit = ','; //多目标分隔符
	var $withoutQueue = false;
	var $dataname='mobile';
	var $sms_service_ip='124.74.193.222';
	var $sms_service='http://idx.sms.shopex.cn/service.php';


	/**
	 * send 
	 * 必有方法,发送时调用
	 *
	 * config参数为getOptions取得的所有项的配置结果
	 * 
	 * @param mixed $to 
	 * @param mixed $message 
	 * @param mixed $config 
	 * @access public
	 * @return void
	 */
	function messenger_sms(){
		$this->system = &$GLOBALS['system'];
		$this->net=$this->system->network();

	}
	function send($to,$message,$config){
		/**
		$server_url		申请的服务器地址
		$smsid			smsid
		$ex_type		消费类型
		$mobile			需要发送的手机
		$active			发送的激活码,即发送信息
		$token			手机私钥
		**/
		if(!$this->checkL()){
			return 'license error';
		}
		$result=$this->apply($this->sms_service,$this->version);
		if(!$result){
			return  'you must to active the code';
		}
		$this->content = $message;
		$this->mobile = $to;
		$result=$this->send_info($result,$this->ex_type,$this->version);
		$msg=$this->msg($result);
		return $msg;
	}
	function checkL(){
		if(!$this->getCerti() || !$this->getToken()){
			return false;
		}else{
			return true;
		}
	}
	function apply(){
		/**
		$certi_id	license_id
		$token		手机私钥		
		**/
		$submit_str['certi_id'] = $this->getCerti();
		$submit_str['ac'] = md5($this->getCerti().$this->getToken());
		$submit_str['version']=$this->version;
		$this->net->submit($this->sms_service,$submit_str);
		$results = $this->net->results;
		$result = explode('|',$results);
		if($result[0] == '0'){
			return $result[1];
		}
		if($result[0] == '1'){
			return false;
		}
		if($result[0] == '2'){
			return false;
		}
	}

	function send_info($url,$ex_type,$version){
		/**
		$url		申请的服务器地址
		$ex_type		消费类型
		$mobile			需要发送的手机
		**/
		$send_arr =	Array(
			0 => Array(
					0 => $this->mobile,		//发送的手机号码
					1 => $this->content,	//发送信息
					2 => 'Now'				//发送的时间
				)
		);
		$send_str['certi_id'] = $this->getCerti();			
		$send_str['ex_type'] = $ex_type;
		$send_str['content'] = json_encode($send_arr);
		$send_str['encoding'] = 'utf8';
		$send_str['version'] = $version;
		$send_str['ac'] = md5($send_str['certi_id'].$send_str['ex_type'].$send_str['content'].$send_str['encoding'].$this->getToken());
		$this->net->submit($url,$send_str);
		$results = $this->net->results;
		$result = explode('|' ,$results);
		if($result[0] == 'true'){
			//发送成功
			return 200;
		}elseif($result[0] == 'false'){
			//发送失败
			return $result[1];
		}
	}

	function getCerti(){
		if($this->system->getConf('certificate.id')){
			return $this->system->getConf('certificate.id');
		}else{
			return false;
		}
	}
	function getToken(){
		if($this->system->getConf('certificate.token')){
			return $this->system->getConf('certificate.token');
		}else{
			return false;
		}
	}
	function msg($index){
		$aMsg=array(
			'200'=>'true',
			'1'=>'Security check can not pass!',
			'2'=>'Phone number format is not correct.',
			'3'=>'Lack of content or content coding error.',
			'4'=>'Lack of balance.',
			'5'=>'Information packets over limited.',
			'6'=>'You must recharge before write message!',
			'901'=>'Write sms_log error!',
			'902'=>'Write sms_API error!'
			);
		return $aMsg[$index];
	}

	/**
	 * ready 
	 * 可选方法,准备发送时触发
	 * 
	 * @param mixed $config 
	 * @access public
	 * @return void
	 */
	function ready($config){
		$this->url = $this->apply($this->sms_service,$this->version);
		return $this->url;
	}

	/**
	 * finish 
	 * 可选方法,结束发送时触发
	 * 
	 * @param mixed $config 
	 * @access public
	 * @return void
	 */
	function finish($config){

	}

	function extraVars(){
		if(!$this->getCerti()){
			$certi_id='error';
		}else{
			$certi_id=$this->getCerti();
		}
		$sess_id = $this->system->session->sess_id;
		$auth = mktime();
		$ac = md5($certi_id.'SHOPEX_SMS'.$auth);
		$url = 'http://service.shopex.cn/sms/index.php?certificate_id='.$certi_id.'&sess_id='.$sess_id.'&auth='.$auth.'&ac='.$ac;
		return array('outgoingOptions'=>$url);
	}
}
?>