阿里云验证码、通知短信通用版


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 以前版本的系统,不支持自动安装第三方库,因此你必须手动安装。安装方法如下:

  1. 确保你的开发环境安装了 Composer 。

  2. 确认你的电脑连接到互联网。

  3. 在 CMD 运行环境下,进入ThinkCMF文件夹,运行下边指令:

composer require alibabacloud/client

注意:如果安装时提示需要登录授权,有可能是镜像地址选择的问题,更新国内镜像地址如下即可:

composer config -g repo.packagist composer https://packagist.phpcomposer.com

如果5.0.190312以前的系统没有正确安装阿里短信第三方库,则插件预安装失败。5.1及5.0.190312以后版本,本插件会自动安装第三方库。

安装

  1. 将本插件复制到`public\plugins`文件夹下。

  2. 进入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通用代金券

评论

暂时关闭,稍后恢复~
文档请看10遍以上!有问题可加QQ群!
发布插件

七牛专享优惠码

507670e8

ThinkCMF教程


ThinkCMF 8.0.0发布啦!祝大家节日快乐! 立即体验!