>  기사  >  백엔드 개발  >  PHP SMS 인터페이스 코드를 마스터하세요

PHP SMS 인터페이스 코드를 마스터하세요

coldplay.xixi
coldplay.xixi앞으로
2020-08-15 17:15:214282검색

PHP SMS 인터페이스 코드를 마스터하세요

이 문서의 예제는 참조용으로 일반적으로 사용되는 몇 가지 PHP SMS 인터페이스 코드를 공유합니다. 구체적인 내용은 다음과 같습니다.

관련 학습 권장 사항:php 프로그래밍(동영상)

1 class

<?php
/**
 * User: Administrator
 * Date: 2016/5/8 0008
 * Time: 下午 2:36
 */
class Sms{
 
 
  //Luosimao api key
  private $_api_key = &#39;&#39;;
 
  private $_last_error = array();
 
 
  private $_use_ssl = FALSE;
 
  private $_ssl_api_url = array(
    &#39;send&#39;    => &#39;https://www.jb51.net/v1/send.json&#39;,
    &#39;send_batch&#39; => &#39;https://www.jb51.net/v1/send_batch.json&#39;,
    &#39;status&#39;   => &#39;https://www.jb51.net/v1/status.json&#39;,
  );
 
  private $_api_url = array(
    &#39;send&#39;    => &#39;https://www.jb51.net/v1/send.json&#39;,
    &#39;send_batch&#39; => &#39;https://www.jb51.net/send_batch.json&#39;,
    &#39;status&#39;   => &#39;https://www.jb51.net/v1/status.json&#39;,
  );
 
  /**
   * @param array $param 配置参数
   * api_key api秘钥,在luosimao短信后台短信->触发发送下面可查看
   * use_ssl 启用HTTPS地址,HTTPS有一定性能损耗,可选,默认不启用
   */
  public function __construct( $param = array() ){
 
    if( !isset( $param[&#39;api_key&#39;] ) ){
      die("api key error.");
    }
 
    if( isset( $param[&#39;api_key&#39;] ) ){
      $this->_api_key = $param[&#39;api_key&#39;];
    }
 
    if( isset( $param[&#39;use_ssl&#39;] ) ){
      $this->_use_ssl = $param[&#39;use_ssl&#39;];
    }
 
  }
 
  //触发,单发,适用于验证码,订单触发提醒类
  public function send( $mobile , $message = &#39;&#39; ){
    $api_url = !$this->_use_ssl ? $this->_api_url[&#39;send&#39;] : $this->_ssl_api_url[&#39;send&#39;];
    $param = array(
      &#39;mobile&#39; => $mobile ,
      &#39;message&#39; => $message,
    );
    $res = $this->http_post( $api_url ,$param );
    return @json_decode( $res ,TRUE );
  }
 
  //批量发送,用于大批量发送
  public function send_batch( $mobile_list = array() , $message = array() , $time = &#39;&#39; ){
    $api_url = !$this->_use_ssl ? $this->_api_url[&#39;send_batch&#39;] : $this->_ssl_api_url[&#39;send_batch&#39;];
    $mobile_list = is_array( $mobile_list ) ? implode( &#39;,&#39; , $mobile_list ) : $mobile_list;
    $param = array(
      &#39;mobile_list&#39; => $mobile_list ,
      &#39;message&#39; => $message,
      &#39;time&#39;  => $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[&#39;status&#39;] : $this->_ssl_api_url[&#39;status&#39;];
    $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 = &#39;status&#39; , $param = array() ){
    if( $type == &#39;status&#39; ){
      if( $param[&#39;batch_id&#39;] && $param[&#39;mobile&#39;] && $param[&#39;status&#39;] ){ //状态
        // do record
      }
    }elseif( $type == &#39;incoming&#39; ){ //上行回复
      if( $param[&#39;mobile&#39;] && $param[&#39;message&#39;] ){
        // do record
      }
    }
  }
 
  /**
   * @param string $api_url 接口地址
   * @param array $param post参数
   * @param int $timeout 超时时间
   * @return bool
   */
  private function http_post( $api_url = &#39;&#39; , $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 )[&#39;scheme&#39;] == &#39;https&#39; ){
      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 , &#39;api:key-&#39;.$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 = &#39;&#39; , $timeout = &#39;&#39; ){
 
    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 )[&#39;scheme&#39;] == &#39;https&#39; ){
      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 , &#39;api:key-&#39;.$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. SMS 전송 예시

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

3. 일괄 전송 예시

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

4. 잔액 예시 받기

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

관련 학습 추천: 프로그래밍 영상

위 내용은 PHP SMS 인터페이스 코드를 마스터하세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제