阿里云短信thinkphp

在项目中用到阿里云的短信服务,在使用阿里云提供的SDK后,踩了很多坑,费尽九牛二虎之力才调试成功。

为方便大家快速方便的使用sdk,将我自己封装的短信调用方法提供如下,方便大家参考:

1. 请自行下载php的sdk

2.创建短信签名、短信模板,云资源使用的子账号并分配相关权限

3、将SDK中api_sdk文件夹重命名后放入thinkphp5的extends目录下

4、在conmmon.php中创建公共方法sendMsg,调用SDK的发送短信API

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()方法,传入参数即可。
--------------------- 
作者:glx490676405 
来源:CSDN 
原文:https://blog.csdn.net/glx490676405/article/details/79402535 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(阿里云短信thinkphp)