tp6框架结合阿里短信接口发送短信并记录redis

tp6框架结合阿里短信接口发送短信并记录redis
1> 开通阿里云短信服务
2> 安装redis服务
3>config配置文件

创建sms.php 文件,配置阿里云短信信息
return [
    'access_key' => 'LTAI4G9qLv7QFs3fEx2e5aW6', 
    'access_secret' => 'SmCoM7FQkq6vFHu0ySwgry76SAouVI',
    'host'    => 'dysmsapi.aliyuncs.com',
    'region_id' => 'cn-hangzhou',
    'sign_name' => 'noodles',
    'template_code' => 'SMS_197897436',
];

创建redis.php文件 配置前缀和过期时间
return [
    'code_pre'    =>  "code_pre_",
    'code_expire' =>  60
];

创建cache.php 文件,配置redis信息
return [
    // 默认缓存驱动
    'default' => env('cache.driver', 'redis'),

    // 缓存连接方式配置
    'stores'  => [
        'file' => [
            // 驱动方式
            'type'       => 'File',
            // 缓存保存目录
            'path'       => '',
            // 缓存前缀
            'prefix'     => '',
            // 缓存有效期 0表示永久缓存
            'expire'     => 0,
            // 缓存标签前缀
            'tag_prefix' => 'tag:',
            // 序列化机制 例如 ['serialize', 'unserialize']
            'serialize'  => [],
        ],
        // 更多的缓存连接
        'redis' =>[
            'type' => 'redis',
            'host' => '127.0.0.1',
            'port' => 6379,
        ]
    ],
];

4> 打开阿里云短信文档 直接复制demo,修改自己的配置信息

创建AliSms类库文件,修改配置项
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;


class AliSms
{
    /**
     * @param $phone
     * @param $code
     * @return bool
     * @throws ClientException
     */
    public function sendCode($phone,$code){
        AlibabaCloud::accessKeyClient(config('sms.access_key'), config('sms.access_secret'))
            ->regionId('cn-hangzhou')
            ->asDefaultClient();
        $tmpCode = [
            'code' => $code
        ];
        try {
            $result = AlibabaCloud::rpc()
                ->product('Dysmsapi')
                // ->scheme('https') // https | http
                ->version('2017-05-25')
                ->action('SendSms')
                ->method('POST')
                ->host(config('sms.host'))
                ->options([
                    'query' => [
                        'RegionId' =>config('sms.region_id'),
                        'PhoneNumbers' => $phone,
                        'SignName' => config('sms.sign_name'),
                        'TemplateCode' => config('sms.template_code'),
                        'TemplateParam' => json_encode($tmpCode)
                    ],
                ])
                ->request();
            //print_r($result->toArray());
        } catch (ClientException $e) {
             return false;
            //echo $e->getErrorMessage() . PHP_EOL;
        } catch (ServerException $e) {
            return false;
            //echo $e->getErrorMessage() . PHP_EOL;
        }
        if(isset($result) && $result['Code']=='OK'){
            return true;
        }else{
            return false;
        }

    }
}

5> 调用短信发送接口,记录redis string格式

use app\common\lib\sms\AliSms;
 public function sendCode (){
      $phone = input('phone');
      if(empty($phone)){
        return show(config('code.error'),'手机号不能为空');
      }
      $code = rand(100000,999999);
      $aliSms = new AliSms();
      $res = $aliSms->sendCode($phone,$code);
      cache(config('redis.code_pre').$phone,$code,config('redis.code_expire'));
      //halt(cache(config('redis.code_pre').$phone));
      if($res){
        return show(config('code.success'),'验证码发送成功');
      }else{
        return show(config('code.error'),'验证码发送失败');
      }
    }

6> 验证是否成功记录

 cd /usr/local/redis/bin
 ll 
 ./redis-cli 
 set key  val
 get key 

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值