Phalapi2.X 擴展使用阿里雲短信服務

1、使用阿里雲短信服務php

  1. 建立Access Key,獲取AccessKeyId與AccessKeySecret
  2. 申請短信簽名
  3. 申請短信模板

2、下載SDK
而後下載阿里雲的短信服務的SDK包https://help.aliyun.com/docum...html

  1. 點擊下面的連接下載

clipboard.png

3、配置SDK到項目json

  1. 打開下載好的包解壓有4個文件,在phalapi目錄下的vendor/phalapi下建立aliyunsms目錄把api_sdk,msg_sdk放進去

clipboard.png

  1. 在phalapi中引入文件,而後cmd下執行composer dumpautoload,未安裝composer的能夠百度怎麼安裝

clipboard.png

clipboard.png

4、建立Sms.php接口並參照文檔配置相關參數便可,下面是個人代碼api

<?php 
namespace App\Api;

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

// 加載區域結點配置
Config::load();

class Sms extends Api
{
    static $acsClient = null;


    /**
     * 獲取AcsClient
     * @return DefaultAcsClient
     */
    public static function getAcsClient() {
        //產品名稱:雲通訊短信服務API產品
        $product = "Dysmsapi";

        //產品域名
        $domain = "dysmsapi.aliyuncs.com";

        // accesskey
        $accessKeyId = "accesskeyid"; // AccessKeyId

        $accessKeySecret = "accesskeysecret"; // AccessKeySecret

        // 暫時不支持多Region
        $region = "cn-hangzhou";

        // 服務結點
        $endPointName = "cn-hangzhou";


        if(static::$acsClient == null) {

            //初始化acsClient,暫不支持region化
            $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);

            // 增長服務結點
            DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);

            // 初始化AcsClient用於發起請求
            static::$acsClient = new DefaultAcsClient($profile);
        }
        return static::$acsClient;
    }

    /**
     * 發送短信
     * @param setPhoneNumbers接收的電話號碼
     * @param setSignName  簽名名稱
     * @param setTemplateCode  短信模板CODE
     *
     * @return stdClass
     */
    public static function sendSms($phoneNumbers,$signName,$templateCode,$outId=null) {

        // 初始化SendSmsRequest實例用於設置發送短信的參數
        $request = new SendSmsRequest();

        //設置短信接收號碼
        $request->setPhoneNumbers($phoneNumbers);

        //設置簽名名稱
        $request->setSignName($signName);

        //設置短信模板CODE
        $request->setTemplateCode($templateCode);

        $num = rand(100000,999999); //驗證碼

        // 可選,設置模板參數
        $request->setTemplateParam(json_encode(array(  // 短信模板中字段的值
            "code"=>$num
        ), JSON_UNESCAPED_UNICODE));

        //$outId = null;

        // 可選,設置流水號
        $request->setOutId($outId);

        // 發起訪問請求
        $acsResponse = static::getAcsClient()->getAcsResponse($request);

        return $acsResponse;
    }

    public function getCode()
    {
        $phoneNumbers = '12345678910';
        $signName = '簽名名稱'
        $templateCode = 'SMS_123455';
        $outId=1234555666
        $response = $this->sendSms($phoneNumbers,$signName,$templateCode,$outId);

        $res = 'ok';//執行
        return $res;
    }

}

而後直接訪問接口http://api.xxxx.net/?s=Sms.ge...,便可。composer

相關文章
相關標籤/搜索