Bootstrap

tp5.1对接阿里云短信实例

一、前期要准备工作:

1、tp5.1框架

2、composer

二、下载官方的SDK

1、关于asseccKeyId和asseccKeySecret、模板签名此处略过了。如果您只是要做开发接口,并不想申请的话可以使用官方提供的测试模板:

2、在tp5.1框架composer阿里云短信的依赖包、官方的API文档里面有教程!

官方有两个SDK的选择,选择升级版的SDK。至于没选这个原版的SDK是有原因的,我第一次选的就是原版的SDK,在执行“composer require alibabacloud/dysmsapi 1.8.1236” 时composer提示没有找到该包,至于是什么问题目前也没有找出,百度找到的问题就说是镜像的问题,可我切换到了其他镜像也无法成功下载下来,所以就直接选择了升级版(ps:可能是我太菜了吧!)

在composer的SDK时需要注意PHP版本!官方的环境要求和版本的说明是这样子的:

 在tp5.1的根目录下按照顺序执行composer语句即可,执行完没有报错的话就是下载成功!

在根目录的extend文件夹下创建文件夹Alicode、然后在建立Sample.php文件

 将下面的代码复制到Sample.php中

<?php
namespace Alicode;

use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
use AlibabaCloud\Tea\Tea;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Console\Console;

use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendSmsRequest;

class Sample {
    /**
     * 使用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);
    }

    /**
     * @param string[] $data
     * @return void
     */
    public static function main($data){
        extract($data);
        $client = self::createClient($accessKeyId,$accessKeySecret);
        $sendSmsRequest = new SendSmsRequest([
            "phoneNumbers" => $phone,
            "signName" => $signName,
            "templateCode" => $templateCode,
            "templateParam" => $templateParam,
        ]);
        $resp = $client->sendSms($sendSmsRequest);
    }
}

 到此步骤基本上是搭建成功,接下来就是调用:

    public function phoneCode(){

        //手机号

        $phone = $this->request->param('phone');

        //生成验证码

        $code = createCaptcha();

        // 阿里云规定必须json字符串

        $templateParam = json_decode(['code'=>$code]);

        $data = [

            'accessKeyId' => $accessKeyId,//accessKeyId

            'accessKeySecret' => $accessKeySecret,//accessKeySecret

            'phone' => $phone,//手机号

            'templateParam' => $templateParam,//验证码字符串

            'signName' => '阿里云短信测试',//签名名称

            'templateCode' => 'SMS_154950909',//模版Code

        ];

        $Sample = new \Alicode\Sample();

        $Sample->main($data);

    }

;