以下为laravel版本.  tp版本一样可用只需修改redis以及正确调用我解析后的文件即可

首先需要引入极光提供的SDK文件

在项目中的 composer.json 文件中添加 JSMS 依赖

"require": {"jiguang/jsms": "~1.0"
}
执行$ php composer.phar install
或 $ composer install
进行安装。

我把jsms/src下的JSMS.php进行了解释

在app下创建Libraries 然后创建一个JSMS.php文件 复制以下代码

<?php
namespace App\Libraries\JiGuang;
final class JSMS {const URL = 'https://api.sms.jpush.cn/v1/';
//    const URL = 'https://api.sms.jpush.cn/v1/codes';private $appKey;private $masterSecret;private $options;//构造函数public function __construct($appKey, $masterSecret, array $options = array()) {$this->appKey = $appKey;$this->masterSecret = $masterSecret;$this->options = array_merge(['ssl_verify'  => true,'disable_ssl' => false], $options);}//发送验证码public function sendCode($mobile, $temp_id) {$url = self::URL . 'codes';$body = array('mobile' => $mobile, 'temp_id' => $temp_id);return $this->request('POST', $url, $body);}//发送验证码public function sendVoiceCode($mobile, $options = []) {$url = self::URL . 'voice_codes';$body = array('mobile' => $mobile);if (!empty($options)) {if (is_array($options)) {$body = array_merge($options, $body);} else {$body['ttl'] = $options;}}return $this->request('POST', $url, $body);}//验证的验证码public function checkCode($msg_id, $code) {$url = self::URL . 'codes/' . $msg_id . "/valid";$body = array('code' => $code);return $this->request('POST', $url, $body);}public function sendMessage($mobile, $temp_id, array $temp_para = [], $time = null) {$path = 'messages';$body = array('mobile'    => $mobile,'temp_id'   => $temp_id,);if (!empty($temp_para)) {$body['temp_para'] = $temp_para;}if (isset($time)) {$path = 'schedule';$body['send_time'] = $time;}$url = self::URL . $path;return $this->request('POST', $url, $body);}public function sendBatchMessage($temp_id, array $recipients, $time = null) {$path = 'messages';foreach ($recipients as $mobile => $temp_para) {$r[] = array('mobile'    => $mobile,'temp_para' => $temp_para);}$body = array('temp_id'    => $temp_id,'recipients' => $r);if (isset($time)) {$path = 'schedule';$body['send_time'] = $time;}$url = self::URL . $path . '/batch';return $this->request('POST', $url, $body);}public function showSchedule($scheduleId) {$url = self::URL . 'schedule/' . $scheduleId;return $this->request('GET', $url);}public function deleteSchedule($scheduleId) {$url = self::URL . 'schedule/' . $scheduleId;return $this->request('DELETE', $url);}public function getAppBalance() {$url = self::URL . 'accounts/app';return $this->request('GET', $url);}private function request($method, $url, $body = []) {$ch = curl_init();$options = array(CURLOPT_RETURNTRANSFER => true,CURLOPT_HEADER => true,CURLOPT_HTTPHEADER => array('Content-Type: application/json','Connection: Keep-Alive'),CURLOPT_USERAGENT => 'JSMS-API-PHP-CLIENT',CURLOPT_CONNECTTIMEOUT => 20,CURLOPT_TIMEOUT => 120,CURLOPT_HTTPAUTH => CURLAUTH_BASIC,CURLOPT_USERPWD => $this->appKey . ":" . $this->masterSecret,CURLOPT_URL => $url,CURLOPT_CUSTOMREQUEST => $method,);if (!$this->options['ssl_verify']|| (bool) $this->options['disable_ssl']) {$options[CURLOPT_SSL_VERIFYPEER] = false;$options[CURLOPT_SSL_VERIFYHOST] = 0;}if (!empty($body)) {$options[CURLOPT_POSTFIELDS] = json_encode($body);}curl_setopt_array($ch, $options);$output = curl_exec($ch);if($output === false) {return "Error Code:" . curl_errno($ch) . ", Error Message:".curl_error($ch);} else {$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);$header_text = substr($output, 0, $header_size);$body = substr($output, $header_size);$headers = array();foreach (explode("\r\n", $header_text) as $i => $line) {if (!empty($line)) {if ($i === 0) {$headers[0] = $line;} else if (strpos($line, ": ")) {list ($key, $value) = explode(': ', $line);$headers[$key] = $value;}}}$response['headers'] = $headers;$response['body'] = json_decode($body, true);$response['http_code'] = $httpCode;}curl_close($ch);return $response;}
}

