阿里雲短信

一、官方資料

https://help.aliyun.com/document_detail/55501.html?spm=5176.doc55451.6.539.r5rP1D

二、下載SDK(選擇合適的語言)
https://help.aliyun.com/document_detail/55359.html?spm=5176.doc55501.6.569.aCqx8E

三、使用

1,將下載的文件放入需要使用的項目中。

2,自定義類使用SDK

<?php

    /**
     * 阿里雲短信
     */
    class Dg_Helper_AliyunSms
    {
        //此處需要替換成自己的AK信息
        private $_accessKeyId = 'xxx';
        private $_accessKeySecret = 'xxx';
        //短信API產品名
        private $_product = 'Dysmsapi';
        //短信API產品域名
        private $_domain = 'dysmsapi.aliyuncs.com';
        //暫時不支持多Region
        private $_region = 'cn-hangzhou';

        public function __construct()
        {
            $path = dirname(dirname(__FILE__));
            include $path.'/Message/aliyun/api_sdk/aliyun-php-sdk-core/Config.php';
            include_once $path.'/Message/aliyun/api_sdk/Dysmsapi/Request/V20170525/SendSmsRequest.php';
            include_once $path.'/Message/aliyun/api_sdk/Dysmsapi/Request/V20170525/QuerySendDetailsRequest.php';
        }
        
        /**
         * 發送短信
         * @param  integer $phone         電話號碼
         * @param  string  $templateCode  模板編號
         * @param  array   $templateParam 選填,模板參數
         * @param  string  $signName      短信簽名
         * @param  integer $outId         短信流水號
         */
        public function sendMessage($phone, $templateCode, $templateParam = array(), $signName = '短信簽名', $outId = false)
        {
            //初始化訪問的acsCleint
            $profile = DefaultProfile::getProfile($this->_region, $this->_accessKeyId, $this->_accessKeySecret);
            DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $this->_product, $this->_domain);
            $acsClient= new DefaultAcsClient($profile);

            $request = new Dysmsapi\Request\V20170525\SendSmsRequest;
            //必填-短信接收號碼
            $request->setPhoneNumbers($phone);
            //必填-短信簽名
            $request->setSignName($signName);
            //必填-短信模板Code
            $request->setTemplateCode($templateCode);
            //選填-假如模板中存在變量需要替換則爲必填(JSON格式)
            if ( !empty($templateParam) ) {
                $request->setTemplateParam(json_encode($templateParam));
            }
            //選填-發送短信流水號
            if ( $outId ) {
                $request->setOutId($outId);
            }
            
            //發起訪問請求
            $acsResponse = $acsClient->getAcsResponse($request);
            return json_decode(json_encode($acsResponse), true);
        }

        /**
         * 發送驗證碼短信
         * @param  integer $phone         電話號碼
         * @param  integer $code          激活碼
         * @param  integer $expire_time   失效時間,該有效時間爲redis緩存有效時間
         */
        public function sendVcodeMessage($phone, $code = false, $expire_time = false)
        {            
            $templateCode  = 'SMS_12345678';
            $templateParam = array(
                'code' => $code,
                'expire_time' => $expire_time ? $expire_time : '',
            );
            return $this->sendMessage($phone, $templateCode, $templateParam);
        }       
    }

3,調用

四、注意

短信平臺一般有各種限制,比如單一IP限制等,最好多個短信平臺一起使用(一個平臺發送失敗,可以用其他平臺繼續發送)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章