TP5调用阿里云短信接口实现发送短信功能

技术博客 / 3960人浏览 / 0人评论

工作需要,对接阿里云的短信服务,借此记录一下
主要分为两个部分,一是下载官方的Demo事例,这个不需要多说,自己去下载就行,地址:
https://help.aliyun.com/document_detail/55359.html?spm=a2c4g.11186623.4.3.45ae16e49ejNTe

可以下载轻量版的SDK 注意一下PHP 的版本

第二步就是在文件中引用,把下载的SDK 中的 api-sdk 放在vendor 文件夹下面,可以随意命名

image.png
image.png

下面就是常规的调用,在common文件中添加方法

use Aliyun\Core\Config;  
use Aliyun\Core\Profile\DefaultProfile;  
use Aliyun\Core\DefaultAcsClient;  
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest; 
/**
 * 短信发送
 * @param $to    接收人
 * @param $model    短信模板ID
 * @param $code   短信验证码
 * @return json
 * @说明:有优惠,先领卷在购买,不谢!https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=ob1nyal1
 */
function send_sms($to, $model, $code){
    require_once '../extend/alisms/vendor/autoload.php';
    Config::load(); //加载区域结点配置  
    $config = '根据你的实际情况读取配置文件或读取数据库,本项目是将配置写入数据库实现';
    $accessKeyId = '你的AccessKeyID';
    $accessKeySecret = '你的AccessKeySecret';
    $templateParam = $code;
    //短信签名  
    $signName = $config['sign_name'];
    //短信模板ID 
    switch($model){
        case 1:
            $templateCode = $config['model_code_rl']; // 注册登录短信验证码模板
        break;
        case 2:
            $templateCode = $config['model_code_reset']; // 重置密码短信验证码模板
        break;
    }
    //短信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($to);  
    // 必填,设置签名名称  
    $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); 
    // 具体返回值参考文档:https://help.aliyun.com/document_detail/55451.html?spm=a2c4g.11186623.6.563.YSe8FK
    return $result; 
}

然后在需要的地方进行调用
$send = send_sms($sender,1,$code);
参数(手机号,模板ID,验证码);

需要注意的是首先要注册阿里云短信服务、获取AccessKeyId 和 AccessKeySecret

https://dysms.console.aliyun.com/dysms.htm#/overview

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我