zoukankan      html  css  js  c++  java
  • 方维团购系统整合云短信网短信平台,方维系统整合短信平台

    方维团购系统默认的短信平台是翼锋短信平台 企信通短信平台 ,现在要添加一个云短信平台;

    整合后的云短信平台的代码如下:

    <?php
    /*--------------------------------
     
    //add by 方维系统程序员 ,wangtongphp , QQ:1006440989 
    INSERT INTO `fanwe_sms` VALUES ('22', 'Yun', '云短信网', '', 'http://http.yunsms.cn/tx/', '****', '****', '', '0');
    --------------------------------*/
    include_once("Sms.class.php");
    
    class YunSms implements Sms
    {
    
        public $message = "";
        public $smsInfo;
        
        public $statusStr = array( 
            "100" => "发送成功",
            "101" => "验证失败",
            "102" => "短信不足",
            "103" => "操作失败",
            "104" => "非法字符",
            "105" => "内容过多",
            "106" => "号码过多",
            "107" => "频率过快",
            "108" => "号码内容空",
            "109" => "账号冻结",
            "110" => "禁止频繁单条发送",
            "111" => "系统暂定发送",
            "112" => "有错误号码",
            "113" => "定时时间不对",
            "114" => "账号被锁,10分钟后登录",
            "115" => "连接失败",
            "116" => "禁止接口发送",
            "117" => "系统升级",
        );
        
        public function __construct($smsInfo = '')
        {     
            if(!empty($smsInfo))
            {
                set_time_limit(0);
                
                $this->smsInfo = $smsInfo;
            }
        }
        
        public function sendSMS($mobiles=array(),$content,$sendTime='')
        {
            $mobileLen = 50;
            $mobileList = array_chunk($mobiles,$mobileLen);
            
            $content = a_utf8ToGB($content);
            $contentLen = mb_strlen($content,"GBK");
            $smsTotalCount = ceil($contentLen / 70) * count($mobiles);        
            $successNum = 0;
            $code = '';
            foreach($mobileList as $mobileItem)
            {
                $mobile = implode(",",$mobileItem);
                //$http = 'http://http.c123.com/tx/';
                $http = $this->smsInfo['server_url'];
                $data = array
                (
                    'uid'=>$this->smsInfo['user_name'],                    //用户账号
                    'pwd'=>strtolower(md5($this->smsInfo['password'])),    //MD5位32密码
                    //'pwd'=>$this->smsInfo['password'],    //MD5位32密码
                    'mobile'=>$mobile,                //号码
                    'content'=>urlencode($content),            //内容
                    //'encode'=>'utf8'
                );                
                    
                $code= trim($this->postSMS($http,$data));            //POST方式提交
                    
                $smsLog['send_content'] = a_gbToUtf8($content);;
                $smsLog['action_message'] = $this->statusStr[$code];
                $sendCount = count($mobileItem);
                    
                if($code == "100")
                {
                    $smsLog['success_mobiles'] = $mobile;
                    $smsLog['fail_mobiles'] = "";
                    $smsLog['success_count'] = $sendCount;
                    $smsLog['fail_count'] = 0;
                        
                    $smsLog['expense_count'] = ceil($contentLen / 70) * $sendCount;
    
                    $successNum += $sendCount;
                }
                else
                {
                    $smsLog['success_mobiles'] = "";
                    $smsLog['fail_mobiles'] = $mobile;
                    $smsLog['success_count'] = 0;
                    $smsLog['fail_count'] = $sendCount;
                    $smsLog['expense_count'] = 0;
                }
                    
                $smsLog['send_time'] = a_gmtTime();
                    
                if(intval(a_fanweC('SMS_SEND_LOG')) == 1)
                {
                    $sql = "insert into ".$GLOBALS['db_config']['DB_PREFIX']."sms_send_log (class_name,send_content,success_count,success_mobiles,fail_mobiles,expense_count,fail_count,action_message,send_time) values('C123','".$smsLog['send_content']."','".$smsLog['success_count']."','".$smsLog['success_mobiles']."','".$smsLog['fail_mobiles']."','".$smsLog['expense_count']."','".$smsLog['fail_count']."','".$smsLog['action_message']."','".$smsLog['send_time']."')";
                        
                    $GLOBALS['db']->query($sql);
                }
            }
            
            if(($code == "100" && count($mobiles) == 1) || ($smsTotalCount == $successNum))
            {
                $this->message ="成功发送短信【".$content."】,到手机".implode(",",$mobiles);
                return 1;
            }
            else
            {
                $this->message = $smsTotalCount."条短信中,有".($smsTotalCount - $successNum)."条未成功发送到手机".implode(",",$mobiles);
                return 0;            
            }
        }
        
        function postSMS($url,$data='')
        {
             
            $row = parse_url($url);
            $host = $row['host'];
            $port = $row['port'] ? $row['port']:80;
            $file = $row['path'];
            while (list($k,$v) = each($data)) 
            {
                $post .= rawurlencode($k)."=".rawurlencode($v)."&";    //转URL标准码
            }
            $post = substr( $post , 0 , -1 );
            $len = strlen($post);
            $fp = @fsockopen( $host ,$port, $errno, $errstr, 10);
            if (!$fp) {
                return "$errstr ($errno)
    ";
            } else {
                $receive = '';
                $out = "POST $file HTTP/1.1
    ";
                $out .= "Host: $host
    ";
                $out .= "Content-type: application/x-www-form-urlencoded
    ";
                $out .= "Connection: Close
    ";
                $out .= "Content-Length: $len
    
    ";
                $out .= $post;        
                fwrite($fp, $out);
                while (!feof($fp)) {
                    $receive .= fgets($fp, 128);
                }
                fclose($fp);
                $receive = explode("
    
    ",$receive);
                unset($receive[0]);
                 
                return implode("",$receive);
            }
        }    
    }
    ?>

     版权出自:http://www.cnblogs.com/wangtongphp/p/3287216.html ;博主QQ:1006440989

  • 相关阅读:
    第六周学习心得
    syncnavigator关于win10、win8系统无法注册机进行激活的问题
    使用SyncNavigator轻松实现数据库异地同步、断点续传、异构同步
    数据库同步的正确打开方式
    使用SyncNavigator实现数据库异地同步。
    聊聊MySQL主从数据库同步的那些事儿
    高并发架构系列:数据库主从同步的3种一致性方案实现,及优劣比较
    MySQL binlog数据库同步技术总结
    数据库同步的两种方式
    某省肿瘤医院 — 数据备份 + 数据库同步
  • 原文地址:https://www.cnblogs.com/wangtongphp/p/3287216.html
Copyright © 2011-2022 走看看