php短信接口代码


Posted in PHP onMay 13, 2016

本文实例为大家分享了几个常用的php短信接口代码,供大家参考,具体内容如下

1. 短信调用class    

<?php
/**
 * User: Administrator
 * Date: 2016/5/8 0008
 * Time: 下午 2:36
 */
class Sms{
 
 
  //Luosimao api key
  private $_api_key = '';
 
  private $_last_error = array();
 
 
  private $_use_ssl = FALSE;
 
  private $_ssl_api_url = array(
    'send'    => 'https://3water.com/v1/send.json',
    'send_batch' => 'https://3water.com/v1/send_batch.json',
    'status'   => 'https://3water.com/v1/status.json',
  );
 
  private $_api_url = array(
    'send'    => 'https://3water.com/v1/send.json',
    'send_batch' => 'https://3water.com/send_batch.json',
    'status'   => 'https://3water.com/v1/status.json',
  );
 
  /**
   * @param array $param 配置参数
   * api_key api秘钥,在luosimao短信后台短信->触发发送下面可查看
   * use_ssl 启用HTTPS地址,HTTPS有一定性能损耗,可选,默认不启用
   */
  public function __construct( $param = array() ){
 
    if( !isset( $param['api_key'] ) ){
      die("api key error.");
    }
 
    if( isset( $param['api_key'] ) ){
      $this->_api_key = $param['api_key'];
    }
 
    if( isset( $param['use_ssl'] ) ){
      $this->_use_ssl = $param['use_ssl'];
    }
 
  }
 
  //触发,单发,适用于验证码,订单触发提醒类
  public function send( $mobile , $message = '' ){
    $api_url = !$this->_use_ssl ? $this->_api_url['send'] : $this->_ssl_api_url['send'];
    $param = array(
      'mobile' => $mobile ,
      'message' => $message,
    );
    $res = $this->http_post( $api_url ,$param );
    return @json_decode( $res ,TRUE );
  }
 
  //批量发送,用于大批量发送
  public function send_batch( $mobile_list = array() , $message = array() , $time = '' ){
    $api_url = !$this->_use_ssl ? $this->_api_url['send_batch'] : $this->_ssl_api_url['send_batch'];
    $mobile_list = is_array( $mobile_list ) ? implode( ',' , $mobile_list ) : $mobile_list;
    $param = array(
      'mobile_list' => $mobile_list ,
      'message' => $message,
      'time'  => $time,
    );
    $res = $this->http_post( $api_url ,$param );
    return @json_decode( $res ,TRUE );
  }
 
  //获取短信账号余额
  public function get_deposit(){
    $api_url = !$this->_use_ssl ? $this->_api_url['status'] : $this->_ssl_api_url['status'];
    $res = $this->http_get( $api_url );
    return @json_decode( $res ,TRUE );
  }
 
  /**
   * @param string $type 接收类型,用于在服务器端接收上行和发送状态,接收地址需要在luosimao后台设置
   * @param array $param 传入的参数,从推送的url中获取,官方文档:https://luosimao.com/docs/api/
   */
  public function recv( $type = 'status' , $param = array() ){
    if( $type == 'status' ){
      if( $param['batch_id'] && $param['mobile'] && $param['status'] ){ //状态
        // do record
      }
    }elseif( $type == 'incoming' ){ //上行回复
      if( $param['mobile'] && $param['message'] ){
        // do record
      }
    }
  }
 
  /**
   * @param string $api_url 接口地址
   * @param array $param post参数
   * @param int $timeout 超时时间
   * @return bool
   */
  private function http_post( $api_url = '' , $param = array() , $timeout = 5 ){
 
    if( !$api_url ){
      die("error api_url");
    }
 
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_URL, $api_url );
 
    curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_0 );
    curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt( $ch, CURLOPT_HEADER, FALSE);
 
    if( parse_url( $api_url )['scheme'] == 'https' ){
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST , FALSE);
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , FALSE);
    }
 
    curl_setopt( $ch, CURLOPT_HTTPAUTH , CURLAUTH_BASIC);
    curl_setopt( $ch, CURLOPT_USERPWD , 'api:key-'.$this->_api_key );
    curl_setopt( $ch, CURLOPT_POST, TRUE);
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $param );
 
    $res  = curl_exec( $ch );
    $error = curl_error( $ch );
    curl_close( $ch );
    if( $error ){
      $this->_last_error[] = $error;
      return FALSE;
    }
    return $res;
  }
 
  /**
   * @param string $api_url 接口地址
   * @param string $timeout 超时时间
   * @return bool
   */
  private function http_get( $api_url = '' , $timeout = '' ){
 
    if( !$api_url ){
      die("error api_url");
    }
 
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_URL, $api_url );
 
    curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_0 );
    curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt( $ch, CURLOPT_HEADER, FALSE);
 
    if( parse_url( $api_url )['scheme'] == 'https' ){
      curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST , FALSE);
      curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER , FALSE);
    }
    curl_setopt( $ch, CURLOPT_HTTPAUTH , CURLAUTH_BASIC);
    curl_setopt( $ch, CURLOPT_USERPWD , 'api:key-'.$this->_api_key );
 
    $res  = curl_exec( $ch );
    $error = curl_error( $ch );
    curl_close( $ch );
    if( $error ){
      $this->_last_error[] = curl_error( $ch );
      return FALSE;
    }
    return $res;
  }
 
  public function last_error(){
    return $this->_last_error;
  }
}

