阿里云短信服务验证码封装 v1.0.1【flc/dysms】
2023-03-07 09:42:10 时间
1.引入 composr 包
composer require flc/dysms
2. 阿里云短信服务验证码封装类 v1.0.1
<?php
// 本文件放入TP6.0的extend目录下 extend/Dysms.php
use Flc\Dysms\Client;
use Flc\Dysms\Request\SendSms;
// 1.设置配置参数
Dysms::setConfig([
'signName' => 'it社区',
'templateCode' => 'SMS_17929xxxx',
'accessKeyId' => 'LTAI4GJ6iaE7ij5YiGRgxxxx',
'accessKeySecret' => 'uljdxDoi8ocXNscPriqwl5xxxxx',
]);
// 2.查看配置参数
//var_dump(Dysms::showConfig());
// 3.发送验证码
// $arr['result'] true 发送成功 msg 提示信息 verCode 发送的短信验证码
// ['result' => true, 'msg' => '发送成功', 'verCode' => 370449]
// $arr['result'] false 发送失败 msg 错误信息 code 错误码
// ['result' => false, 'msg' => '错误信息', 'code' => 'isv.BUSINESS_LIMIT_CONTROL']
$arr = Dysms::sendSms(1503784xxxx);
var_dump($arr);
/**
* 阿里大于短信验证码封装
* composer require flc/dysms
*
* @author liang <23426945@qq.com>
* @version 1.0.1
* @homepage www.itqaq.com 辰风沐阳
* @datetime 2020-08-04 last modify time
*
* 阿里云短信服务默认流控
* 同一个签名同一个手机号短信验证码 1条/分钟
*/
class Dysms
{
private static $accessKeyId;
private static $accessKeySecret;
private static $signName;
private static $templateCode;
/**
* 私有化构造方法
* 禁止类在外部被实例化
*/
private function __construct(){}
/**
* 设定配置参数
*/
public static function setConfig($config)
{
// accessKeyId
self::$accessKeyId = $config['accessKeyId'];
// accessKeySecret
self::$accessKeySecret = $config['accessKeySecret'];
// 短信签名
self::$signName = $config['signName'];
// 短信模板ID
self::$templateCode = $config['templateCode'];
}
/**
* 查看配置参数
* Dysms::showConfig()
*/
public static function showConfig()
{
return [
'accessKeyId' => self::$accessKeyId,
'accessKeySecret' => self::$accessKeySecret,
'signName' => self::$signName,
'templateCode' => self::$templateCode,
];
}
/**
* 传入手机号发送短信验证码
* @param int $phoneNumbers 手机号
* @return array ['result' => true, 'msg' => '发送成功', 'verCode' => 370449]
*/
public static function sendSms($phoneNumbers)
{
$client = new Client([
'accessKeyId' => self::$accessKeyId,
'accessKeySecret' => self::$accessKeySecret,
]);
$sendSms = new SendSms;
$verCode = mt_rand(100000, 999999);
$sendSms->setPhoneNumbers($phoneNumbers);
$sendSms->setSignName(self::$signName);
$sendSms->setTemplateCode(self::$templateCode);
$sendSms->setTemplateParam(['code' => $verCode]);
$sendSms->setOutId('demo');
// 返回标准类对象 发送失败
// object(stdClass)#59 (3) {
// ["Message"]=>
// string(30) "触发小时级流控Permits:5"
// ["RequestId"]=>
// string(36) "B76061EE-2D9A-4E46-89B9-2418E8A5555E"
// ["Code"]=>
// string(26) "isv.BUSINESS_LIMIT_CONTROL"
// }
$result = $client->execute($sendSms);
// 返回结果
// array(2) {
// ["result"]=>
// bool(true)
// ["msg"]=>
// string(12) "发送成功"
// }
// array(3) {
// ["result"]=>
// bool(false)
// ["code"]=>
// string(26) "isv.BUSINESS_LIMIT_CONTROL"
// ["msg"]=>
// string(30) "触发小时级流控Permits:5"
// }
if ($result->Code === 'OK') {
return [
'result' => true,
'msg' => '发送成功',
'verCode' => $verCode
];
} else {
return [
'result' => false,
'code' => $result->Code,
'msg' => self::errorMsg($result->Code, $result->Message)
];
}
}
/**
* 错误信息code转换中文提示
*/
private static function errorMsg($code, $msg)
{
$errorMsg = [
'isv.ACCOUNT_NOT_EXISTS' => '使用了错误的账户名称或AK',
'isv.ACCOUNT_ABNORMAL' => '账户异常,请确认账号信息',
'isv.MOBILE_NUMBER_ILLEGAL'
相关文章
- 发现 Linux SpaceFM 文件管理器的威力
- 夯实数据智能底座 共筑数字经济发展“新基石”
- 五分钟教你使用console.log发布公司的招聘信息
- 微软发布 Windows 11 Beta 预览版 Build 22621.1250 和 22623.1250 (KB5023008)
- Windows 11 学院:在 Windows 11 Build 25290 上如何为文件管理器启用标签页拖拽支持
- 微软Windows 11 Dev 预览版 Build 25290 发布:带来新的开始菜单提醒角标
- 微软正用全屏通知提醒 Windows 10 用户免费升级 Windows 11,要点击 5 次才能退出
- Linux Mint 21.2 将于 6 月发布:改进登录屏幕,优化 Pix 图像管理程序等等
- 字节面试也会问SPI机制?
- 微软正式停售 Windows 10 产品密钥 / 许可证:继续提供 ISO 镜像下载,推荐用户升级 Windows 11
- 用复古电脑程序 Toy CPU 学习低级编程
- Windows 11 新功能泄露:现代音量合成器、实验工具和新的文件管理器
- 微软 Windows 11 文件资源管理器全新设计曝光:UI 迎来大修,整合 Microsoft 365
- 对比Pandas,学习PySpark大数据处理
- 微软宣布为Windows 11 21H2设备开启自动更新到22H2版本
- 互联网都在说降本增效,小红书技术团队是怎么做的?
- 微软将继续提供 Windows 10 ISO 镜像下载,即将停售产品密钥 / 许可证
- 微软宣布为Windows 11 21H2 设备开启自动更新到 22H2 版本
- 面试突击:Properties和Yml有什么区别?
- 微软 Windows 11 Beta 预览版 22621.1245 和 22623.1245 (KB5022358) 发布