ThinkCMF基于ThinkPHP开发,同时支持PHP-FPM和Swoole双模式;支持大数据量和多种缓存方式;数据库读写分离和集群部署。是一款非常不错的系统,小编今天就以替换短信接口为例带大家进行二次开发,我们使用的短信接口是我们短信宝短信群发平台的短信接口,我们短信宝短信群发平台非常稳定,发送速度快,注册就送测试短信,推荐大家使用
插件的目录结构如下:
├─smsbao_sms插件目录
│  ├─config.php           短信配置文件
│  ├─SmsbaoSmsPlugin.php 短信发送核心文件
下面具体给大家说一下每个文件的作用及代码,config.php是插件的短信配置文件 代码如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php return[    'sms_user'=> [// 在后台插件配置表单中的键名 ,会是config[text]        'title'=> '短信宝账号', // 表单的label标题        'type'=> 'text',// 表单的类型:text,password,textarea,checkbox,radio,select等        'value'=> '',// 表单的默认值        'tip'=> '主帐号,对应官网短信宝账号'//表单的帮助提示    ],    'sms_pwd'=> [// 在后台插件配置表单中的键名 ,会是config[text]        'title'=> '短信宝密码', // 表单的label标题        'type'=> 'password',// 表单的类型:text,password,textarea,checkbox,radio,select等        'value'=> '',// 表单的默认值        'tip'=> '对应官网短信宝登录密码'//表单的帮助提示    ],    'sms_sign'=> [// 在后台插件配置表单中的键名 ,会是config[text]        'title'=> '短信宝签名', // 表单的label标题        'type'=> 'text',// 表单的类型:text,password,textarea,checkbox,radio,select等        'value'=> '',// 表单的默认值        'tip'=> '对应短信宝官网申请的签名'//表单的帮助提示    ],    'template_id'=> [// 在后台插件配置表单中的键名 ,会是config[text]        'title'=> '模板', // 表单的label标题        'type'=> 'text',// 表单的类型:text,password,textarea,checkbox,radio,select等        'value'=> '您的验证码是$code。如非本人操作,请忽略本短信',// 表单的默认值        'tip'=> '模板,填写短信宝后台申请的模板'//表单的帮助提示    ],]; | 
SmsbaoSmsPlugin.php 短信发送核心文件 实现了原有sendMobileVerificationCode钩子函数 代码如下
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | <?phpnamespace plugins\smsbao_sms;use cmf\lib\Plugin;class SmsbaoSmsPlugin extends Plugin{    public $info = [        'name'=> 'SmsbaoSms',        'title'=> '短信宝-短信插件',        'description'=> '短信宝-短信插件',        'status'=> 1,        'author'=> 'smsbao',        'version'=> '1.0'    ];    public $hasAdmin = 0;//插件是否有后台管理界面    // 插件安装    public functioninstall()    {        returntrue;//安装成功返回true,失败false    }    // 插件卸载    public functionuninstall()    {        returntrue;//卸载成功返回true,失败false    }    //实现钩子方法    public functionsendMobileVerificationCode($param)    {        $mobile = $param['mobile'];//手机号        $code = $param['code'];//验证码        $config = $this->getConfig();        $statusStr = array(            "0"=> "短信发送成功",            "-1"=> "参数不全",            "-2"=> "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",            "30"=> "密码错误",            "40"=> "账号不存在",            "41"=> "余额不足",            "42"=> "帐户已过期",            "43"=> "IP地址限制",            "50"=> "内容含有敏感词"        );        $user = $config['sms_user']; //短信平台帐号        $pass = md5($config['sms_pwd']); //短信平台密码        $content= '【'.$config['sms_sign'].'】'.str_replace('$code',$code,$config['template_id']);//要发送的短信内容        $phone = $mobile;//要发送短信的手机号码        $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);        $result = file_get_contents($sendurl) ;        if($result == '0'){//发送成功            $result = [                'error'=>0,                'message'=>$statusStr[$result]            ];        }else{            $result = [                'error'=>-1,                'message'=>$statusStr[$result]            ];        }        return$result;    }} | 
经过上面的替换,短信宝的短信平台已经替换成功了,可以正常使用了。进行测试发送:
报备一下短信宝的VIP模板,这样就可以走短信宝的优质通道了,即便遇到敏感文字我们都不会人工审核,短信内容3~5秒就可送达。
另外:我们已经开发好完整的ThinkCMFV8.0短信宝插件,点击此链接 下载及查看安装流
最新更新
电商类
CMS类
微信类