2.短信发送示例    

//send 单发接口
 
require 'sms.php';
$sms = new Sms( array('api_key' => '86f52f3ce0647dc24da53eafe29fadd4' , 'use_ssl' => FALSE ) );
$res = $sms->send_batch( array('13761428268') , '验证码:19272【三水点靠木】');
if( $res ){
  if( isset( $res['error'] ) && $res['error'] == 0 ){
    echo 'success';
  }else{
    echo 'failed,code:'.$res['error'].',msg:'.$res['msg'];
  }
}else{
  var_dump( $sms->last_error() );
}
exit;

3.批量发送示例    

require 'sms.php';
$sms = new Sms( array('api_key' => '86f52f3ce0647dc24da53eafe29fadd4' , 'use_ssl' => FALSE ) );
 
 
//send 单发接口
$res = $sms->send_batch( array('13761428268') , '验证码:19272【三水点靠木】');
if( $res ){
  if( isset( $res['error'] ) && $res['error'] == 0 ){
    echo 'success';
  }else{
    echo 'failed,code:'.$res['error'].',msg:'.$res['msg'];
  }
}else{
  var_dump( $sms->last_error() );
}
exit;

4.获取余额示例    

//deposit 余额查询
require 'sms.php';
$sms = new Sms( array('api_key' => '86f52f3ce0647dc24da53eafe29fadd4' , 'use_ssl' => FALSE ) );
 
$res = $sms->get_deposit();
if( $res ){
  if( isset( $res['error'] ) && $res['error'] == 0 ){
    echo 'desposit:'.$res['deposit'];
  }else{
    echo 'failed,code:'.$res['error'].',msg:'.$res['msg'];
  }
}else{
  var_dump( $sms->last_error() );
}
exit;

以上就是本文的全部内容,希望对大家的学习有所帮助。

PHP 相关文章推荐
提取HTML标签
Oct 09 PHP
php 进度条实现代码
Mar 10 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
Mar 29 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 PHP
总结PHP中DateTime的常用方法
Aug 11 PHP
php添加数据到xml文件的简单例子
Sep 08 PHP
php json相关函数用法示例
Mar 28 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
Jun 01 PHP
php-fpm重启导致的程序执行中断问题详解
Apr 29 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 PHP
PHP 扩展Memcached命令用法实例总结
Jun 04 PHP
PHP实现爬虫爬取图片代码实例
Mar 03 PHP
php实现在线通讯录功能(附源码)
May 13 #PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
May 13 #PHP
php仿微信红包分配算法的实现方法
May 13 #PHP
PHP简单实现无限级分类的方法
May 13 #PHP
PHP生成可点击刷新的验证码简单示例
May 13 #PHP
关于PHP文件的自动运行方法分析
May 13 #PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
May 13 #PHP
You might like
php基础知识:类与对象(1)
2006/12/13 PHP
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
2014/04/29 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
2015/04/01 PHP
php简单判断两个字符串是否相等的方法
2015/07/13 PHP
PHP简单实现防止SQL注入的方法
2018/03/13 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
jquery 弹出层实现代码
2009/10/30 Javascript
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
JS实现可拖曳、可关闭的弹窗效果
2015/09/26 Javascript
jQuery中$.each()函数的用法引申实例
2016/05/12 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
JS设计模式之访问者模式定义与用法分析
2018/02/05 Javascript
JS声明对象时属性名加引号与不加引号的问题及解决方法
2018/02/16 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
python获取命令行输入参数列表的实例代码
2018/06/23 Python
详解Python正则表达式re模块
2019/03/19 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
Python2与Python3的区别点整理
2019/12/12 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
python中如何进行连乘计算
2020/05/28 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
应届优秀本科大学毕业生自我鉴定
2014/01/21 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB