阿里云短信接口

15 篇文章 0 订阅

在tp5中调用阿里短信sdk
将sdk放在项目目录 /extend/
sdk下载
定义一个短信类 放在 /application/api/service/Sendsms.php
类文件的代码如下

<?php
namespace app\api\service;

use Aliyun\Core\Config;
use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
/**
 * 阿里发送短信
 */
class Sendsms
{
    protected  $accessKeyId=""; //appid
    protected  $accessKeySecret =""; //秘钥
    protected  $signName =""; //签名内容
    protected  $templateCode =""; //模板id
    //阿里短信函数,$mobile为手机号码,$code为自定义随机数
    public function sendMsg($mobile,$code){
    
        //这里的路径EXTEND_PATH就是指tp5根目录下的extend目录,系统自带常量。alisms为我们复制api_sdk过来后更改的目录名称
        // require_once EXTEND_PATH.'alisms/vendor/autoload.php';
        require_once '../extend/alisms/vendor/autoload.php';
        Config::load();             //加载区域结点配置
        
        $accessKeyId = $this->accessKeyId;  //阿里云短信获取的accessKeyId

        $accessKeySecret = $this->accessKeySecret;    //阿里云短信获取的accessKeySecret
     
        //这个个是审核过的模板内容中的变量赋值,记住数组中字符串code要和模板内容中的保持一致
        //比如我们模板中的内容为:你的验证码为:${code},该验证码5分钟内有效,请勿泄漏!
        $templateParam = array("code"=>$code);           //模板变量替换
     
        $signName = $this->signName; //这个是短信签名,要审核通过
     
        $templateCode = $this->templateCode;   //短信模板ID,记得要审核通过的
        // print_r($templateCode);die;
     
        //短信API产品名(短信产品名固定,无需修改)
        $product = "Dysmsapi";
        //短信API产品域名(接口地址固定,无需修改)
        $domain = "dysmsapi.aliyuncs.com";
        //暂时不支持多Region(目前仅支持cn-hangzhou请勿修改)
        $region = "cn-hangzhou";
        
        // 初始化用户Profile实例
        $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
        // 增加服务结点
        DefaultProfile::addEndpoint("cn-hangzhou", "cn-hangzhou", $product, $domain);
        // 初始化AcsClient用于发起请求
        $acsClient= new DefaultAcsClient($profile);
     
        // 初始化SendSmsRequest实例用于设置发送短信的参数
        $request = new SendSmsRequest();
        // 必填,设置雉短信接收号码
        $request->setPhoneNumbers($mobile);
     
        // 必填,设置签名名称
        $request->setSignName($signName);

        // 必填,设置模板CODE
        $request->setTemplateCode($templateCode);
     
        // 可选,设置模板参数
        if($templateParam) {
            $request->setTemplateParam(json_encode($templateParam));
        }
     
        //发起访问请求
        $acsResponse = $acsClient->getAcsResponse($request);
     
        //返回请求结果
        $result = json_decode(json_encode($acsResponse),true);
        return $result;
    }
}

调用短信接口执行发送代码如下

use app\api\service\Sendsms;
class Index extends Apiclass
{
	/**
     * 发送短信验证
     * @return [type] [description]
     */
     //接收参数 phone 为手机号码
    public function sendSms()
    {
        if(request()->get()){
            $data = request()->get();
            $sms = new Sendsms();
            $mobile = $data['phone'];
            $code = mt_rand(100000, 999999); //生成的验证码
            $res = $sms->sendMsg($mobile,$code);

            if($res['Code'] == "OK"){
                $mobile_code = $code.','.$mobile;
                cookie('code', $mobile_code, 120); //将生成的验证码存入coolie,保存120秒
                return json(['code' => 1, 'data' => '', 'msg' => '动态码已发送!']);
            }else{
                return json(['code' => 102, 'data' => '', 'msg' => '发送失败']);
            }
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值