引入自己的类库或者函数

在项目目录下composer.json中加入

"autoload": {"files":["app/Libraries/JSMS.php"]
}

在项目目录下执行

composer dump-autoload
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;use App\Libraries\JiGuang\JSMS;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Redis;/*** Created by PhpStorm.* User: admin* Date: 2018/12/12* Time: 15:01*/// 记得先composer 引入第三方类    composer dumpautoload
class SmsController extends Controller{public function no($data = [],$msg='失败',$code=404){return ['data' => $data,'msg' => $msg,'code' => $code];}public function ok($data = [],$msg='成功',$code=200){return [ 'data' => $data,'msg' => $msg,'code' => $code ];}public function index(Request $request){//如果需要redis进行ip存储,请确保可以连接上redis$redis=new Redis();$redis->connect('127.0.0.1',6379);$key =   $this->get_real_ip();//获取客户端真实ip地址$check = $redis->exists($key);//判断是否存在if($check){//如果存在$redis->incr($key);//值自增1$count = $redis->get($key);//获取值if($count > 3){return $this->no('','获取频率太快,请稍后尝试');}}else{//限制时间为300秒$redis->set($key,0,300);//设置reids键为k,值为0,有效时间300秒}//-------------------短信开始-------------------////1.初始化$app_key = 'XXXXXXXXXXXXXXXXXXX';$master_secret = 'XXXXXXXXXXXXXX';$temp_id = '1';//设置的短信模板id// $temp_para = ['test' => 'jiguang'];$client = new JSMS($app_key, $master_secret);//-------------------短信结束-------------------//$data = $request->all();$phone = $data['phone'];//$msg_id: 发送验证码 sendCode 函数返回的数组中的 msg_id 键对应的值//2.证书问题$client = new JSMS($app_key, $master_secret, [ 'disable_ssl' => true ]);//3.发送短信验证码$data = $client->sendCode($phone, $temp_id);$msg_id = $data['body']['msg_id'];//获取到当前手机号码验证码的唯一idreturn $this->ok($msg_id);}function check($msg_id,$code){$app_key = 'XXXXXXXX';$master_secret = 'XXXXXXXXXXXXXXX';$client = new JSMS($app_key, $master_secret, [ 'disable_ssl' => true ]);$check =  $client->checkCode($msg_id, $code);//用id和验证码去服务器进行校验$is_ok=$check['http_code'];return $is_ok;//返回状态码}//获取客户端真实ip地址function get_real_ip(){static $realip;if(isset($_SERVER)){if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){$realip=$_SERVER['HTTP_X_FORWARDED_FOR'];}else if(isset($_SERVER['HTTP_CLIENT_IP'])){$realip=$_SERVER['HTTP_CLIENT_IP'];}else{$realip=$_SERVER['REMOTE_ADDR'];}}else{if(getenv('HTTP_X_FORWARDED_FOR')){$realip=getenv('HTTP_X_FORWARDED_FOR');}else if(getenv('HTTP_CLIENT_IP')){$realip=getenv('HTTP_CLIENT_IP');}else{$realip=getenv('REMOTE_ADDR');}}return $realip;}
}

前端利用ajax请求发送验证码获取到msg_id, 提交表单时请求 check() 方法传入msg_id以及验证码即可进行校对

第一次写文章. 如果有错,请各位大佬多多包涵

极光推送短信api接口相关推荐

  1. JPush极光推送Java服务器端API

    菜鸟的春天 JPush极光推送Java服务器端API // 对android和ios设备发送 JPushClient jpush = new JPushClient(masterSecret, app ...

  2. 中国移动飞信免费发短信API接口(第三方)

