260 lines
9.0 KiB
Markdown
Executable File
260 lines
9.0 KiB
Markdown
Executable File
# ThinkPHP6集成短信发送平台
|
||
|
||
#### 介绍
|
||
本项目是集成了各大云服务厂商的短信业务平台,支持ThinkPHP5.0、ThinkPHP5.1和ThinkPHP6.0,由宁波晟嘉网络科技有限公司维护,目前支持阿里云、腾讯云、七牛云、又拍云、Ucloud和华为云,您如果有其他厂商的集成需求,请通过邮件联系作者提交需求。
|
||
|
||
#### 安装教程
|
||
|
||
使用 `composer require singka/singka-sms` 命令行安装即可。
|
||
|
||
安装完成后会自动生成 `config/sms.php` 配置文件,内容如下:
|
||
|
||
```php
|
||
<?php
|
||
// +----------------------------------------------------------------------
|
||
// | 胜家云 [ SingKa Cloud ]
|
||
// +----------------------------------------------------------------------
|
||
// | Copyright (c) 2016~2020 https://www.singka.net All rights reserved.
|
||
// +----------------------------------------------------------------------
|
||
// | 宁波晟嘉网络科技有限公司
|
||
// +----------------------------------------------------------------------
|
||
// | Author: ShyComet <shycomet@qq.com>
|
||
// +----------------------------------------------------------------------
|
||
return [
|
||
'aliyun' => [
|
||
'version' => '2017-05-25',
|
||
'host' => 'dysmsapi.aliyuncs.com',
|
||
'scheme' => 'http',
|
||
'region_id' => 'cn-hangzhou',
|
||
'access_key' => '',
|
||
'access_secret' => '',
|
||
'sign_name' => '',
|
||
'actions' => [
|
||
'register' => [
|
||
'actions_name' => '注册验证',
|
||
'template_id' => 'SMS_53115055',
|
||
],
|
||
'login' => [
|
||
'actions_name' => '登录验证',
|
||
'template_id' => 'SMS_53115057',
|
||
],
|
||
'changePassword' => [
|
||
'actions_name' => '修改密码',
|
||
'template_id' => 'SMS_53115053',
|
||
],
|
||
'changeUserinfo' => [
|
||
'actions_name' => '变更信息',
|
||
'template_id' => 'SMS_53115052',
|
||
],
|
||
],
|
||
],
|
||
'ucloud' => [
|
||
'public_key' => '',
|
||
'private_key' => '',
|
||
'project_id' => '',
|
||
'base_url' => 'https://api.ucloud.cn',
|
||
'sign_name' => '',
|
||
'actions' => [
|
||
'register' => [
|
||
'actions_name' => '注册验证',
|
||
'template_id' => 'UTA1910164E29F4',
|
||
],
|
||
'login' => [
|
||
'actions_name' => '登录验证',
|
||
'template_id' => 'UTA1910164E29F4',
|
||
],
|
||
'changePassword' => [
|
||
'actions_name' => '修改密码',
|
||
'template_id' => 'UTA1910164E29F4',
|
||
],
|
||
'changeUserinfo' => [
|
||
'actions_name' => '变更信息',
|
||
'template_id' => 'UTA1910164E29F4',
|
||
],
|
||
],
|
||
],
|
||
'qcloud' => [
|
||
'appid' => '',
|
||
'appkey' => '',
|
||
'sign_name' => '',
|
||
'actions' => [
|
||
'register' => [
|
||
'actions_name' => '注册验证',
|
||
'template_id' => '566198',
|
||
],
|
||
'login' => [
|
||
'actions_name' => '登录验证',
|
||
'template_id' => '566197',
|
||
],
|
||
'changePassword' => [
|
||
'actions_name' => '修改密码',
|
||
'template_id' => '566199',
|
||
],
|
||
'changeUserinfo' => [
|
||
'actions_name' => '变更信息',
|
||
'template_id' => '566200',
|
||
],
|
||
],
|
||
],
|
||
'qiniu' => [
|
||
'AccessKey' => '',
|
||
'SecretKey' => '',
|
||
'actions' => [
|
||
'register' => [
|
||
'actions_name' => '注册验证',
|
||
'template_id' => '1246849772845797376',
|
||
],
|
||
'login' => [
|
||
'actions_name' => '登录验证',
|
||
'template_id' => '1246849654881001472',
|
||
],
|
||
'changePassword' => [
|
||
'actions_name' => '修改密码',
|
||
'template_id' => '1246849964902977536',
|
||
],
|
||
'changeUserinfo' => [
|
||
'actions_name' => '变更信息',
|
||
'template_id' => '1246849860733243392',
|
||
],
|
||
],
|
||
],
|
||
'upyun' => [
|
||
'id' => '',
|
||
'token' => '',
|
||
'apiurl' => '',
|
||
'actions' => [
|
||
'register' => [
|
||
'actions_name' => '注册验证',
|
||
'template_id' => '2591',
|
||
],
|
||
'login' => [
|
||
'actions_name' => '登录验证',
|
||
'template_id' => '2592',
|
||
],
|
||
'changePassword' => [
|
||
'actions_name' => '修改密码',
|
||
'template_id' => '2590',
|
||
],
|
||
'changeUserinfo' => [
|
||
'actions_name' => '变更信息',
|
||
'template_id' => '2589',
|
||
],
|
||
],
|
||
],
|
||
'huawei' => [
|
||
'url' => '',
|
||
'appKey' => '',
|
||
'appSecret' => '',
|
||
'sender' => '',
|
||
'signature' => '',
|
||
'statusCallback' => '',
|
||
'actions' => [
|
||
'register' => [
|
||
'actions_name' => '注册验证',
|
||
'template_id' => '2591',
|
||
],
|
||
'login' => [
|
||
'actions_name' => '登录验证',
|
||
'template_id' => '2592',
|
||
],
|
||
'changePassword' => [
|
||
'actions_name' => '修改密码',
|
||
'template_id' => '2590',
|
||
],
|
||
'changeUserinfo' => [
|
||
'actions_name' => '变更信息',
|
||
'template_id' => '2589',
|
||
],
|
||
],
|
||
]
|
||
];
|
||
```
|
||
|
||
#### 使用示例(基于ThinkPHP6.0)
|
||
|
||
|
||
```php
|
||
<?php
|
||
// +----------------------------------------------------------------------
|
||
// | 胜家云 [ SingKa Cloud ]
|
||
// +----------------------------------------------------------------------
|
||
// | Copyright (c) 2016~2020 https://www.singka.net All rights reserved.
|
||
// +----------------------------------------------------------------------
|
||
// | 宁波晟嘉网络科技有限公司
|
||
// +----------------------------------------------------------------------
|
||
// | Author: ShyComet <shycomet@qq.com>
|
||
// +----------------------------------------------------------------------
|
||
namespace app\home\controller;
|
||
|
||
use SingKa\Sms\SkSms;
|
||
use think\facade\Config;
|
||
|
||
class Index
|
||
{
|
||
/**
|
||
* 短信发送示例
|
||
*
|
||
* @mobile 短信发送对象手机号码
|
||
* @action 短信发送场景,会自动传入短信模板
|
||
* @parme 短信内容数组
|
||
*/
|
||
public function sendSms($mobile, $action, $parme)
|
||
{
|
||
//$this->SmsDefaultDriver是从数据库中读取的短信默认驱动
|
||
$SmsDefaultDriver = $this->SmsDefaultDriver ?: 'aliyun';
|
||
//$this->SmsConfig是从数据库中读取的短信配置
|
||
$config = $this->SmsConfig ?: Config::get('sms.'.$SmsDefaultDriver);
|
||
$sms = new sksms($SmsDefaultDriver, $config);//传入短信驱动和配置信息
|
||
//判断短信发送驱动,非阿里云和七牛云,需将内容数组主键序号化
|
||
if ($this->SmsDefaultDriver == 'aliyun') {
|
||
$result = $sms->$action($mobile, $parme);
|
||
} elseif ($this->SmsDefaultDriver == 'qiniu') {
|
||
$result = $sms->$action([$mobile], $parme);
|
||
} elseif ($this->SmsDefaultDriver == 'upyun') {
|
||
$result = $sms->$action($mobile, implode('|', $this->restoreArray($parme)));
|
||
} else {
|
||
$result = $sms->$action($mobile, $this->restoreArray($parme));
|
||
}
|
||
if ($result['code'] == 200) {
|
||
$data['code'] = 200;
|
||
$data['msg'] = '短信发送成功';
|
||
} else {
|
||
$data['code'] = $result['code'];
|
||
$data['msg'] = $result['msg'];
|
||
}
|
||
return $data;
|
||
}
|
||
|
||
/**
|
||
* 数组主键序号化
|
||
*
|
||
* @arr 需要转换的数组
|
||
*/
|
||
public function restoreArray($arr)
|
||
{
|
||
if (!is_array($arr)){
|
||
return $arr;
|
||
}
|
||
$c = 0;
|
||
$new = [];
|
||
foreach ($arr as $key => $value) {
|
||
$new[$c] = $value;
|
||
$c++;
|
||
}
|
||
return $new;
|
||
}
|
||
}
|
||
```
|
||
|
||
返回的$result['code']的值等于200,说明短信发送成功,否则可以根据错误码和错误提示去各个云服务查找相关信息。
|
||
|
||
#### 其他说明
|
||
|
||
返回的相关错误码请查阅:[Ucloud](https://docs.ucloud.cn/management_monitor/usms/error_code)
|
||
[阿里云](https://help.aliyun.com/document_detail/101346.html?spm=a2c4g.11186623.6.621.31fd2246LCMXWw)
|
||
[腾讯云](https://cloud.tencent.com/document/product/382/3771)
|
||
[七牛云](https://developer.qiniu.com/sms/api/5849/sms-error-code)
|
||
[又拍云](https://help.upyun.com/knowledge-base/sms-api-error-code/)
|
||
[华为云](https://support.huaweicloud.com/devg-msgsms/sms_04_0009.html)
|
||
|