【黄啊码】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)

大家都在看

  • Mysql终端Terminal操作

    datebase管理 1.创建数据库-create 语法:create database 数据库名 character set 编码 注意:默认会存在四个数据库,其数据库中存储的是…

    数据库 2023年5月24日
    0105
  • Mybatis-Spring源码分析

    Mybatis-Spring 博主技术有限,本文难免有错误的地方,如果您发现了欢迎评论私信指出,谢谢JAVA技术交流群:737698533 当我们使用mybatis和spring整…

    数据库 2023年6月16日
    0100
  • Java面向对象程序设计(1)类与对象

    类与对象 类和对象的联系 类是抽象的,是由程序员对一种事物进行抽象而构造的一种数据类型 对象是具体的,它是类的一个实例化 类是对象的模板,对象是类中的一个个体 类和对象的内存分配机…

    数据库 2023年6月16日
    079
  • 管理控制台权限控制

    本文讨论一种常见的访问控制方法: [En] This article discusses a common way of access control: 数据授权: 角色 + 接口…

    数据库 2023年5月24日
    078
  • Kubeadm部署K8S(kubernetes)集群(测试、学习环境)-单主双从

    1. kubernetes介绍 1.1 kubernetes简介 kubernetes的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的…

    数据库 2023年6月9日
    089
  • 【JDBC】笔记(5)— 悲观锁和乐观锁的概念;演示行级锁机制

    1.悲观锁和乐观锁的概念: 2.演示行级锁机制: 演示行级锁机制 此程序先开启事务,并使用行级锁锁住”loginName = abc”的那条记录 impor…

    数据库 2023年5月24日
    079
  • MySQL数据库-数据表(下)

    SELECT定义: SQL的SELECT语句可以实现对表的选择、投影及连接操作。即SELECT语句可以从一个或多个表中根据用户的需要从数据库中选出匹配的行和列,结果通常是生成一个临…

    数据库 2023年6月11日
    083
  • 如何把返回的datatable按某个字段 排序 升序或者降序

    如何把返回的datatable按某个字段 排序 升序或者降序 DataTable dtdata = GetXmlData(doc, “DetailList”…

    数据库 2023年6月9日
    080
  • 服务器部署 Vue 和 Django 项目的全记录

    本篇记录我在一个全新服务器上部署 Vue 和 Django 前后端项目的全过程,内容包括服务器初始配置、安装 Django 虚拟环境、python web 服务器 uWSGI 和反…

    数据库 2023年6月14日
    099
  • Linux进程管理

    进程管理 基本概念介绍 进程和线程 进程: 一个在内存中运行的应用程序,每一个进程都有自己独立的一块内存空间,并被分配一个ID号(PID),在Windows下可以打开任务管理器查看…

    数据库 2023年6月16日
    0116
  • NO.1 通讯录管理系统+源代码(C++)

    功能描述:显示简单的菜单,供用户选择操作 实现步骤:直接cout输出 功能描述:根据用户不同的操作代码选择,进入不同的功能,我们使用switch分支结构进行搭建 实现步骤:用whi…

    数据库 2023年6月14日
    077
  • docker-compose部署rocketmq

    docker-compose安装: Ubuntu下载docker-compose文件 sudo curl -L https:/…

    数据库 2023年6月11日
    090
  • 2022-8-11 网络编程(网络通信)

    网络协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这…

    数据库 2023年6月14日
    0110
  • MySQL知识点总结(完整版)

    登录和退出MySQL服务器 登录MySQL $ mysql -u root -p12345612 退&#x…

    数据库 2023年5月24日
    073
  • CronExpression使用笔记

    CronExpression一般是使用在自动任务中,可以指定任务执行的时间或者时间规律,下面记录一下表达试的使用说明 CronExpression由7个子表达式组成,7个子表达式之…

    数据库 2023年6月9日
    0112
  • kafka学习

    Kafka概述 Kafka是分布式(点对点模式)(发布-订阅模式)消息系统,由Scala 写成, 它主要用于处理流式数据。本质是基于消息队列缓存数据. Kafka对消息保存时根据T…

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