【黄啊码】PHP对接阿里云短信服务最新版(官方文档有坑,切记)

【黄啊码】PHP对接阿里云短信服务最新版(官方文档有坑,切记)

现在百度出来的大都是1.5的版本,而阿里云短信API出到了2.0了

以下是最新教程,绝对成功,不成功。。。我再改一遍!

环境要求
最低要求 PHP 5.6
安装 SDK 核心库 OpenAPI ,如果已在系统上全局安装 Composer,请直接在项目目录中运行以下内容来安装 Alibaba Cloud SDK for PHP 作为依赖项:
复制

composer require alibabacloud/darabonba-openapi
⚠️注意:执行 composer 安装 SDK 的 PHP 版本要小于或等于实际运行时的 PHP 版本。 例如,在 PHP7.2 环境下安装 SDK 后生成 vendor 目录,只能在 PHP7.2 以上版本使用,如果拷贝到 PHP5.6 环境下使用,会出现依赖版本不兼容问题。
一些用户可能由于网络问题无法安装,可以通过以下命令使用阿里云 Composer 全量镜像。

复制

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
安装方式:

composer require alibabacloud/dysmsapi-20170525

好了,接下来就是照抄,ctrl+C用起来

1 php
 2 /**
 3 * Author: super
 4 * Date: 2021/6/19
 5 */
 6
 7 namespace app\base\logic;
 8
 9 use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
10
11 use Darabonba\OpenApi\Models\Config;
12 use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
13
14 class AliyunSMS
15 {
16 const KEY = 'your_key';
17 const SECRET = 'your_secret';
18 const SIGN = 'your_sign';
19
20 /**
21 * 使用AK&SK初始化账号Client
22 * @param mixed $accessKeyId
23 * @param mixed $accessKeySecret
24 * @return Dysmsapi Client
25 */
26 public static function createClient($accessKeyId = null, $accessKeySecret = null)
27 {
28 $config = new Config([
29 "accessKeyId" => $accessKeyId ?? AliyunSMS::KEY,
30 "accessKeySecret" => $accessKeySecret ?? AliyunSMS::SECRET
31 ]);
32 // 访问的域名
33 $config->endpoint = "dysmsapi.aliyuncs.com";
34 return new Dysmsapi($config);
35 }
36
37 /**
38 * 短信验证码
39 * @param int $phone 手机号码
40 * @param int $code 验证码
41 * @return array
42 */
43 public static function verify(int $phone, int $code)
44 {
45 $client = self::createClient(AliyunSMS::KEY, AliyunSMS::SECRET);
46 $sendSmsRequest = new SendSmsRequest([
47 "phoneNumbers" => $phone,
48 "signName" => AliyunSMS::SIGN,
49 "templateCode" => "SMS_21796xxxx",
50 "templateParam" => json_encode([
51 'code' => $code
52 ])
53 ]);
54 $result = $client->sendSms($sendSmsRequest);
55 if ($result->body->message == 'OK' && $result->body->code == 'OK') {
56 return ['status' => 1];
57 }
58 if ($result->body->code == 'isv.MOBILE_NUMBER_ILLEGAL') {
59 return ['status' => 0, 'msg' => '手机号码格式不正确'];
60 }
61 return ['status' => 0, 'msg' => '短信发送失败,网络繁忙'];
62 }
63
64 /**
65 * @param string[] $args
66 * @return void
67 */
68 public static function main($args)
69 {
70 $client = self::createClient("accessKeyId", "accessKeySecret");
71 $sendSmsRequest = new SendSmsRequest([
72 "phoneNumbers" => "1503871****",
73 "signName" => "阿里大于测试专用",
74 "templateCode" => "SMS_215180185",
75 "templateParam" => "{\"code\":\"1111\",\"code1\":\"1111\",\"code3\":\"1111\"}"
76 ]);
77 // 复制代码运行请自行打印 API 的返回值
78 $client->sendSms($sendSmsRequest);
79 }
80 }
81 $phone = '';
82 $code = rand(100000, 999999);
83 $result = AliyunSMS::verify($phone, $code);
84 if ($result['status'] == 1) {
85 Cache::set($this->userID . '_register_' . $phone, ['code' => $code, 'time' => time()], 86400);
86 success('发送成功');
87 }
88 error($result['msg']);

在测试过程中,或许会出现isp.RAM_PERMISSION_DENY,没有访问权限,自己去阿里云设置一下就行了,流程跟我走——》》》》

