* 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相关推荐

  1. 网易云信短信接口java_网易云短信接口测试

    1.网易云信官网网址:https://netease.im/sms,注册登录后选择免费试用 ------------------------------------------------------ ...

  2. 网易云信技术创新,助力网易云音乐社交玩法升级

    作为一款国民级音乐App,网易云音乐引领着音乐产品,从播放器工具时代走入了全新的在线音乐社区时代. 音乐社交,体验永远是第一位 网易云音乐作为一个音乐产品,在选择音视频底层技术的时候,对于网络稳定性. ...

  3. 网易云接口手机号验证码验证登录

    今天在写微信小程序时(模仿网易云音乐,根据网易云官方api接口文档,登录接口测试) 1.账号密码登录 //失效 2.手机号验证码登录 //无数据 3.邮箱登录 !!!可行 但是手机号验证码登录还是可以 ...

  4. 阿里云(短信验证)。。。。网易云短信验证

    首先是根据登陆阿里云官网 点击控制台-使用支付宝登录-搜索短信服务-在右上角找到短信操作服务指南-按照里面的步骤进行就可以了 网易云短信验证 语言验证 登录网易网址: https://netease. ...

  5. 网易云 短信验证码+验证+tp5

    废话不说 直接上代码 PHP部分 1.ServerAPI.php(这是网易云短信文档里面的代码,直接复制存在本地然后改了一些 仅供参考) <?php /*** Created by PhpSto ...

  6. java实现网易云短信接口

    httpclient-4.3.6.jar和httpcore-4.3.3.jar jar包 首先去网易云注册账号得到分配的app key 和 App Secret  开通短信有20条试用.使用的是htt ...

  7. java发送网易云短信验证码(语音和短信)

    java发送网易云短信验证码(语音和短信) 1,先拷贝架包 commons-codec commons-codec 1.10 org.apache.httpcomponents httpclient ...

  8. 基于网易云短信接口开发

    开发流程: 生成效验 发送验证码 短信验证 一.生成CheckSum校验 import java.security.MessageDigest; /*** 网易云短信工具类* @author dayu ...

  9. 网易云信全面技术支持,让“子弹短信”飞得更快

    谁也没有想到,在IM这片被巨头们早已稳固的红海,子弹短信会掀起一阵巨浪.近日,子弹短信横空出世,一度攀居App Store免费总榜第一名.同时,"子弹"也炸翻了创投圈,上线短短7天 ...

最新文章

  1. 树莓派安装python模块_树莓派引脚编号、pypi说明和安装
  2. 用STM32F103C8T6的做IAP时,在跳转时一直进入HardFault_Handler 解决方法
  3. 中国通货膨胀率2.8%,数据分析买房风险直线上升
  4. 用计算机算出你喜欢吃你喜欢的人,Go for it七年级下学期1-12单元(期末复习)句子翻译专练...
  5. 写一个公用的gpio口驱动
  6. Typora入门基本教程
  7. python 工作路径
  8. 经典排序算法(三)--插入排序Insertion Sort
  9. c语言中case的作用,c语言中case的用法
  10. wangEditor 上传附件
  11. 鸿蒙10 5G手机,国内首款5G手机!中兴天机Axon 10 Pro 5G版体验点名单一览
  12. 奶爸日记2 - 鑫鑫感动了婆婆
  13. 中国不必模仿印度软件模式
  14. yaourt/yay 安装软件出现 parse “XXX“: first path segment in URL cannot contain colon 错误
  15. 哈工大计算机考研 跨考,2011年哈工大计算机考研经验_跨考网
  16. 气质数据提取物质信息并批量查阅、翻译
  17. postman和newman
  18. BLE蓝牙广播和扫描主要数据设置解析与总结
  19. 利用pyecharts对职位数据进行地图可视化
  20. P1546 [USACO3.1]最短网络 Agri-Net

热门文章

  1. 如何解析超长的protobuf zhuan
  2. ubuntu 18.04安装USB wifi接收器的驱动
  3. 思己录-5:我对体验的理解
  4. 挖坑了挖坑了,走过路过不要错过 。。。
  5. Line 5: Char 40: error: call to implicitly-deleted default constructor of ‘unordered_map<vector<int>
  6. Radius协议工作原理及双因素认证应用
  7. 使用R绘制气泡图、带有显著性标记的热力图、渐变曲线图
  8. Matplotlib-高级篇
  9. C# 通过豆瓣网络编程API获取图书信息
  10. java fseek_fseek函数