• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

现在百度出来的大都是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,没有访问权限,自己去阿里云设置一下就行了,流程跟我走——》》》》

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP vs Node.js vs Nginx-Lua(转)发布时间:2022-07-10
下一篇:
[转]php初级教程(十一)用户的注册发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap