您的位置:首页 > 编程语言 > PHP开发

thinkphp5 中使用阿里云的短信服务

2018-02-28 16:59 411 查看
在项目中用到阿里云的短信服务,在使用阿里云提供的SDK后,踩了很多坑,费尽九牛二虎之力才调试成功。
为方便大家快速方便的使用sdk,将我自己封装的短信调用方法提供如下,方便大家参考:
1. 请自行下载php的sdk
2.创建短信签名、短信模板,云资源使用的子账号并分配相关权限
3、将SDK中api_sdk文件夹重命名后放入thinkphp5的extends目录下
4、在conmmon.php中创建公共方法sendMsg,调用SDK的发送短信API<?php
use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;

/**
* @param $mobile 手机号
* @param $tplCode 模板ID
* @param $tplParam 短信内容
*/
function sendMsg($mobile,$tplCode,$tplParam){
require_once '../extend/aliyunsms/vendor/autoload.php';
Config::load(); //加载区域结点配置
$accessKeyId = config('aliYunSms.app_key');
$accessKeySecret = config('aliYunSms.app_secret');
$templateParam = $tplParam; //模板变量替换
//$signName = (empty(config('alisms_signname'))?'阿里大于测试专用':config('alisms_signname'));
$signName = config('aliYunSms.sign_name');
//短信模板ID
$templateCode = $tplCode;
//短信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);
return $result;
}

5、在controller中调用sendMsg()方法,传入参数即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: