1.效果圖
2.前期準備:
① 大家可以先看一看阿里雲官方的入門教程 傳送門:
https://help.aliyun.com/document_detail/55288.html?spm=a2c4g.11186623.6.557.568a66faTr3BOC
②這裏就假裝大家已經完成了:
a.開通短信服務
b.創建AccessKey
c.申請短信簽名(審覈30分鐘以內通過)
d.申請短信模板(審覈30分鐘以內通過)
3.生成專屬Demo:
進入OpenAPI Explorer
按要求輸入手機號,短信簽名,短信模板ID等,生成對應SDK的Demo代碼
示例:
<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
// Download:https://github.com/aliyun/openapi-sdk-php
// Usage:https://github.com/aliyun/openapi-sdk-php/blob/master/README.md
AlibabaCloud::accessKeyClient('<accessKeyId>', '<accessSecret>')
->regionId('cn-hangzhou')
->asDefaultClient();
try {
$result = AlibabaCloud::rpc()
->product('Dysmsapi')
// ->scheme('https') // https | http
->version('2017-05-25')
->action('SendSms')
->method('POST')
->host('dysmsapi.aliyuncs.com')
->options([
'query' => [
'RegionId' => "cn-hangzhou",
'PhoneNumbers' => "*******",
'SignName' => "*****",
'TemplateCode' => "*****",
],
])
->request();
print_r($result->toArray());
} catch (ClientException $e) {
echo $e->getErrorMessage() . PHP_EOL;
} catch (ServerException $e) {
echo $e->getErrorMessage() . PHP_EOL;
}
如果出現錯誤,請查看SendSms API錯誤碼列表
4.環境搭建
①下載並安裝Composer。
Linux:
curl -sS https://getcomposer.org/installer | php
Windows:
官網下載並安裝Composer
②進入項目文件夾
如果已在系統上全局安裝 Composer,請直接在項目目錄中運行以下內容來安裝 Alibaba Cloud SDK for PHP 作爲依賴項並生成類映射:
composer require alibabacloud/sdk --optimize-autoloader
③類映射生成
必須開啓類映射生成功能才能使用 Alibaba Cloud SDK for PHP
有3種方法:
在 composer.json 文件中 config 部分增加 "optimize-autoloader": true ,可一勞永逸。
執行 composer install 或 composer update 時增加 -o 或 --optimize-autoloader 選項。
執行 composer dump-autoload 時增加 -o 或 --optimize 選項。
④執行Composer命令安裝Alibaba Cloud SDK for PHP的最新版本
php -d memory_limit=-1 composer.phar require alibabacloud/sdk
在項目的文件夾下出現此文件:
⑤在代碼中引入Composer自動加載工具
<?php
require __DIR__ . '/vendor/autoload.php';
也可以使用:
include_once("../vendor/autoload.php");
5.完整代碼介紹:
<?php
ini_set("error_reporting","E_ALL & ~E_NOTICE");
header("Content-Type: text/html;charset=utf-8");
include_once("../vendor/autoload.php");
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
//開啓session
session_start();
//創建session
$_SESSION['code']=$verificationCode; //傳到js文件用於ajax實時的正確性判斷
$verificationCode = rand(100000, 1000000); // 隨機生成6位驗證碼
$tel = $_GET['yzmtel']; //接收驗證碼的手機號
AlibabaCloud::accessKeyClient('LTAIipvxpPXHLlvd', 'ufHdjm7HnOS0t5gTK4E0USf5v75Z7a')
->regionId('cn-hangzhou')
->asDefaultClient();
try{
$result = AlibabaCloud::rpc()
->product('Dysmsapi')
->version('2017-05-25')
->action('SendSms')
->method('POST')
->host('dysmsapi.aliyuncs.com')
->options([
'query' => [
'RegionId' => "cn-hangzhou",
'PhoneNumbers' => $tel
//你模板中的參數手機號,
'SignName' => "***",
//你的簽名名稱
'TemplateCode' => "SMS_**",
//你的模板CODE
'TemplateParam'=>'{"code":"'.$verificationCode.'"}',
//模板參數驗證碼
],
])
->request();
echo "true";
} catch (ClientException $e) {
echo $e->getErrorMessage() . PHP_EOL;
} catch (ServerException $e) {
echo $e->getErrorMessage() . PHP_EOL;
}