1.下載sdk包,目錄結(jié)構(gòu)如圖
2.把a(bǔ)pi_sdk復(fù)制放到項(xiàng)目的extend文件夾下,可以修改一下文件名api_sdk可以改成alisms,如圖
3.在alisms文件夾下鍵一個(gè)新的類,名為SendSms(自定義),里面寫一個(gè)SendSms類,(代碼如下)
namespace alisms;
//引入sdk的命名空間
use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
//引入autoload.php,EXTEND_PATH就是指tp5根目錄下的extend目錄,系統(tǒng)自帶常量。alisms為我們復(fù)制api_sdk過來后更改的目錄名稱
require_once EXTEND_PATH.'alisms/vendor/autoload.php';
Config::load();? ? ? ? ? ? //加載區(qū)域結(jié)點(diǎn)配置
class SendSms
{
? ? //關(guān)鍵的配置,我們用成員屬性
? ? public $accessKeyId = '#################'; //阿里云短信獲取的accessKeyId
? ? public $accessKeySecret = '################'; //阿里云短信獲取的accessKeySecret
? ? public $signName = '#####';? ? //短信簽名,要審核通過(例如:無敵小鳥)
? ? public $templateCode = 'SMS_123456567';? ? //短信模板ID,記得要審核通過的
? ? public function send($mobile,$code)
{
? ? ? ? //獲取成員屬性
? ? ? ? $accessKeyId? ? = $this->accessKeyId;
? ? ? ? $accessKeySecret = $this->accessKeySecret;
? ? ? ? $signName? ? ? ? = $this->signName;
? ? ? ? $templateCode? ? = $this->templateCode;
? ? ? ? //短信API產(chǎn)品名(短信產(chǎn)品名固定,無需修改)
? ? ? ? $product = "Dysmsapi";
? ? ? ? //短信API產(chǎn)品域名(接口地址固定,無需修改)
? ? ? ? $domain = "dysmsapi.aliyuncs.com";
? ? ? ? //暫時(shí)不支持多Region(目前僅支持cn-hangzhou請(qǐng)勿修改)
? ? ? ? $region = "cn-hangzhou";
? ? ? ? // 初始化用戶Profile實(shí)例
? ? ? ? $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
? ? ? ? // 增加服務(wù)結(jié)點(diǎn)
? ? ? ? DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain);
? ? ? ? // 初始化AcsClient用于發(fā)起請(qǐng)求
? ? ? ? $acsClient= new DefaultAcsClient($profile);
? ? ? ? // 初始化SendSmsRequest實(shí)例用于設(shè)置發(fā)送短信的參數(shù)
? ? ? ? $request = new SendSmsRequest();
? ? ? ? // 必填,設(shè)置雉短信接收號(hào)碼
? ? ? ? $request->setPhoneNumbers($mobile);
? ? ? ? // 必填,設(shè)置簽名名稱
? ? ? ? $request->setSignName($signName);
? ? ? ? // 必填,設(shè)置模板CODE
? ? ? ? $request->setTemplateCode($templateCode);
? ? ? ? // 可選,設(shè)置模板參數(shù)
? ? ? ? if($code) {
//? ? ? ? ? ? $request->setTemplateParam(json_encode($templateParam));
? ? ? ? ? ? $request->setTemplateParam(json_encode(array("code"=>$code)));
? ? ? ? }
? ? ? ? //發(fā)起訪問請(qǐng)求
? ? ? ? $acsResponse = $acsClient->getAcsResponse($request);
? ? ? ? //返回請(qǐng)求結(jié)果,這里為為數(shù)組格式
? ? ? ? $result = json_decode(json_encode($acsResponse),true);
? ? ? ? return $result;
? ? }
}
4.在自己寫的控制器里調(diào)剛才寫的類,(代碼如下)
namespace app\mobile\controller;
use alisms\SendSms;
class PersonalController extends Controller
{
public function index(){
$sms = new SendSms();
$code = rand(100000,999999);//6位隨機(jī)數(shù)驗(yàn)證碼
$mobile=‘0000000000000000’;//手機(jī)號(hào)
$m = $sms->send($mobile,$code);
}
}