一、前期要准备工作:
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);
}