    飞信是由中国移动通信集团公司推出的一款集商务应用和娱乐功能为一体的,基于手机应用以及与Internet深度互通的即时通讯产品,可免费给好友发送短信. 1.下载中国移动飞信PC客户端软件(http:// ...

  3. 飞信免费发短信API接口调用方式

    飞信免费发短信API接口调用方式(通过HTTP访问以下网址.支持GET和POST): http://sms.api.bz/fetion.php?username=您的移动飞信登录手机号&pas ...

  4. 中国移动飞信免费发短信API接口(第三方 Fetion API)

    [文章作者:张宴 本文版本:v1.1 最后修改:2010.08.03 转载请注明原文链接: http://blog.s135.com/fetion_api/ ] 备注:2010年7月底移动飞信修改协议 ...

  5. JAVA 短信API接口调用 附 文档 Demo

    JAVA 短信API接口调用 附 文档 Demo 1.请求地址 http://host:port/sms 请求方式可以 POST 和 GET方式,建议采用POST方式 2.参数说明 参数需要 URLE ...

  6. 中国移动飞信免费发短信API接口

    飞信是由中国移动通信集团公司推出的一款集商务应用和娱乐功能为一体的,基于手机应用以及与Internet深度互通的即时通讯产品,可免费给好友发送短信. 1.下载中国移动飞信PC客户端软件(http:// ...

  7. 中国移动飞信免费发短信API接口(第三方) 1

    Code [文章作者:张宴 本文版本:v1.0 最后修改:2009.03.22 转载请注明原文链接:http://blog.s135.com/fetion_api/] 飞信是由中国移动通信集团公司推出 ...

  8. 中国移动飞信免费发短信API接口(第三方 Fetion API

    飞信 是由中国移动通信集团公司推出的一款集商务应用和娱乐功能为一体的,基于手机应用以及与Internet深度互通的即时通讯产品,可免费给好友发送短信. 1.下载中国移动飞信PC客户端软件(http:/ ...

  9. php集成极光推送,thinkphp 写APP接口集成极光推送的例子

    下面我们来看一篇关于thinkphp 写APP接口集成极光推送,对于app的数据都得通过接口来实现了,当然也有内置数据库的不过这种非常少了. 最近用Thinkphp写了个App接口用到第三方推送功能, ...

  10. 使用腾讯云发送短信API接口实现(完整流程)

    步骤 一.开通腾讯云短信服务 二.申请签名前的准备(申请公众号) 三.创建签名和模板 四.腾讯云API实现发送短信 五.使用springboot进行调用 六.可能会报的错误 一.开通腾讯云短信服务 在 ...

最新文章

  1. 022变量,cp,mv,查看文本命令
  2. c:数据结构-线性表
  3. SpringBoot 项目中使用velocity模板(转载)
  4. docker-compose部署常用服务
  5. java 队列和堆栈_Java中的堆栈和队列
  6. mysql binlog 备份_MySQL的binlog知识梳理
  7. android 单元测试 多线程,多线程之单元测试(Junit)
  8. ADO.NET与ORM的比较(4):EntityFramework实现CRUD
  9. 谷歌披露利用 Windows 和安卓双平台的高阶攻击活动
  10. linux使用fabric教程,Hyperledger fabric在Linux下的环境搭建
  11. marathon传参一
  12. Java和jsp编程中应该注意的几个常见问题
  13. C++入门项目——通讯管理系统
  14. 《韩立刚计算机网络》第二章
  15. 手把手教你用keras搭建GAN
  16. matlab抠图数据,MATLAB抠图
  17. 石器时代地图->魔力宝贝地图
  18. 台式电脑插入耳机听不到声音,排除耳机问题
  19. 天猫四大独门利器,助力品牌引领消费趋势
  20. You-get 万能的音视频下载工具

热门文章

  1. 【英语四六级-必背单词】高中英语单词 (H)-MP3试听与下载
  2. Kms 激活服务器搭建
  3. 北京云计算HCIE培训机构入门技术快速了解laaS、Paas和 SaaS的区别-ielab网络实验室
  4. C28x FIR - Filter 示例汇编代码解读
  5. b站的视频如何下载到手机上
  6. 谷歌浏览器使用复制的功能
  7. mysql 模糊查询 查询条件为多个
  8. 卡方检验四格表怎么做_运用SPSS进行医学诊断数据的Kappa一致性检验 ——【杏花开医学统计】...
  9. dns配置异常怎么修复_DNS错误怎么办(如何正确设置DNS)
  10. html初始化调用js函数