一、使用阿里云短信服务

  1. 创建Access Key,获取AccessKeyId与AccessKeySecret
  2. 申请短信签名
  3. 申请短信模板

二、下载SDK
然后下载阿里云的短信服务的SDK包https://help.aliyun.com/docum...

  1. 点击下面的链接下载

clipboard.png

三、配置SDK到项目

  1. 打开下载好的包解压有4个文件,在phalapi目录下的vendor/phalapi下创建aliyunsms目录把api_sdk,msg_sdk放进去

clipboard.png

  1. 在phalapi中引入文件,然后cmd下执行composer dumpautoload,未安装composer的可以百度怎么安装

clipboard.png

clipboard.png

四、创建Sms.php接口并参照文档配置相关参数即可,下面是我的代码

<?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...,即可。


garrett
83 声望0 粉丝

生命不在于你呼吸过多少次,而是那些令你怦然心动到无法呼吸的时刻


引用和评论

0 条评论