新版阿里云短信接入

作者:隆航 原文地址: http://www.loveteemo.com/article-165.html

首先说下环境,原本的短信接入是需要提供阿里云账户下的KEY和秘钥,然后生成签名去请求下完事,现在改版之后比较复杂,需要生成节点什么的。加上公司对短信需要比较急,所以整个框架直接迁移。并没有对框架的文件进行删减。

第一步,下载SDK

文档地址:https://help.aliyun.com/document_detail/55451.html?spm=5176.sms-account.109.2.56907c165Efb1I

下载地址:https://help.aliyun.com/document_detail/55359.html?spm=5176.doc55451.6.569.pg9xWr

第二步,整合框架

把下载好的文件中的 api_sdk 文件,改名 aliyunsms ,然后放入 TP 框架的扩展目录下 ThinkPHP/Library/Vendor

第三步,功能实现

因为我是后台,然后这些文件都是继承一个 Controller ,所以我直接在继承的里面写,然后就可以全局掉用

/**
     * 发送短信接口
     * 文档地址 https://help.aliyun.com/document_detail/55491.html?spm=5176.doc55491.6.560.0KUKny
     * @param $mobile   手机号
     * @param $smscode  短信模板ID
     * @param $params   模板替换参数
     * @return mixed    code = OK 表示完成
     */
    public function sendSms($mobile,$smscode,$params)
    {
        require_once VENDOR_PATH .'/aliyunsms/vendor/autoload.php';
        Config::load();
        $sms_config = C("SMS_CONFIG");
        $templateParam = $params;
        $signName = $sms_config['sign'];
        $templateCode = $smscode;
        $product = "Dysmsapi";
        $domain = "dysmsapi.aliyuncs.com";
        $region = "cn-hangzhou";

        $profile = DefaultProfile::getProfile($region, $sms_config['key'], $sms_config['secret']);
        DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain);
        $acsClient= new DefaultAcsClient($profile);
        $request = new SendSmsRequest();
        $request->setPhoneNumbers($mobile);
        $request->setSignName($signName);
        $request->setTemplateCode($templateCode);
        if($templateParam) {
            $request->setTemplateParam(json_encode($templateParam));
        }
        $acsResponse = $acsClient->getAcsResponse($request);
        $result = json_decode(json_encode($acsResponse),true);
        return $result;
    }

其中,需要在头部 use 类库

use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;

还有配置文件

    //短信配置
    'SMS_CONFIG'    =>  array(
        "sign"              =>      'xx', //审核通过的签名
        "key"               =>      'accessKeyId', //阿里云生成的 accessKeyId
"secret" => 'accessKeySecret', // 阿里云生成的 accessKeySecret
),

在需要调用的时候直接

$this->sendSms("手机号","短信模板ID","替换参数");

后记

阿里云的 accessKeyId 和 accessKeySecret 是自己在账户管理生成的,不建议用主账号

使用一些公众号或者公司的产品名作为签名需要提供授权

短信模板添加的时候注意选择短信提醒,不是验证码提醒 附:(短信模板) 尊敬的会员,您于${time}完成${name}服务,余额付款${num}元,剩余余额${m},如有疑问请联系客服。

不同的是替换参数只需数组格式即可(文档里是说json),例如:$param = array('code'=>$code); 

猜你喜欢

转载自blog.csdn.net/Su_Xingyu/article/details/79806336
今日推荐