使用composer安装sdk
"alibabacloud/dysmsapi-20170525": "2.0.24"
封装发送短信类
发送到的短信参数写在env文件里面的
#发送短信配置
[AliyunSms]
AccessKeyId = ""
AccessKeySecret =""
signName=""
templateCode=""
<?php
namespace app\api\service;
use AlibabaCloud\Credentials\Credential\Config;
use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Exception;
use think\facade\Env;
class AliSms
{
/**
* 发送短信验证码
*
* @param string $phoneNumber 手机号码
* @param string $code 验证码
* @return bool 发送成功返回true,否则返回false
*/
public static function sendSmsCode($phoneNumber, $code):array
{
// 阿里云控制台中获取的AccessKey信息
$accessKeyId = Env::get("AliyunSms.AccessKeyId");
$accessSecret = Env::get("AliyunSms.AccessKeySecret");
// 短信模板CODE,根据自己的模板填写
$templateCode = Env::get("AliyunSms.templateCode");
// 短信签名,根据自己的签名填写
$signName = Env::get("AliyunSms.signName");
try {
$config = new Config([
// 必填,您的 AccessKey ID
"accessKeyId" => $accessKeyId,
// 必填,您的 AccessKey Secret
"accessKeySecret" => $accessSecret
]);
// 访问的域名
$config->endpoint = "dysmsapi.aliyuncs.com";
$client = new Dysmsapi($config);
$sendSmsRequest = new SendSmsRequest([
"phoneNumbers" => $phoneNumber,
"signName" => $signName,
"templateCode" => $templateCode,
"templateParam" => json_encode(array('code' => $code))
]);
$runtime = new RuntimeOptions([]);
// 复制代码运行请自行打印 API 的返回值
$result = $client->sendSmsWithOptions($sendSmsRequest, $runtime);
if ($result->statusCode == 200) {
return ["code" => 1, "msg" => "短信发送成功"];
} else {
// 短信发送失败
return ["code" => -1, "msg" => "发送失败"];
}
} catch (Exception $error) {
if (!($error instanceof TeaError)) {
$error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
}
// 如有需要,请打印 error
return ["code" => -1, "msg" => Utils::assertAsString($error->message)];
}
}
}
调用方法
$code = rand(1000, 9999);
$res = AliSms::sendSmsCode($phone, $code);