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 相关文章推荐
PHP脚本数据库功能详解(下)
Oct 09 PHP
PHP新手上路(四)
Oct 09 PHP
QQ登录 PHP OAuth示例代码
Jul 20 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
Jul 31 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
Jun 14 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
May 15 PHP
Smarty中调用FCKeditor的方法
Oct 27 PHP
Yii基于数组和对象的Model查询技巧实例详解
Dec 28 PHP
PHP中抽象类、接口的区别与选择分析
Mar 29 PHP
php时间函数用法分析
May 28 PHP
PHP 极验验证码实例讲解
Sep 29 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 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学习的路线图
2013/07/10 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
JS来动态的修改url实现对url的增删查改
2014/09/05 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
AngularJS中一般函数参数传递用法分析
2016/11/22 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
vue与django集成打包的实现方法
2019/11/11 Javascript
解决js中的setInterval清空定时器不管用问题
2020/11/17 Javascript
Vue $attrs &amp; inheritAttr实现button禁用效果案例
2020/12/07 Vue.js
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
浅谈html5 响应式布局
2014/12/24 HTML / CSS
非洲NO.1网上商店:Jumia肯尼亚
2016/08/18 全球购物
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
建筑毕业生自我鉴定
2013/10/18 职场文书
医院总经理岗位职责
2014/02/04 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
财务负责人岗位职责
2015/02/03 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
Python之基础函数案例详解
2021/08/30 Python
Python中itertools库的四个函数介绍
2022/04/06 Python