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()方法,传入参数即可。
为方便大家快速方便的使用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()方法,传入参数即可。
相关文章推荐
- CI使用阿里云短信服务
- laravel5.4使用Laravel Sms和阿里云短信服务实现短信验证码功能
- thinkphp5详细使用阿里云短信最新版(原大鱼)教程!
- 使用阿里云消息服务mns发送短信
- 短信服务:将阿里大鱼整合到ThinkPHP3.2,并使用
- Thinkphp5+阿里云SMS短信服务发送验证码
- ThinkPHP5 集成阿里云SMS短信服务--验证码发送
- 阿里云服务使用感受
- thinkphp中导入和使用阿里云OSSsdk
- Java阿里云通信短信服务发送短信调用
- 使用阿里云来搭建视频直播服务
- Springboot实现阿里云通信短信服务有关短信验证码的发送
- 使用SmsManager服务群发短信
- thinkPHP3.2.3实现阿里大于短信验证(阿里云合并后的版本)
- 【阿里云产品公测】消息队列服务MQS使用分享
- java实现对阿里云消息服务实现发送短信
- 【阿里云产品公测】在Laravel4框架中使用阿里云ACE的缓存服务
- 阿里云加密服务使用教程
- 阿里云短信服务(发送短信验证码)