网易云信短信验证php,网易云 短信验证码+验证+tp5
* Created by PhpStorm.
* User: Administrator
* Date: 2018/4/8
* Time: 15:15*/namespace app\api\controller;classServerApi
{private $AppKey;private $AppSecret;private $Nonce; //随机数(最大长度128个字符)
private $CurTime; //当前UTC时间戳,从1970年1月1日0点0 分0 秒开始到现在的秒数(String)
private $CheckSum;//SHA1(AppSecret + Nonce + CurTime),三个参数拼接的字符串,进行SHA1哈希计算,转化成16进制字符(String,小写)
const HEX_DIGITS = "0123456789abcdef";/**
* 参数初始化
* @param $AppKey
* @param $AppSecret
* @param $RequestType [选择php请求方式,fsockopen或curl,若为curl方式,请检查php配置是否开启]*/
public function __construct($AppKey,$AppSecret,$RequestType=‘curl‘){$this->AppKey = $AppKey;$this->AppSecret = $AppSecret;$this->RequestType = $RequestType;
}/**
* API checksum校验生成
* @param void
* @return $CheckSum(对象私有属性)*/
public functioncheckSumBuilder(){//此部分生成随机字符串
$hex_digits = self::HEX_DIGITS;$this->Nonce;for($i=0;$i<128;$i++){ //随机字符串最大128个字符,也可以小于该数
$this->Nonce.= $hex_digits[rand(0,15)];
}$this->CurTime = time(); //当前时间戳,以秒为单位
$join_string = $this->AppSecret.$this->Nonce.$this->CurTime;$this->CheckSum = sha1($join_string);
}/**
* 将json字符串转化成php数组
* @param $json_str
* @return $json_arr*/
public function json_to_array($json_str){if(is_null(json_decode($json_str))){$json_str = $json_str;
}else{$json_str = json_decode($json_str);
}$json_arr=array();foreach($json_str as $k=>$w){if(is_object($w)){$json_arr[$k]= $this->json_to_array($w); //判断类型是不是object
}else if(is_array($w)){$json_arr[$k]= $this->json_to_array($w);
}else{$json_arr[$k]= $w;
}
}return $json_arr;
}/**
* 使用CURL方式发送post请求
* @param $url [请求地址]
* @param $data [array格式数据]
* @return $请求返回结果(array)*/
public function postDataCurl($url,$data){$this->checkSumBuilder();//发送请求前需先生成checkSum
$timeout = 5000;$http_header = array(‘AppKey:‘.$this->AppKey,
‘Nonce:‘.$this->Nonce,
‘CurTime:‘.$this->CurTime,
‘CheckSum:‘.$this->CheckSum,
‘Content-Type:application/x-www-form-urlencoded;charset=utf-8‘);$postdata = ‘‘;foreach ($data as $key=>$value){$postdata.= ($key.‘=‘.$value.‘&‘);
}$ch =curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_HEADER, false);
curl_setopt ($ch, CURLOPT_HTTPHEADER,$http_header);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER,false); //处理http证书问题
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);$result = curl_exec($ch);if (false === $result) {$result = curl_errno($ch);
}
curl_close($ch);return $this->json_to_array($result) ;
}/**
* 使用FSOCKOPEN方式发送post请求
* @param $url [请求地址]
* @param $data [array格式数据]
* @return $请求返回结果(array)*/
public function postDataFsockopen($url,$data){$this->checkSumBuilder();//发送请求前需先生成checkSum
$postdata = ‘‘;foreach ($data as $key=>$value){$postdata.= ($key.‘=‘.urlencode($value).‘&‘);
}//building POST-request:
$URL_Info=parse_url($url);if(!isset($URL_Info["port"])){$URL_Info["port"]=80;
}$request = ‘‘;$request.="POST ".$URL_Info["path"]." HTTP/1.1\r\n";$request.="Host:".$URL_Info["host"]."\r\n";$request.="Content-type: application/x-www-form-urlencoded;charset=utf-8\r\n";$request.="Content-length: ".strlen($postdata)."\r\n";$request.="Connection: close\r\n";$request.="AppKey: ".$this->AppKey."\r\n";$request.="Nonce: ".$this->Nonce."\r\n";$request.="CurTime: ".$this->CurTime."\r\n";$request.="CheckSum: ".$this->CheckSum."\r\n";$request.="\r\n";$request.=$postdata."\r\n";print_r($request);$fp = fsockopen($URL_Info["host"],$URL_Info["port"]);fputs($fp, $request);$result = ‘‘;while(!feof($fp)) {$result .= fgets($fp, 128);
}fclose($fp);$str_s = strpos($result,‘{‘);$str_e = strrpos($result,‘}‘);$str = substr($result, $str_s,$str_e-$str_s+1);print_r($result);return $this->json_to_array($str);
}/**
* 发送短信验证码
* @param $templateid [模板编号(由客服配置之后告知开发者)]
* @param $mobile [目标手机号]
* @param $deviceId [目标设备号,可选参数]
* @return $codeLen [验证码长度,范围4~10,默认为4]*/
public function sendSmsCode($templateid,$mobile,$deviceId=‘‘,$codeLen){$url = ‘https://api.netease.im/sms/sendcode.action‘;$data= array(‘templateid‘ => $templateid,
‘mobile‘ => $mobile,
‘deviceId‘ => $deviceId,
‘codeLen‘ => $codeLen);if($this->RequestType==‘curl‘){$result = $this->postDataCurl($url,$data);
}else{$result = $this->postDataFsockopen($url,$data);
}return $result;
}/**
* 发送模板短信
* @param $templateid [模板编号(由客服配置之后告知开发者)]
* @param $mobiles [验证码]
* @param $params [短信参数列表,用于依次填充模板,JSONArray格式,如["xxx","yyy"];对于不包含变量的模板,不填此参数表示模板即短信全文内容]
* @return $result [返回array数组对象]*/
public function sendSMSTemplate($templateid,$mobiles=array(),$params=‘‘){$url = ‘https://api.netease.im/sms/sendtemplate.action‘;$data= array(‘templateid‘ => $templateid,
‘mobiles‘ => json_encode($mobiles),
‘params‘ => json_encode($params)
);if($this->RequestType==‘curl‘){$result = $this->postDataCurl($url,$data);
}else{$result = $this->postDataFsockopen($url,$data);
}return $result;
}
}
网易云信短信验证php,网易云 短信验证码+验证+tp5相关推荐
- 网易云信短信接口java_网易云短信接口测试
1.网易云信官网网址:https://netease.im/sms,注册登录后选择免费试用 ------------------------------------------------------ ...
- 网易云信技术创新,助力网易云音乐社交玩法升级
作为一款国民级音乐App,网易云音乐引领着音乐产品,从播放器工具时代走入了全新的在线音乐社区时代. 音乐社交,体验永远是第一位 网易云音乐作为一个音乐产品,在选择音视频底层技术的时候,对于网络稳定性. ...
- 网易云接口手机号验证码验证登录
今天在写微信小程序时(模仿网易云音乐,根据网易云官方api接口文档,登录接口测试) 1.账号密码登录 //失效 2.手机号验证码登录 //无数据 3.邮箱登录 !!!可行 但是手机号验证码登录还是可以 ...
- 阿里云(短信验证)。。。。网易云短信验证
首先是根据登陆阿里云官网 点击控制台-使用支付宝登录-搜索短信服务-在右上角找到短信操作服务指南-按照里面的步骤进行就可以了 网易云短信验证 语言验证 登录网易网址: https://netease. ...
- 网易云 短信验证码+验证+tp5
废话不说 直接上代码 PHP部分 1.ServerAPI.php(这是网易云短信文档里面的代码,直接复制存在本地然后改了一些 仅供参考) <?php /*** Created by PhpSto ...
- java实现网易云短信接口
httpclient-4.3.6.jar和httpcore-4.3.3.jar jar包 首先去网易云注册账号得到分配的app key 和 App Secret 开通短信有20条试用.使用的是htt ...
- java发送网易云短信验证码(语音和短信)
java发送网易云短信验证码(语音和短信) 1,先拷贝架包 commons-codec commons-codec 1.10 org.apache.httpcomponents httpclient ...
- 基于网易云短信接口开发
开发流程: 生成效验 发送验证码 短信验证 一.生成CheckSum校验 import java.security.MessageDigest; /*** 网易云短信工具类* @author dayu ...
- 网易云信全面技术支持,让“子弹短信”飞得更快
谁也没有想到,在IM这片被巨头们早已稳固的红海,子弹短信会掀起一阵巨浪.近日,子弹短信横空出世,一度攀居App Store免费总榜第一名.同时,"子弹"也炸翻了创投圈,上线短短7天 ...
最新文章
- 树莓派安装python模块_树莓派引脚编号、pypi说明和安装
- 用STM32F103C8T6的做IAP时,在跳转时一直进入HardFault_Handler 解决方法
- 中国通货膨胀率2.8%,数据分析买房风险直线上升
- 用计算机算出你喜欢吃你喜欢的人,Go for it七年级下学期1-12单元(期末复习)句子翻译专练...
- 写一个公用的gpio口驱动
- Typora入门基本教程
- python 工作路径
- 经典排序算法(三)--插入排序Insertion Sort
- c语言中case的作用,c语言中case的用法
- wangEditor 上传附件
- 鸿蒙10 5G手机,国内首款5G手机!中兴天机Axon 10 Pro 5G版体验点名单一览
- 奶爸日记2 - 鑫鑫感动了婆婆
- 中国不必模仿印度软件模式
- yaourt/yay 安装软件出现 parse “XXX“: first path segment in URL cannot contain colon 错误
- 哈工大计算机考研 跨考,2011年哈工大计算机考研经验_跨考网
- 气质数据提取物质信息并批量查阅、翻译
- postman和newman
- BLE蓝牙广播和扫描主要数据设置解析与总结
- 利用pyecharts对职位数据进行地图可视化
- P1546 [USACO3.1]最短网络 Agri-Net
热门文章
- 如何解析超长的protobuf zhuan
- ubuntu 18.04安装USB wifi接收器的驱动
- 思己录-5:我对体验的理解
- 挖坑了挖坑了,走过路过不要错过 。。。
- Line 5: Char 40: error: call to implicitly-deleted default constructor of ‘unordered_map<vector<int>
- Radius协议工作原理及双因素认证应用
- 使用R绘制气泡图、带有显著性标记的热力图、渐变曲线图
- Matplotlib-高级篇
- C# 通过豆瓣网络编程API获取图书信息
- java fseek_fseek函数