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;
}