thinkphp3.2 整合阿里大鱼短信发送接口

在这里说一下这个常用的短信验证码如何使用thinkphp实现吧,登录阿里大鱼,注册登录,然后增加短信模板,签名,这些完成之后,下载sdk,把sdk。

sdk里面对于我们来说有用的文件只有下面这些,注意了,这里标记的5个文件是有用的,而AliMsgSend.class.php文件是我们要写的短信发送接口。

这里写图片描述

如上图,把这5个文件移动到我们项目里面的Library目录下面,我们新建一个AliMsg文件夹,放到这个文件夹里面(如果你问我Library目录在哪里,那么你可以去thinkphp的核心目录里面找一找,哈哈)。

那么我们现在新建文件AliMsgSend.class.php文件,文件内容如下:

<?php

//加载需要的文件
require_once "TopClient.php";
require_once "TopLogger.php";
require_once "AlibabaAliqinFcSmsNumSendRequest.php";
require_once "RequestCheckUtil.php";
require_once "ResultSet.php";


class AliMsgSend{
    //定义key
    private $appkey = null;
    private $secretKey = null;

    public function __construct($_appkey, $_secretKey)
    {
        $this->appkey = $_appkey;
        $this->secretKey = $_secretKey;
    }

    public function __call ($name, $arguments)
    {
        return "The function is not exist!";
    }

    /**阿里大鱼验证码发送接口
     * @param $_RecNum string 手机号,
     * @param $_smsParam json 短信模板变量,
     * @param $_smsTemplateCode string 短信模板id,
     * @param $_extend string 公共回传参数,
     * @param $_smsFreeSignName string 短信签名,
     * @param $_smsType string 短信类型 defult normal,
     * @return bool
     */
    public function sendMsg($_RecNum, $_smsParam, $_smsTemplateCode, $_smsFreeSignName, $_extend = "", $_smsType = "normal")
    {
        $c = new TopClient;
        $c ->appkey = $this->appkey;
        $c ->secretKey = $this->secretKey;
        $req = new AlibabaAliqinFcSmsNumSendRequest;
        $req ->setExtend( $_extend );
        $req ->setSmsType( $_smsType );
        $req ->setSmsFreeSignName( $_smsFreeSignName );
        $req ->setSmsParam( $_smsParam );
        $req ->setRecNum( $_RecNum );
        $req ->setSmsTemplateCode( $_smsTemplateCode );
        $resp = $c ->execute( $req );
        return $this->sendMsgResult($resp);
    }

    /**对接口返回值进行处理
     * @param null $_resp
     * @return bool
     */
    private function sendMsgResult($_resp = null)
    {
        if ($_resp->result->success && !$_resp->result->code) {
            return true;
        } else if ($_resp->code || $_resp->msg == "Remote service error") {
            return false;
        } else {
            return false;
        }
    }
}

好了,接口搞定了,那么我们如何调用它呢,我们只需要在控制器里面写一个方法就可以了。我的方法如下:

        $code=rand(100000,999999); //定义验证码
        session('smscode',$code,600); //把验证码存到session
        import('AliMsg.AliMsgSend'); //引入我们刚才写的接口类
        $appKey = '你的appKey'; 
        $secreKey = '你的secreKey';
        $re = new \AliMsgSend($appKey, $secreKey);
        $recNum = '要发送的手机号码,注意这个是字符串类型的';
        $smsParam = "模板变量";
        $smsTemplateCode = "模板id";
        $smsFreeSignName = "签名";
        $res = $re->sendMsg($recNum, $smsParam, $smsTemplateCode, $smsFreeSignName);

上面的这些参数在你的阿里大鱼控制台里面都可以看到,我就说一下这里的模板变量吧,我们在定义模板的时候会这样写:这是你的注册验证码${code};这样我们就有了一个模板变量,那么我们这里就需要把这个变量传过去,变量是一个json格式的字符串,比如{code:’123456’}。

我们的返回值$res是一个bool值,如果发送成功会返回true,不然会返回false,然后可以根据需要进行处理。

发布了30 篇原创文章 · 获赞 6 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/Thepatterraining/article/details/53261797