2020.11.24 更新至1.1.8版本。升级阿里云SDK。
2020.07.27 更新至1.1.7版本。升级阿里云SDK。
2020.06.28 更新至1.1.6版本。升级阿里云SDK。
2020.01.19 更新至1.1.5版本。升级阿里云SDK。
2019.12.17 更新至1.1.4版本。升级阿里云SDK,修复readme及tip中的bug。
2019.08.01 更新至1.1.3版本。新增对多个短信模板及签名的支持。
2019.07.24 更新至1.1.2版本。将判断安装环境版本更改为最低5.0.190312。
2019.07.21 更新至1.1.0版本。新增安装系统环境判断,验证码自动生成功能。
与普通的验证码短信插件不同,本插件集成了验证码功能与通知短信功能。
通知功能作为本插件特点,可以广泛应用于快递、餐饮、金融以及其它需要发送通知短信的领域,同时也是本人另一个插件:留言板插件的短信功能所依赖。
插件说明文档:
为了能够正常使用本插件,在使用之前,你需要开通阿里云短信,并准备好各项参数。本插件使用的参数有4个,分别是:
AccessKey
AccessKeySecret
短信签名名称
模板CODE,也就是模板ID
具体参数的申请及获取,请参阅阿里云短信的相关资料。
另外,ThinkCMF 5.0.190312 以前版本的系统,不支持自动安装第三方库,因此你必须手动安装。安装方法如下:
确保你的开发环境安装了 Composer 。
确认你的电脑连接到互联网。
在 CMD 运行环境下,进入ThinkCMF文件夹,运行下边指令:
composer require alibabacloud/client
注意:如果安装时提示需要登录授权,有可能是镜像地址选择的问题,更新国内镜像地址如下即可:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
如果5.0.190312以前的系统没有正确安装阿里短信第三方库,则插件预安装失败。5.1及5.0.190312以后版本,本插件会自动安装第三方库。
将本插件复制到`public\plugins`文件夹下。
进入ThinkCMF后台管理,找到并点开【插件中心】->【插件列表】,在右侧找到《阿里云短信插件》,点击“安装”按钮,提示成功表示正确安装。如果安装失败,及有可能是因为你的 ThinkCMF版本为5.0.x,并且没有安装阿里云第三方库,请参阅准备一节安装。
如果是5.1以上版本安装失败,则有可能是插件目录没有写入权限,可以手动解压“data\aliyuncloud.zip”至插件目录:“public\plugins\crazy_sms_aliyun”下,再安装。
在上述界面安装成功后,点击“设置”按钮,会弹出设置界面,将相关参数填好保存即可。
注意,设置界面的模板有两个,分别是验证码和通知消息使用的。仅填写需要的模板即可,不必全部填写。
本插件使用的是系统钩子:`send_mobile_verification_code`。下面分别介绍两种情况下如何使用:
验证码使用
ThinkCMF规定钩子参数为`mobile`和`code`,也就是参数数组中,必须包含这两个键值。1.1.0 以上的版本中,插件可以自动生成并保存验证码。如果希望让插件自动生成并发送验证码,给`code`赋值为`0`或空即可。
钩子参数结构如下:
[ 'mobile' => '接收验证码的手机号', 'code' => '验证码', 'templateCode' => '使用的模板CODE', //可选项 'signName' => '签名' // 可选项 ]
手动生成验证码示例:
// 获取手机号逻辑 $mobile = '13900000000'; // 生成验证码 $code = '859046'; // 组织插件参数 $param = ['mobile'=>$mobile, 'code'=>$code]; // 如果不使用默认模板,可以指定模板 $param['templateCode'] = 'SMS_130579036'; // 调用插件,获取返回结果 $result = hook_one('send_mobile_verification_code', $param);
自动生成验证码示例
// 组织插件参数 $param = ['mobile' => '13900000000', 'code' => 0]; // 如果不使用默认模板,可以指定模板 $param['templateCode'] = 'SMS_130579036'; // 如果不使用默认签名,可以指定签名 $param['signName'] = '我的签名'; // 调用插件,获取返回结果 $result = hook_one('send_mobile_verification_code', $param);
对于自动生成的验证码,请使用`cmf_check_verification_code()`函数验证!在本例中验证方法如下:
// 获取用户提交的表单数据(根据实际情况灵活使用) $data = $this->request->post(); // 验证 // 本函数的第三个参数,为验证之后是否删除该验证码,默认为 false 不删除。 $check = cmf_check_verification_code($data['mobile'], $data['code'], true); if (empty($check)) { // 验证成功时,返回空字符串,因此用 empty() 判断 } else { // 验证失败时,返回错误信息字符串,可以直接输出错误信息 $this->error($check); }
通知消息短信使用
注意:由于本插件是靠判断参数健中是否有`code`,来判断短信是否为验证码短信,因此发送通知短信时,参数数组中键名不可以含有code。
钩子参数结构如下:
[ 'mobile' => '接收信息的电话号码,多个号码必须使用数组', 'templateCode' => '短信模板CODE,不指定则使用后台设置的模板CODE', // 可选项 'signName' => '短信签名,不指定则使用后台设置的签名', // 可选项 'params' => [ '键1' => '值1', '键2' => '值2' ] ]
发送通知信息时,参数数组的键名将会与你在阿里云控制台中,设置的模板中的变量名一一对应。因此,自定义开发时要注意这点。例如:
// 组织短信参数(使用默认签名与模板) $param = [ 'mobile' => ['13900000000', '13800000000'], 'params' => [ 'name' => $username, // 设置变量内容,与短信模板中的`${name}`对应 'time' => date('Y-m-d H:i:s') // 设置变量内容,与短信模板中的`${time}`对应 ] ]; // 或者使用其它配置,指定签名与模板CODE $param = [ 'mobile' => '13900000000', 'templateCode' => 'SMS_130679036', 'signName' => '新签名', 'params' => [ 'name' => $username, // 设置变量内容,与短信模板中的`${name}`对应 'time' => date('Y-m-d H:i:s') // 设置变量内容,与短信模板中的`${time}`对应 ] ]; // 调用插件,获取返回结果 $result = hook_one('send_mobile_verification_code', $param);
如果没有安装插件,或者插件安装不正确,返回结果为`false`。
插件执行正常,返回结果为数组,数组结构为:
['error' => 0, 'message' => 'success']
error:错误码。0 表示执行成功,1 表示插件执行错误,其它代码表示阿里云返回的错误码。
message:错误信息。成功时为“短信发送成功”,错误时为相应的错误提示。
错误处理代码示例:
if (false === $result) { $this->error('没有安装插件'); } if (empty($result['error'])) { // 发送成功逻辑 } else { // 发送失败逻辑 }
1.1.8
2020.11.24
- 升级阿里云SDK,版本为1.5.29
- 更新其它依赖至最新版本
1.1.7
2020.07.27
- 升级阿里云SDK,版本为1.5.27
- 更新其它依赖至最新版本
1.1.6
2020.06.28
- 升级阿里云SDK,版本为1.5.24
- 更新其它依赖至最新版本
1.1.5
2020.01.19
- 升级阿里云SDK,版本为1.5.20
- 更新其它依赖至最新版本
1.1.4
2019.12.17
- 升级阿里云SDK,版本为1.5.19
- 更新其它依赖至最新版本
- 修正说明文件中的错误
- 修复AccessKey说明中,链接在本页打开的bug
---
1.1.3
2019.08.01
- 调整数据结构,模板参数单独处理
- 新增对多模板的支持
- 升级阿里云SDK,版本为1.5.14
---
1.1.2
2019.07.24
- 更新自动安装阿里云SDK的逻辑判断,最低版本为 5.0.190312
---
1.1.1
2019.07.22
- 验证码返回值中,增加`expire_time`键值,以兼容ThinkCMF用户验证
---
1.1.0
2019.07.21
重构代码逻辑,让代码更简洁,为未来功能扩展打下基础
更新验证码部分,支持由插件生成验证码并发送
更新安装逻辑,如果ThinkCMF版本为5.0,并且系统没有安装阿里云SDK,插件无法安装
---
1.0.0
2019.07.15 正式版发布!
ThinkCMF模板插件交流群:550851374 ,领取阿里云1000通用代金券