Laravel-手机短信验证码-阿里云

1.composer require alibabacloud/client

2.App\Service\AliyunSms.php
<?php
namespace App\Service;

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

class AliyunSms
{
    public static function sendCode($phone, $code)
    {

        AlibabaCloud::accessKeyClient('LTAIbuiASDAQwJNOUJ4l', 'og3fSMFpYZMkPB0UlgcdA4ASDA4JnUAZnEQ')
            ->regionId('cn-hangzhou')
            ->asDefaultClient();

        try {
            $result = AlibabaCloud::rpc(['idn_conversion' => false])
                ->product('Dysmsapi')
                ->version('2017-05-25')
                ->action('SendSms')
                ->method('POST')
                ->host('dysmsapi.aliyuncs.com')
                ->options([
                    'query' => [
                        'RegionId' => "cn-hangzhou",
                        'PhoneNumbers' => $phone,
                        'SignName' => "青创",
                        'TemplateCode' => "SMS_9670001363",
                        'TemplateParam' => "{code:{$code}}",

                    ],
                ])->request();
            return $result;

        }catch (ClientException $e){
           print_r($e->getMessage());
        }

    }
}

 

3.控制器调用测试
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Service\AliyunSms;

class TestController extends Controller
{
    //短信测试
    public function sendSms(){
        $phone = '1851850****';
        $code = rand(111111,999999);
        $result =  AliyunSms::sendCode($phone,$code);
        if($result){
            echo "短信发送成功";
        }else{
            echo "失败";
        }
    }
}
4.路由定义  api.php  
Route::get('/test/sendSms','TestController@sendSms');

 

posted @ 2021-06-02 20:22  青烟绕指柔  阅读(186)  评论(0编辑  收藏  举报