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&amp;MYSQL服务器配置说明
Oct 09 PHP
PHP之生成GIF动画的实现方法
Jun 07 PHP
PHP中array_merge和array相加的区别分析
Jun 17 PHP
php随机显示图片的简单示例
Feb 15 PHP
PHP截取指定图片大小的方法
Dec 10 PHP
PHP获取毫秒级时间戳的方法
Apr 15 PHP
php检查字符串中是否有外链的方法
Jul 29 PHP
WordPress中自定义后台管理界面配色方案的小技巧
Dec 29 PHP
常用PHP封装分页工具类
Jan 14 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
Mar 29 PHP
Laravel 5.5 实现禁用用户注册示例
Oct 24 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可应用于面包屑导航的递归寻找家谱树实现方法
2015/02/02 PHP
javascript Select标记中options操作方法集合
2008/10/22 Javascript
JavaScript 密码强度判断代码
2009/09/05 Javascript
js 学习笔记(三)
2009/12/29 Javascript
JavaScript 原型学习总结
2010/10/29 Javascript
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
2013/06/08 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
js实现数字每三位加逗号的方法
2015/02/05 Javascript
JQuery中上下文选择器实现方法
2015/05/18 Javascript
JS中跳出循环的示例代码
2017/09/14 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
使用webpack将ES6转化ES5的实现方法
2019/10/13 Javascript
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
python连接MySQL、MongoDB、Redis、memcache等数据库的方法
2013/11/15 Python
Python2.x版本中cmp()方法的使用教程
2015/05/14 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
在CMD命令行中运行python脚本的方法
2018/05/12 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
Python类中self参数用法详解
2020/02/13 Python
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
教师找工作推荐信
2013/11/23 职场文书
校园活动策划书范文
2014/01/10 职场文书
会计自我鉴定
2014/02/04 职场文书
聘任书模板
2014/03/29 职场文书
房屋委托书范本
2014/04/04 职场文书
1亿有多大教学反思
2014/05/01 职场文书
时尚女魔头观后感
2015/06/04 职场文书
个人工作总结怎么写?
2019/04/09 职场文书
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python