接入腾讯短信接口

<?php 

    //发送短信验证码 【tel是手机号,传入的参数】
    public function sendmsm(){
        $tel = $this->request->param('tel');

        //随机数
        $random=$this->getRandPass();

        $code = mt_rand(0000,9999);

        $time = time();
        $url = "https://yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=1400179119&random=".$random;
        $str ="appkey=3e46b66ef2ee6a8f31cb5790912d9d86&random=".$random."&time=".$time."&mobile=".$tel."";


        $sig=hash("sha256", $str);


        $data = '{
            "ext": "",
            "extend": "",
            "params": [
                "山西高考",
                "'.$code.'"
            ],
            "sig": "'.$sig.'",
            "sign": "婚介",  //“婚介”是在腾讯后台申请的短信签名
            "tel": {
                "mobile": "'.$tel.'",
                "nationcode": "86"
            },
            "time":" '.$time.'",
            "tpl_id": "263640"
        }';


        session('dxyzm',$code);

        $res=$this->curlData($url,$data,'POST');

        echo $res;

    }
    //随机字符串
    public function getRandPass($length = 12){

        $password = '';

        //将你想要的字符添加到下面字符串中,默认是数字0-9和26个英文字母

        $chars = "0123456789";

        $char_len = strlen($chars);

        for($i=0;$i<$length;$i++){

            $loop = mt_rand(0, ($char_len-1));

            //将这个字符串当作一个数组,随机取出一个字符,并循环拼接成你需要的位数

            $password .= $chars[$loop];

        }

        return $password;

    }
    //curl请求
    public function curlData($url,$data=array(),$method = 'GET',$type='json')
    {
        //初始化
        $ch = curl_init();
        $headers = [
            'form-data' => ['Content-Type: multipart/form-data'],
            'json'      => ['Content-Type: application/json'],
        ];
        if($method == 'GET'){
            if($data){
                $querystring = http_build_query($data);
                $url = $url.'?'.$querystring;
            }
        }
        // 请求头,可以传数组
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_HTTPHEADER,$headers[$type]);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);         // 执行后不直接打印出来
        if($method == 'POST'){
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'POST');     // 请求方式
            curl_setopt($ch, CURLOPT_POST, true);               // post提交
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);              // post的变量
        }
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 不从证书中检查SSL加密算法是否存在
        $output = curl_exec($ch); //执行并获取HTML文档内容
        curl_close($ch); //释放curl句柄
        return $output;
    }

 ?>

1 协议说明 协议 HTTP POST 编码格式 UTF8 URL 举例:https://yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=xxxxx&random=xxxx 接口说明 给用户发短信验证码、短信通知,营销短信(内容长度不超过450字)。 注:sdkappid请填写您在腾讯云上申请到的,random请填成随机数。 2 请求包体 包体为json字符串,参数如下: { "tel": { //如需使用国际电话号码通用格式,如:"+8613788888888" ,请使用sendisms接口见下注 "nationcode": "86", //国家码 "mobile": "13788888888" //手机号码 }, "type": 0, //0:普通短信;1:营销短信(强调:要按需填值,不然会影响到业务的正常使用) "msg": "你的验证码是1234", //utf8编码,需要匹配审核通过的模板内容 "sig": "ecab4881ee80ad3d76bb1da68387428ca752eb885e52621a3129dcf4d9bc4fd4", //app凭证,具体计算方式见下注 "time": 1457336869, //unix时间戳,请求发起时间,如果和系统时间相差超过10分钟则会返回失败 "extend": "", //通道扩展码,可选字段,默认没有开通(需要填空)。 //在短信回复场景中,腾讯server会原样返回,开发者可依此区分是哪种类型的回复 "ext": "" //用户的session内容,腾讯server回包中会原样返回,可选字段,不需要就填空。 } 注: 1、"msg"字段需要匹配审核通过的模板内容 如果您的模板是"你的验证码是{1}",则"msg"字段可赋值为:"你的验证码是xxxx"。(其中"xxxx"为下发的验证码) 如果您有多个短信签名,请将需要的短信签名放在短信内容前面 例如您有"【腾讯科技】","【腾讯云】"两个签名,但是想以"【腾讯云】"签名发送短信, 则"msg"字段可赋值为:"【腾讯云】你的验证码是xxxx"。(其中"xxxx"为下发的验证码) 2、"extend"字段的配置请联系腾讯短信技术支持 3、sendisms接口,"tel"字段为国际电话号码通用格式,如:"+8613788888888" 4、"sig"字段根据公式sha256(appkey=$appkey&random=$random&time=$time&mobile=$mobile)生成 伪代码如下: string strMobile = "13788888888"; //tel的mobile字段的内容 string strAppKey = "5f03a35d00ee52a21327ab048186a2c4"; //sdkappid对应的appkey,需要业务方高度保密 string strRand = "7226249334"; //url中的random字段的值 string strTime = "1457336869"; //unix时间戳 string sig = sha256(appkey=5f03a35d00ee52a21327ab048186a2c4&random=7226249334&time=1457336869&mobile=13788888888) = ecab4881ee80ad3d76bb1da68387428ca752eb885e52621a3129dcf4d9bc4fd4; 3 应答包体 { "result": 0, //0表示成功(计费依据),非0表示失败 "errmsg": "OK", //result非0时的具体错误信息 "ext": "", //用户的session内容,腾讯server回包中会原样返回 "sid": "xxxxxxx", //标识本次发送id,标识一次短信下发记录 "fee": 1 //短信计费的条数 } 1.需要申请腾讯短信的 appid 和 appkey  (详见 https://console.cloud.tencent.com/sms) 2.需要申请一个 短信签名+ 短信模版
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值