当前位置:首页 > 编程技术 > 正文内容

阿里云短信服务验证码封装 v1.0.1【flc/dysms】

yc8882年前 (2023-01-28)编程技术286

阿里云短信服务验证码封装 v1.0.1【flc/dysms】

1.引入 composr 包


  1. composer require flc/dysms

2. 阿里云短信服务验证码封装类 v1.0.1


  1. <?php
  2. // 本文件放入TP6.0的extend目录下 extend/Dysms.php
  3. use Flc\Dysms\Client;
  4. use Flc\Dysms\Request\SendSms;
  5. // 1.设置配置参数
  6. Dysms::setConfig([
  7. 'signName' => 'it社区',
  8. 'templateCode' => 'SMS_17929xxxx',
  9. 'accessKeyId' => 'LTAI4GJ6iaE7ij5YiGRgxxxx',
  10. 'accessKeySecret' => 'uljdxDoi8ocXNscPriqwl5xxxxx',
  11. ]);
  12. // 2.查看配置参数
  13. //var_dump(Dysms::showConfig());
  14. // 3.发送验证码
  15. // $arr['result'] true 发送成功 msg 提示信息 verCode 发送的短信验证码
  16. // ['result' => true, 'msg' => '发送成功', 'verCode' => 370449]
  17. // $arr['result'] false 发送失败 msg 错误信息 code 错误码
  18. // ['result' => false, 'msg' => '错误信息', 'code' => 'isv.BUSINESS_LIMIT_CONTROL']
  19. $arr = Dysms::sendSms(1503784xxxx);
  20. var_dump($arr);
  21. /**
  22. * 阿里大于短信验证码封装
  23. * composer require flc/dysms
  24. *
  25. * @author liang <23426945@qq.com>
  26. * @version 1.0.1
  27. * @homepage www.itqaq.com 辰风沐阳
  28. * @datetime 2020-08-04 last modify time
  29. *
  30. * 阿里云短信服务默认流控
  31. * 同一个签名同一个手机号短信验证码 1条/分钟
  32. */
  33. class Dysms
  34. {
  35. private static $accessKeyId;
  36. private static $accessKeySecret;
  37. private static $signName;
  38. private static $templateCode;
  39. /**
  40. * 私有化构造方法
  41. * 禁止类在外部被实例化
  42. */
  43. private function __construct(){}
  44. /**
  45. * 设定配置参数
  46. */
  47. public static function setConfig($config)
  48. {
  49. // accessKeyId
  50. self::$accessKeyId = $config['accessKeyId'];
  51. // accessKeySecret
  52. self::$accessKeySecret = $config['accessKeySecret'];
  53. // 短信签名
  54. self::$signName = $config['signName'];
  55. // 短信模板ID
  56. self::$templateCode = $config['templateCode'];
  57. }
  58. /**
  59. * 查看配置参数
  60. * Dysms::showConfig()
  61. */
  62. public static function showConfig()
  63. {
  64. return [
  65. 'accessKeyId' => self::$accessKeyId,
  66. 'accessKeySecret' => self::$accessKeySecret,
  67. 'signName' => self::$signName,
  68. 'templateCode' => self::$templateCode,
  69. ];
  70. }
  71. /**
  72. * 传入手机号发送短信验证码
  73. * @param int $phoneNumbers 手机号
  74. * @return array ['result' => true, 'msg' => '发送成功', 'verCode' => 370449]
  75. */
  76. public static function sendSms($phoneNumbers)
  77. {
  78. $client = new Client([
  79. 'accessKeyId' => self::$accessKeyId,
  80. 'accessKeySecret' => self::$accessKeySecret,
  81. ]);
  82. $sendSms = new SendSms;
  83. $verCode = mt_rand(100000, 999999);
  84. $sendSms->setPhoneNumbers($phoneNumbers);
  85. $sendSms->setSignName(self::$signName);
  86. $sendSms->setTemplateCode(self::$templateCode);
  87. $sendSms->setTemplateParam(['code' => $verCode]);
  88. $sendSms->setOutId('demo');
  89. // 返回标准类对象 发送失败
  90. // object(stdClass)#59 (3) {
  91. // ["Message"]=>
  92. // string(30) "触发小时级流控Permits:5"
  93. // ["RequestId"]=>
  94. // string(36) "B76061EE-2D9A-4E46-89B9-2418E8A5555E"
  95. // ["Code"]=>
  96. // string(26) "isv.BUSINESS_LIMIT_CONTROL"
  97. // }
  98. $result = $client->execute($sendSms);
  99. // 返回结果
  100. // array(2) {
  101. // ["result"]=>
  102. // bool(true)
  103. // ["msg"]=>
  104. // string(12) "发送成功"
  105. // }
  106. // array(3) {
  107. // ["result"]=>
  108. // bool(false)
  109. // ["code"]=>
  110. // string(26) "isv.BUSINESS_LIMIT_CONTROL"
  111. // ["msg"]=>
  112. // string(30) "触发小时级流控Permits:5"
  113. // }
  114. if ($result->Code === 'OK') {
  115. return [
  116. 'result' => true,
  117. 'msg' => '发送成功',
  118. 'verCode' => $verCode
  119. ];
  120. } else {
  121. return [
  122. 'result' => false,
  123. 'code' => $result->Code,
  124. 'msg' => self::errorMsg($result->Code, $result->Message)
  125. ];
  126. }
  127. }
  128. /**
  129. * 错误信息code转换中文提示
  130. */
  131. private static function errorMsg($code, $msg)
  132. {
  133. $errorMsg = [
  134. 'isv.ACCOUNT_NOT_EXISTS' => '使用了错误的账户名称或AK',
  135. 'isv.ACCOUNT_ABNORMAL' => '账户异常,请确认账号信息',
  136. 'isv.MOBILE_NUMBER_ILLEGAL'

本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10447.html

分享给朋友:

“阿里云短信服务验证码封装 v1.0.1【flc/dysms】” 的相关文章

【说站】Thymeleaf报错Error resolving template “XXX”

【说站】Thymeleaf报错Error resolving template “XXX”

修改了一下开源项目的目录结构访问突然报错Error resolving template “XXX”可能原因有如下三种:第一种可能:原因:在使用springboot的过程中,如果使用thymeleaf...

【说站】用一句话就可以去除宝塔面板操作上的二次验证

【说站】用一句话就可以去除宝塔面板操作上的二次验证

用过宝塔的朋友应该都会发现,现在宝塔面板有些鸡肋的功能,删除文件、删除数据库、删除站点等操作都需要做计算题!不仅加了几秒的延时等待,还无法跳过!这时候就会有朋友在想,如何去除宝塔面板的二次验证,此篇文...

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

【说站】Centos8.0如何配置静态IP详解及永久关闭防火墙

这篇文章主要介绍了详解Centos8 配置静态IP的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来学习一下!1. 查看自己的网关地址点击虚...

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

【说站】C#在PDF中添加墨迹注释Ink Annotation的步骤详解

PDF中的墨迹注释(Ink Annotation),表现为徒手涂鸦式的形状;该类型的注释,可任意指定形状顶点的位置及个数,通过指定的顶点,程序将连接各点绘制成平滑的曲线。下面,通过C#程序代码介绍如何...

【说站】使用systemctl配置dnspod-shell实现ddns

【说站】使用systemctl配置dnspod-shell实现ddns

这个是毛子路由器上用的脚本,由于碳云的nat服务器公网IP不断的变,因此只好通过ddns来稳定连接nat服务器了。顺便水一篇文章,大家新年快乐。使用前需要将域名添加到 DNSPod 中,并添加一条A记...

【说站】Python获取最新疫情数据实现动态地图实时展示各地情况

【说站】Python获取最新疫情数据实现动态地图实时展示各地情况

疫情降临转眼已经第三年了,时间过得真快,愿疫情早点结束,世界不再多灾多难。最近疫情稍微好转一些了,所以咱们获取一下最新的疫情数据,做个可视化地图看看。效果展示获取到的数据咱们保存到表格可视化地图颜色是...