【黃啊碼】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,沒有訪問權限,自己去阿里雲設置一下就行了,流程跟我走——》》》》

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM