当前位置:首页 > PHP教程 > php高级应用 > 列表

掌握php短信接口代码

发布:smiling 来源: PHP粉丝网  添加日期:2022-07-26 12:19:19 浏览: 评论:0 

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

1. 短信调用class

  1. <?php 
  2.  
  3. /** 
  4.  
  5.  * User: Administrator 
  6.  
  7.  * Date: 2016/5/8 0008 
  8.  
  9.  * Time: 下午 2:36 
  10.  
  11.  */ 
  12.  
  13. class Sms{ 
  14.  
  15.    
  16.  
  17.    
  18.  
  19.   //Luosimao api key 
  20.  
  21.   private $_api_key = ''
  22.  
  23.    
  24.  
  25.   private $_last_error = array(); 
  26.  
  27.    
  28.  
  29.    
  30.  
  31.   private $_use_ssl = FALSE; 
  32.  
  33.    
  34.  
  35.   private $_ssl_api_url = array
  36.  
  37.     'send'    => 'https://www.jb51.net/v1/send.json'
  38.  
  39.     'send_batch' => 'https://www.jb51.net/v1/send_batch.json'
  40.  
  41.     'status'   => 'https://www.jb51.net/v1/status.json'
  42.  
  43.   ); 
  44.  
  45.    
  46.  
  47.   private $_api_url = array
  48.  
  49.     'send'    => 'https://www.jb51.net/v1/send.json'
  50.  
  51.     'send_batch' => 'https://www.jb51.net/send_batch.json'
  52.  
  53.     'status'   => 'https://www.jb51.net/v1/status.json'
  54.  
  55.   ); 
  56.  
  57.    
  58.  
  59.   /** 
  60.  
  61.    * @param array $param 配置参数 
  62.  
  63.    * api_key api秘钥,在luosimao短信后台短信->触发发送下面可查看 
  64.  
  65.    * use_ssl 启用HTTPS地址,HTTPS有一定性能损耗,可选,默认不启用 
  66.  
  67.    */ 
  68.  
  69.   public function __construct( $param = array() ){ 
  70.  
  71.    
  72.  
  73.     if( !isset( $param['api_key'] ) ){ 
  74.  
  75.       die("api key error."); 
  76.  
  77.     } 
  78.  
  79.    
  80.  
  81.     if( isset( $param['api_key'] ) ){ 
  82.  
  83.       $this->_api_key = $param['api_key']; 
  84.  
  85.     } 
  86.  
  87.    
  88.  
  89.     if( isset( $param['use_ssl'] ) ){ 
  90.  
  91.       $this->_use_ssl = $param['use_ssl']; 
  92.  
  93.     } 
  94.  
  95.    
  96.  
  97.   } 
  98.  
  99.    
  100.  
  101.   //触发,单发,适用于验证码,订单触发提醒类 
  102.  
  103.   public function send( $mobile , $message = '' ){ 
  104.  
  105.     $api_url = !$this->_use_ssl ? $this->_api_url['send'] : $this->_ssl_api_url['send']; 
  106.  
  107.     $param = array
  108.  
  109.       'mobile' => $mobile , 
  110.  
  111.       'message' => $message
  112.  
  113.     ); 
  114.  
  115.     $res = $this->http_post( $api_url ,$param ); 
  116.  
  117.     return @json_decode( $res ,TRUE ); 
  118.  
  119.   } 
  120.  
  121.    
  122.  
  123.   //批量发送,用于大批量发送 
  124.  
  125.   public function send_batch( $mobile_list = array() , $message = array() , $time = '' ){ 
  126.  
  127.     $api_url = !$this->_use_ssl ? $this->_api_url['send_batch'] : $this->_ssl_api_url['send_batch']; 
  128.  
  129.     $mobile_list = is_array$mobile_list ) ? implode( ',' , $mobile_list ) : $mobile_list
  130.  
  131.     $param = array
  132.  
  133.       'mobile_list' => $mobile_list , 
  134.  
  135.       'message' => $message
  136.  
  137.       'time'  => $time
  138.  
  139.     ); 
  140.  
  141.     $res = $this->http_post( $api_url ,$param ); 
  142.  
  143.     return @json_decode( $res ,TRUE ); 
  144.  
  145.   } 
  146.  
  147.    
  148.  
  149.   //获取短信账号余额 
  150.  
  151.   public function get_deposit(){ 
  152.  
  153.     $api_url = !$this->_use_ssl ? $this->_api_url['status'] : $this->_ssl_api_url['status']; 
  154.  
  155.     $res = $this->http_get( $api_url ); 
  156.  
  157.     return @json_decode( $res ,TRUE ); 
  158.  
  159.   } 
  160.  
  161.    
  162.  
  163.   /** 
  164.  
  165.    * @param string $type 接收类型,用于在服务器端接收上行和发送状态,接收地址需要在luosimao后台设置 
  166.  
  167.    * @param array $param 传入的参数,从推送的url中获取,官方文档:https://luosimao.com/docs/api/ 
  168.  
  169.    */ 
  170.  
  171.   public function recv( $type = 'status' , $param = array() ){ 
  172.  
  173.     if$type == 'status' ){ 
  174.  
  175.       if$param['batch_id'] && $param['mobile'] && $param['status'] ){ //状态 
  176.  
  177.         // do record 
  178.  
  179.       } 
  180.  
  181.     }elseif$type == 'incoming' ){ //上行回复 
  182.  
  183.       if$param['mobile'] && $param['message'] ){ 
  184.  
  185.         // do record 
  186.  
  187.       } 
  188.  
  189.     } 
  190.  
  191.   } 
  192.  
  193.    
  194.  
  195.   /** 
  196.  
  197.    * @param string $api_url 接口地址 
  198.  
  199.    * @param array $param post参数 
  200.  
  201.    * @param int $timeout 超时时间 
  202.  
  203.    * @return bool 
  204.  
  205.    */ 
  206.  
  207.   private function http_post( $api_url = '' , $param = array() , $timeout = 5 ){ 
  208.  
  209.    
  210.  
  211.     if( !$api_url ){ 
  212.  
  213.       die("error api_url"); 
  214.  
  215.     } 
  216.  
  217.    
  218.  
  219.     $ch = curl_init(); 
  220.  
  221.     curl_setopt( $ch, CURLOPT_URL, $api_url ); 
  222.  
  223.    
  224.  
  225.     curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_0 ); 
  226.  
  227.     curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout ); 
  228.  
  229.     curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE); 
  230.  
  231.     curl_setopt( $ch, CURLOPT_HEADER, FALSE); 
  232.  
  233.    
  234.  
  235.     ifparse_url$api_url )['scheme'] == 'https' ){ 
  236.  
  237.       curl_setopt($ch, CURLOPT_SSL_VERIFYHOST , FALSE); 
  238.  
  239.       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER , FALSE); 
  240.  
  241.     } 
  242.  
  243.    
  244.  
  245.     curl_setopt( $ch, CURLOPT_HTTPAUTH , CURLAUTH_BASIC); 
  246.  
  247.     curl_setopt( $ch, CURLOPT_USERPWD , 'api:key-'.$this->_api_key ); 
  248.  
  249.     curl_setopt( $ch, CURLOPT_POST, TRUE); 
  250.  
  251.     curl_setopt( $ch, CURLOPT_POSTFIELDS, $param ); 
  252.  
  253.    
  254.  
  255.     $res  = curl_exec( $ch ); 
  256.  
  257.     $error = curl_error( $ch ); 
  258.  
  259.     curl_close( $ch ); 
  260.  
  261.     if$error ){ 
  262.  
  263.       $this->_last_error[] = $error
  264.  
  265.       return FALSE; 
  266.  
  267.     } 
  268.  
  269.     return $res
  270.  
  271.   } 
  272.  
  273.    
  274.  
  275.   /** 
  276.  
  277.    * @param string $api_url 接口地址 
  278.  
  279.    * @param string $timeout 超时时间 
  280.  
  281.    * @return bool 
  282.  
  283.    */ 
  284.  
  285.   private function http_get( $api_url = '' , $timeout = '' ){ 
  286.  
  287.    
  288.  
  289.     if( !$api_url ){ 
  290.  
  291.       die("error api_url"); 
  292.  
  293.     } 
  294.  
  295.    
  296.  
  297.     $ch = curl_init(); 
  298.  
  299.     curl_setopt( $ch, CURLOPT_URL, $api_url ); 
  300.  
  301.    
  302.  
  303.     curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_0 ); 
  304.  
  305.     curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $timeout ); 
  306.  
  307.     curl_setopt( $ch, CURLOPT_RETURNTRANSFER, TRUE); 
  308.  
  309.     curl_setopt( $ch, CURLOPT_HEADER, FALSE); 
  310.  
  311.    
  312.  
  313.     ifparse_url$api_url )['scheme'] == 'https' ){ 
  314.  
  315.       curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST , FALSE); 
  316.  
  317.       curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER , FALSE); 
  318.  
  319.     } 
  320.  
  321.     curl_setopt( $ch, CURLOPT_HTTPAUTH , CURLAUTH_BASIC); 
  322.  
  323.     curl_setopt( $ch, CURLOPT_USERPWD , 'api:key-'.$this->_api_key ); 
  324.  
  325.    
  326.  
  327.     $res  = curl_exec( $ch ); 
  328.  
  329.     $error = curl_error( $ch ); 
  330.  
  331.     curl_close( $ch ); 
  332.  
  333.     if$error ){ 
  334.  
  335.       $this->_last_error[] = curl_error( $ch ); 
  336.  
  337.       return FALSE; 
  338.  
  339.     } 
  340.  
  341.     return $res
  342.  
  343.   } 
  344.  
  345.    
  346.  
  347.   public function last_error(){ 
  348.  
  349.     return $this->_last_error; 
  350.  
  351.   } 
  352.  

2.短信发送示例

  1. //send 单发接口 
  2.  
  3. require 'sms.php'
  4.  
  5. $sms = new Sms( array('api_key' => '86f52f3ce0647dc24da53eafe29fadd4' , 'use_ssl' => FALSE ) ); 
  6.  
  7. $res = $sms->send_batch( array('13761428268') , '验证码:19272【脚本之家】'); 
  8.  
  9. if$res ){ 
  10.  
  11.   if( isset( $res['error'] ) && $res['error'] == 0 ){ 
  12.  
  13.     echo 'success'
  14.  
  15.   }else
  16.  
  17.     echo 'failed,code:'.$res['error'].',msg:'.$res['msg']; 
  18.  
  19.   } 
  20.  
  21. }else
  22.  
  23.   var_dump( $sms->last_error() ); 
  24.  
  25.  
  26. exit

3.批量发送示例

  1. require 'sms.php'
  2.  
  3. $sms = new Sms( array('api_key' => '86f52f3ce0647dc24da53eafe29fadd4' , 'use_ssl' => FALSE ) ); 
  4.  
  5. //send 单发接口 
  6.  
  7. $res = $sms->send_batch( array('13761428268') , '验证码:19272【脚本之家】'); 
  8.  
  9. if$res ){ 
  10.  
  11.   if( isset( $res['error'] ) && $res['error'] == 0 ){ 
  12.  
  13.     echo 'success'
  14.  
  15.   }else
  16.  
  17.     echo 'failed,code:'.$res['error'].',msg:'.$res['msg']; 
  18.  
  19.   } 
  20.  
  21. }else
  22.  
  23.   var_dump( $sms->last_error() ); 
  24.  
  25.  
  26. exit

4.获取余额示例

  1. //deposit 余额查询 
  2.  
  3. require 'sms.php'
  4.  
  5. $sms = new Sms( array('api_key' => '86f52f3ce0647dc24da53eafe29fadd4' , 'use_ssl' => FALSE ) ); 
  6.  
  7.    
  8.  
  9. $res = $sms->get_deposit(); 
  10.  
  11. if$res ){ 
  12.  
  13.   if( isset( $res['error'] ) && $res['error'] == 0 ){ 
  14.  
  15.     echo 'desposit:'.$res['deposit']; 
  16.  
  17.   }else
  18.  
  19.     echo 'failed,code:'.$res['error'].',msg:'.$res['msg']; 
  20.  
  21.   } 
  22.  
  23. }else
  24.  
  25.   var_dump( $sms->last_error() ); 
  26.  
  27.  
  28. exit;

Tags: php短信接口

分享到: