当前位置:   article > 正文

tp5 阿里大于短信_dependency 'com.aliyun:dysmsapi20170525:2.0.24' no

dependency 'com.aliyun:dysmsapi20170525:2.0.24' not found

按照文档来就行了。
最低要求 PHP 5.6
安装 SDK 核心库 OpenAPI ,如果已在系统上全局安装 Composer,请直接在项目目录中运行以下内容来安装 Alibaba Cloud SDK for PHP 作为依赖项:

composer require alibabacloud/darabonba-openapi
  • 1

⚠️注意:执行 composer 安装 SDK 的 PHP 版本要小于或等于实际运行时的 PHP 版本。 例如,在 PHP7.2 环境下安装 SDK 后生成 vendor 目录,只能在 PHP7.2 以上版本使用,如果拷贝到 PHP5.6 环境下使用,会出现依赖版本不兼容问题。
一些用户可能由于网络问题无法安装,可以通过以下命令使用阿里云 Composer 全量镜像。

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  • 1

Packagist

composer require alibabacloud/dysmsapi-20170525 2.0.23
  • 1

最后一步安装不成功可能是因为没有23版本,安装20得也可以,下面是Alibaba_sms.php

<?php

namespace app\common\server;
use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;

use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Console\Console;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use \Exception;
use AlibabaCloud\Tea\Exception\TeaError;
use think\Env;

class Alibaba_sms {

    /**
     * 使用AK&SK初始化账号Client
     * @param string $accessKeyId
     * @param string $accessKeySecret
     * @return Dysmsapi Client
     */
    public static function createClient($accessKeyId, $accessKeySecret){
        $config = new Config([
            // 必填,您的 AccessKey ID
            "accessKeyId" => $accessKeyId,
            // 必填,您的 AccessKey Secret
            "accessKeySecret" => $accessKeySecret
        ]);
        // 访问的域名
        $config->endpoint = "dysmsapi.aliyuncs.com";
        return new Dysmsapi($config);
    }

    /**
     * 使用STS鉴权方式初始化账号Client,推荐此方式。本示例默认使用AK&SK方式。
     * @param string $accessKeyId
     * @param string $accessKeySecret
     * @param string $securityToken
     * @return Dysmsapi Client
     */
    public static function createClientWithSTS($accessKeyId, $accessKeySecret, $securityToken){
        $config = new Config([
            // 必填,您的 AccessKey ID
            "accessKeyId" => $accessKeyId,
            // 必填,您的 AccessKey Secret
            "accessKeySecret" => $accessKeySecret,
            // 必填,您的 Security Token
            "securityToken" => $securityToken,
            // 必填,表明使用 STS 方式
            "type" => "sts"
        ]);
        // 访问的域名
        $config->endpoint = "dysmsapi.aliyuncs.com";
        return new Dysmsapi($config);
    }

    /**
     * 发送验证码
     * @param $args
     * @return \AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsResponse|void
     */
    public static function main($args){
        extract($args);
        $client = self::createClient(Env::get('alibabasms.accessKeyId'), Env::get('alibabasms.accessKeySecret'));
        $sendSmsRequest = new SendSmsRequest([
            "phoneNumbers" => $phone,
            "signName" => Env::get('alibabasms.signName'),
            "templateCode" => Env::get('alibabasms.TemplateCode'),
            "templateParam" => $templateParam, // 验证码字符串
        ]);
        $runtime = new RuntimeOptions([]); // 可忽略
        try {
            // 复制代码运行请自行打印 API 的返回值
            $resp = $client->sendSmsWithOptions($sendSmsRequest, $runtime);
            return $resp;
        }
        catch (Exception $error) {
            if (!($error instanceof TeaError)) {
                $error = new TeaError([], $error->getMessage(), $error->getCode(), $error);
            }
            // 如有需要,请打印 error
            Utils::assertAsString($error->message);
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86

Api

/**
     * 发送验证码
     * @return void
     * @throws \think\Exception
     */
    public function alidayusms_send(){
        $phone = $this->request->param('phone');
        $event = $this->request->post("event");
        $event = $event ? $event : 'register';

        if (!$phone || !\think\Validate::regex($phone, "^1\d{10}$")) {
            $this->error(__('手机号不正确'));
        }
        $last = Smslib::get($phone, $event);
        if ($last && time() - $last['createtime'] < 60) {
            $this->error(__('发送频繁'));
        }
        $ipSendTotal = \app\common\model\Sms::where(['ip' => $this->request->ip()])->whereTime('createtime', '-1 hours')->count();
        if ($ipSendTotal >= 5) {
            $this->error(__('发送频繁'));
        }
        //生成验证码
        $code = Random::numeric(config('captcha.length'));
        // 阿里云规定必须json字符串
        $templateParam = json_encode(['code'=>$code]);
        $data = [
            'phone' => $phone, // 手机号
            'templateParam' => $templateParam, // 验证码字符串
            'event' => $event,
        ];
        $ret = Alibaba_sms::main($data);
        $ret = json_decode(json_encode($ret,true),true);
        if ($ret['statusCode'] == 200 && $ret['body']['code'] == "OK" && $ret['body']['message'] == "OK") {
            $time = time();
            $ip = request()->ip();
            $sms = \app\common\model\Sms::create(['event' => $event, 'mobile' => $phone, 'code' => $code, 'ip' => $ip, 'createtime' => $time]);
            $this->success(__('发送成功'));
        } else {
            $this->error(__('发送失败'));
        }

    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

检测验证码有效性

	/**
     * 验证码有效时长
     * @var int
     */
    protected static $expire = 300;
    /**
     * 最大允许检测的次数
     * @var int
     */
    protected static $maxCheckNums = 10;
	/**
     * @param $mobile
     * @param $code
     * @param $event
     * @return array|false|mixed
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public static function alisms_check($mobile, $code, $event = 'default'){
        $time = time() - self::$expire;
        $sms = \app\common\model\Sms::where(['mobile' => $mobile, 'event' => $event])
            ->order('id', 'DESC')
            ->find();
        if ($sms) {
            if ($sms['createtime'] > $time && $sms['times'] <= self::$maxCheckNums) {
                $correct = $code == $sms['code'];
                if (!$correct) {
                    $sms->times = $sms->times + 1;
                    $sms->save();
                    return false;
                } else {
                    $result = true;
                    return $result;
                }
            } else {
                // 过期则清空该手机验证码
                self::flush($mobile, $event);
                return false;
            }
        } else {
            return false;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/70269
推荐阅读
相关标签
  

闽ICP备14008679号