我的作品 您现在的位置是:首页 > 我的作品

ThinkCMF 5 腾讯云短信插件

来源:惠达浪原创 发布时间:2019-07-19 最后更新:2019-07-22 4489已围观

摘要在应用开发过程中,经常会用到短信功能,最常见就是验证码了,当然还有通知短信。本插件基于腾讯云短信,集二者于一体,是验证码、通知集成版。

使用插件

在需要使用验证码的地方,调用验证码钩子。本插件使用的是系统钩子:send_mobile_verification_code。几种情况示例如下:

普通验证码使用

ThinkCMF规定钩子参数为`mobile`和`code`,也就是参数数组中,必须包含这两个键值。因此使用方法如下:

// 获取手机号逻辑
$mobile = '13900000000';

// 生成验证码逻辑
$code = '859046';

// 组织插件参数
$param = ['mobile'=>$mobile, 'code'=>$code];

// 调用插件,获取返回结果
$result = hook_one('send_mobile_verification_code', $param);

自动生成验证码的示例

// 组织插件参数
$param = ['mobile' => '13900000000', 'code' => 0]; //或者'code'=>''

// 调用插件,获取返回结果
$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键名,其它参数将会按模板设置中的模板参数名对应。因此,开发时要注意,不要漏掉参数。例如:

// 生成调用参数,参数只要包含后台设置的参数名即可,插件会按后台设置的顺序进行匹配
$param = [
    'mobile'  => ['13900000000', '13800000000'], // 接收信息的电话号码,多个电话时必须用数组
    'time`    => date('Y-m-d H:i:s'), // time是模板参数之一,后台设置的
    'sender'  => $username, // sender是模板参数之一,后台设置的
    'contact' => $phoneNumber,  // contact是模板参数之一,后台设置的
];
// 调用插件,获取返回结果
$result = hook_one('send_mobile_verification_code', $param);

返回结果说明

  • 如果没有安装插件,或者插件安装不正确,返回结果为`false`。

  • 插件执行正常,返回结果为数组,数组结构为:

['error' => 1036, 'message' => '单个模板变量字符数超过12个']

error:错误码。0 表示执行成功,1 表示插件执行错误,其它代码表示腾讯云返回的错误码。  

message:错误信息。成功时为“短信发送成功”,错误时为相应的错误提示。

错误处理代码示例:

if  (false === $result) {
    $this->error('没有安装插件');
}

if (empty($result['error'])) {
    // 发送成功逻辑
} else {
    // 发送失败逻辑
}

更新

1.1.0

更新时间:2019.07.21

- 新增自动生成短信验证码功能

- 重构服务层逻辑,优化代码


1.0.0

更新时间:2019.07.16

正式版发布!

- 内置腾讯短信官方SDK,不必单独安装。

很赞哦! (452)


站点信息

  • 网站平台ThinkCMF 5.1.5
  • PHP版本:7.3.31
  • QQ交流群: 惠达浪技术交流