php 阿里云短信验证码

阿里云短信服务:https://dysms.console.aliyun.com

1、准备

1.1、创建签名、模板

1.2、创建、使用阿里云秘钥

地址:https://usercenter.console.aliyun.com

创建AccessKey ID和AccessKey Secret

2、安装

PHP >= 5.5、开启curl扩展

使用composer下载阿里云SDK

copycomposer require alibabacloud/sdk

3、使用

3.1、新建配置文件

单独配置文件保存信息

TemplateCode:模板代码而非名称

3.2、创建短信工具类

copy<?php
/**
 * 阿里云短信相关
 */

namespace App\Utils;

use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;

class AliSmsUtil
{
    /**
     * 发送短信验证码
     * @param $phone:手机号码
     * @param $code:验证码
     */
    public static function sendSmsCode($phone, $code)
    {
        $config = config('alisms');
        $templateParam = json_encode(['code'=>$code]);

        try {
            AlibabaCloud::accessKeyClient($config['AccessKeyId'], $config['AccessKeySecret'])
                ->regionId($config['regionId']) // replace regionId as you need
                ->asDefaultClient();

            $result = AlibabaCloud::rpc()
                ->product('Dysmsapi')
                // ->scheme('https') // https | http
                ->version('2017-05-25')
                ->action('SendSms')
                ->method('POST')
                ->options([
                    'query' => [
                        'PhoneNumbers' => $phone,
                        'SignName' => $config['SignName'],
                        'TemplateCode' => $config['TemplateCode'],
                        'TemplateParam' => $templateParam,
                        'RegionId' => $config['regionId'],
                    ],
                ])
                ->request();
            print_r($result->toArray());
        } catch (ClientException $e) {
            echo $e->getErrorMessage() . PHP_EOL;
        } catch (ServerException $e) {
            echo $e->getErrorMessage() . PHP_EOL;
        }
    }
}

3.3、调用

在控制器或其它地方中调用

copyAliSmsUtil::sendSmsCode('13*******17','FwP5');
posted @   pine007  阅读(2123)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示