ThinkPHP阿里云短信调用SendSms发送
SendSms接口是短信发送接口,支持在一次请求中向多个不同的手机号码发送同样内容的短信。
如果需要在一次请求中分别向多个不同的手机号码发送不同签名和模版内容的短信,使用SendBatchSms接口。
准备:
1、AccessKey ID和AccessKey Secret,可在阿里云控制台创建和查看
2、Alibaba Cloud SDK for PHP适用于PHP > 5.5.0
安装Alibaba Cloud SDK for PHP
1、通过Composer安装Alibaba Cloud SDK for PHP作为依赖项
执行命令:
composer require alibabacloud/sdk
2、通过下载php-sdk/sdk.zip 文件在项目中使用
下载地址:
http://aliyunsdk-pages.alicdn.com/php-sdk/sdk.zip?spm=a2c4g.11186623.2.13.114a16e4KqoVMV&file=sdk.zip
发起调用
<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
$accessKeyId='阿里云accessKeyId';
$accessSecret='阿里云accessSecret';
//初始化客户端
AlibabaCloud::accessKeyClient($accessKeyId,$accessSecret)
->regionId('cn-hangzhou')
->asDefaultClient();
//发起调用-RPC调用(也可使用ROA调用具体可看官方文档)
try {
$result = AlibabaCloud::rpc()
->product('Dysmsapi')
->version('2017-05-25')
->action('SendSms')
->method('POST')
->host('dysmsapi.aliyuncs.com')
->options([
'query' => [
'RegionId' => "cn-hangzhou",
'PhoneNumbers' => $mobile,
'SignName' => $sign_name,
'TemplateCode' => $templateCode,
'TemplateParam' => json_encode($smsData),
'SmsUpExtendCode' => "1",
'OutId' => $mobile.'_'.time(),
],
])
->request();
$result=$result->toArray();
return $result['Code'] === 'OK' ? 'success' : 'fail';
} catch (ClientException $e) {
return 'fail:'.$e->getErrorMessage();
} catch (ServerException $e) {
return 'fail:'.$e->getErrorMessage();
}
请求参数:
名称 | 是否必选 | 描述 |
---|---|---|
PhoneNumbers | 是 | 接收短信的手机号码,多个手机号码发送短信,手机号码之间以英文逗号(,)分隔 |
SignName | 是 | 短信签名名称 |
TemplateCode | 是 | 短信模板ID |
TemplateParam | 否 | 短信模板变量对应的实际值,JSON格式 |
SmsUpExtendCode | 否 | 上行短信扩展码 |
OutId | 否 | 外部流水号 |
返回参数:
名称 | 描述 |
---|---|
BizId | 发送回执ID |
Code | 请求状态码 返回OK代表请求成功。 |
Message | 状态码的描述 |