一、官方資料
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限制等,最好多個短信平臺一起使用(一個平臺發送失敗,可以用其他平臺繼續發送)