ThinkPHP6.0 使用阿里云发送短信验证码

在ThinkPHP6.0中对接阿里云发送短信验证码,你可以按照以下步骤进行配置和操作

1、首先,确保你已经在阿里云上注册并开通了短信服务,获取到AccessKeyId和AccessKeySecret。

2、在ThinkPHP6.0项目中使用Composer安装阿里云SDK,可以执行以下命令:

composer require alibabacloud/sdk

3、在config目录下创建一个新的文件,命名为aliyun.php,用于存放阿里云的配置信息。在该文件中添加以下内容:(这一步你也可以直接跳过 我直接放在env里面了 需要用引用就好)

<?php
// config/aliyun.php

return [
    // 阿里云短信API配置信息
    'access_key_id' => 'your_access_key_id',
    'access_key_secret' => 'your_access_key_secret',
    'sign_name' => 'your_sign_name',
    'template_code' => 'your_template_code',
];

将’your_access_key_id’和’your_access_key_secret’替换为你在阿里云上获取到的AccessKeyId和AccessKeySecret。将’your_sign_name’替换为你在阿里云短信服务上申请的签名名称。将’your_template_code’替换为你在阿里云短信服务上创建的短信模板的Code。

4、创建一个新的控制器用于发送短信验证码,在该控制器中添加发送短信验证码的方法。示例如下:

<?php
namespace app\controller;

use think\facade\Config;
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;

class SmsController
{
    // 发送短信验证码
    public function sendVerifyCode($phone)
    {
        // 生成随机验证码
        $code = mt_rand(100000, 999999);

        // 发送短信
        try {
            AlibabaCloud::accessKeyClient(Config::get('aliyun.access_key_id'), Config::get('aliyun.access_key_secret'))
                ->regionId('cn-hangzhou')
                ->asDefaultClient();

            AlibabaCloud::rpc()
                ->product('Dysmsapi')
                ->scheme('https')
                ->version('2017-05-25')
                ->action('SendSms')
                ->method('POST')
                ->options([
                    'query' => [
                        'PhoneNumbers' => $phone,
                        'SignName' => Config::get('aliyun.sign_name'),
                        'TemplateCode' => Config::get('aliyun.template_code'),
                        'TemplateParam' => json_encode(['code' => $code]),
                    ],
                ])
                ->request();
                
            // 短信发送成功,将验证码保存到数据库等操作
            // ...

            return '短信验证码发送成功';
        } catch (ClientException $e) {
            return '短信验证码发送失败:' . $e->getErrorMessage();
        } catch (ServerException $e) {
            return '短信验证码发送失败:' . $e->getErrorMessage();
        }
    }
}

在该示例中,sendVerifyCode方法接受一个手机号作为参数。首先,生成一个随机的验证码。然后,使用阿里云SDK发送短信,调用了阿里云短信API的SendSms接口进行短信的发送。将短信模板中的参数code替换为随机生成的验证码。最后,根据发送结果进行处理,例如将验证码保存到数据库等操作。

5、在路由中注册该控制器的路由。在routes目录下的route.php文件中添加以下内容:

Route::post('send-verify-code', 'SmsController/sendVerifyCode');

这样,可以通过发送POST请求到/send-verify-code路径来调用发送短信验证码的方法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值