【黄啊码】PHP对接阿里云短信服务最新版(官方文档有坑,切记)

【黄啊码】PHP对接阿里云短信服务最新版(官方文档有坑,切记)

【黄啊码】PHP对接阿里云短信服务最新版(官方文档有坑,切记)

Original: https://www.cnblogs.com/huangama/p/15538473.html
Author: 黄啊码
Title: 【黄啊码】PHP对接阿里云短信服务最新版(官方文档有坑,切记)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/619703/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 多商户商城系统功能拆解23讲-平台端分销等级

    多商户商城系统,也称为B2B2C(BBC)平台电商模式多商家商城系统。可以快速帮助企业搭建类似拼多多/京东/天猫/淘宝的综合商城。 多商户商城系统支持商家入驻加盟,同时满足平台自营…

    数据库 2023年6月14日
    097
  • GROUP BY 后获取每一组最新的一条记录

    最近有一种需求,一张订单可能有多个支付单,这就要求我们拿到每一张订单的最新支付单。具体思路如下: [En] Recently, there is a demand that the…

    数据库 2023年5月24日
    075
  • 基础算法知识

    一、冒泡排序 冒泡排序其实跟握手定理差不多(即A,B,C三人需每两个都都要握手一次 AB,AC,BC) 时间复杂度比较差的O(n²) int[] arrays = {2, 1, 5…

    数据库 2023年6月6日
    0128
  • MySQL45讲之IO性能提升

    本文介绍 MySQL 的 binlog 和 redo log 写入机制和刷盘策略,以及如何提升 MySQL 的 IO 性能。 binlog 的写入机制 binlog 的写入流程是:…

    数据库 2023年5月24日
    078
  • 数据库基础,看完这篇就够了!

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月11日
    0100
  • 02-MySQL关键字、Select语句执行顺序

    SQL关键字 1、分页 MySQL的分页关键词是 limit SELECT * FROM student LIMIT 2,6:查询学生表中的数据,从第三条开始,显示6条数据 2、分…

    数据库 2023年6月16日
    0107
  • springmvc静态资源配置

    <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>o…

    数据库 2023年6月16日
    099
  • Mybatis缓存机制

    MyBatis是常见的 Java数据库访问层框架。在日常工作中,多数情况下是使用 MyBatis的默认缓存配置减轻数据库压力,提高数据库性能,但是 MyBatis缓存机制有一些不足…

    数据库 2023年6月11日
    0137
  • 数据库原理二—MySQL事务与锁

    数据库事务的四大特性 原子性A 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用 一致性C 执行事务前后,数据保持一致,多个事务对同一个数据读取…

    数据库 2023年6月6日
    076
  • Java学习-第一部分-第二阶段-第二节:枚举和注释

    自定义类实现枚举 先看一个需求 要求创建季节(Season)对象,请设计并完成。 创建Season对象有如下特点 1.季节的值是有限的几个值(spring, summer, aut…

    数据库 2023年6月11日
    097
  • Hadoop生态一—分布式文件系统HDFS

    分布式文件系统: 统一管理分布在集群上的文件系统设计思想分而治之:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析; 在大数据系统中作…

    数据库 2023年6月6日
    093
  • SQL练习六–More JOIN operations

    Field nameTypeNotes id INTEGER An arbitrary unique identifier title CHAR(70) The name of t…

    数据库 2023年6月16日
    091
  • JavaWeb核心篇(2)——Request和Response

    JavaWeb核心篇(2)——Request和Response 上篇文章中提及到了Servlet,在Servlet中我们主要继承了HTTPServlet类,在HTTPServlet…

    数据库 2023年6月14日
    0108
  • 读取资源文件的几种常用方法

    资源文件的读取方法: 本地读取资源文件 undefined2. 服务器(Tomcat)通过ServletContext获取: ServletContext servletConte…

    数据库 2023年6月16日
    0100
  • MySQL半同步复制源码解析

    今天 DBA 同事问了一个问题,MySQL在半同步复制的场景下,当关闭从节点时使得从节点的数量 < rpl_semi_sync_master_wait_for_slave_c…

    数据库 2023年6月9日
    094
  • 精心整理16条MySQL使用规范,减少80%问题,推荐分享给团队

    上篇文章介绍了如何创建合适的MySQL索引,今天再一块学一下如何更规范、更合理的使用MySQL? 合理规范的使用MySQL,可以大大减少开发工作量和线上问题,并提升SQL查询性能。…

    数据库 2023年5月24日
    094
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球