[置顶] ThinkPHP实现阿里云的发送验证码功能

时间:2022-10-21 17:06:02

今天由于做项目需要短信验证功能,所以弄了一下午的终于集成了的阿里云的短信功能

首先就是前面那一套,
1、申请Access Key
2、短信模板及其签名

然后我们就可以去官网上下载sdk了 本篇博文我们只讨论我们如何发送验证码

下载了Sdk后可以看到有两个sdk ,
我们先把api_sdk放到项目的根目录
像这样
[置顶]        ThinkPHP实现阿里云的发送验证码功能

在我们需要调用的控制器内的代码如下

<?php
namespace Home\Controller;


use Think\Controller;

use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;

class IndexController extends Controller {
/**
* 数据处理
*/

public function index()
{

$this->sendMsg("测试手机号","测试的验证码");//可以是
}
public function sendMsg($mobile,$code){

require_once APP_PATH.'/Api/api_sdk/vendor/autoload.php';
Config::load(); //加载区域结点配置

$accessKeyId = "accessKeyId";//自己替换自己的accessKeyId
$accessKeySecret = "accessKeySecret";//自己替换自己的accessKeySecret
$templateParam = array("验证码参数"=>$code); //模板变量替换 假如要用验证码的话 需要把你短信模板的验证码参数改正
$templateCode = "短信模板ID"; //短信模板ID


//短信API产品名(短信产品名固定,无需修改)
$product = "Dysmsapi";
//短信API产品域名(接口地址固定,无需修改)
$domain = "dysmsapi.aliyuncs.com";
//暂时不支持多Region(目前仅支持cn-hangzhou请勿修改)
$region = "cn-hangzhou";

// 初始化用户Profile实例
$profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
// 增加服务结点
DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain);
// 初始化AcsClient用于发起请求
$acsClient= new DefaultAcsClient($profile);

// 初始化SendSmsRequest实例用于设置发送短信的参数
$request = new SendSmsRequest();
// 必填,设置雉短信接收号码
$request->setPhoneNumbers($mobile);

// 必填,设置签名名称
$request->setSignName($signName);

// 必填,设置模板CODE
$request->setTemplateCode($templateCode);

// 可选,设置模板参数
if($templateParam) {
$request->setTemplateParam(json_encode($templateParam));
}

//发起访问请求
$acsResponse = $acsClient->getAcsResponse($request);

//返回请求结果
$result = json_decode(json_encode($acsResponse),true);
dump($result);
dump(json_encode($templateParam));
return $result;
}
}

我是当时是在传json数据那里卡住了,没有注意我当时设置的短信模板是的验证码参数

我也是研究了半天,共同学习

附上常见的API报错https://help.aliyun.com/knowledge_detail/57071.html 解决地址
和常见的短信接口报错https://help.aliyun.com/knowledge_detail/57717.html?spm=5176.7757071.6.582.57GGEj,如果有问题都可以加qq1115007981