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

因为项目中需要用到阿里云短信验证码功能,所以就购买了相应的短信包进行测试,以下就是完整代码:

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
 */
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;
}

以下列举详细步骤:

在开始之前你必须在阿里云控制台中将你的accessKeyId、accessKeySecret获取并纪录起来,如果你的账户没有开启AccessKey需要进行开启操作:

1、登录阿里云控制台。
 
2、将鼠标放在右上方的用户名区域,在弹出的快捷菜单中选择accesskeys。
 
3、系统弹出安全提示对话框,单击继续使用AccessKey。页面显示AccessKeyId和AccessKeySecret。

其次,你需要申请好对应的模板及签名,然后在进行以下操作。

第一步:下载PHP短信发送Dome,将文件夹api_sdk复制到你的项目extend目录下,并任意重命名;

第二步:在你项目应用公共(函数)文件common.php头部添加

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_sms(‘电话号码’,‘短信模板’,‘需要替换的变量’),OK大功告成!

$send = send_sms($sender, 1, ['code'=>$code]);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值