最新消息:

飞Q验证码API-PHP-Class

ZmmFly 4363浏览 0评论

曾经无意间知道了有短信验证码接收平台这个产物,随后试用了几次,感觉不错,遂阅读了飞Q的API文档,写出了这个类。大牛就路过吧……

<?php
/**
* Name       :飞Q短信验证码-API-PHP-Class
* Author     :Xiyan
* Author_Home:http://www.shenqhy.com/
* Version    :0.1.1 (Beta)
* Notice     :如果发现问题,欢迎反馈!
* License    :LGPL
*/
class fqcode
{
    public  $token;
    public  $NextToken;
    public  $uid;
    public  $stats;
    public  $logs;
    public  $apiUrl = 'http://sms.xudan123.com/do.aspx';
    function __construct()
    {
        date_default_timezone_set('PRC');
        $this->logs = '['.date('Y 年 n 月 d 日 H:i:s',time()).'] [Initialization]'."\n";
    }

    //CURL发送HTTP POST请求
    public function HttpPost($api_post_url, $api_post_data, $head_array ='', $post_time = 2, $post_timeout = 2)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $api_post_url);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $api_post_data);
        if (!empty($head_array)) {curl_setopt($ch, CURLOPT_HTTPHEADER, $head_array);}
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $post_time);
        curl_setopt($ch, CURLOPT_TIMEOUT, $post_timeout);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }

    //字段生成(仅支持单位数组)
    public function GenerateFields($array)
    {
        if (is_array($array))
        {
            $n      = count($array);//获取数组键数
            $i      = 0;
            $Fields = '';
            foreach ($array as $key => $value)
            {
                $i++;
                if ($i<$n) {$lsymbol = '&';}else{$lsymbol = '';}
                $Fields .= $key.'='.$value.$lsymbol;
            }
            unset($i,$n,$lsymbol,$key,$value);
            return $Fields;
        }else{
            return false;
        }
    }

    //简单的日志记录
    public function Log($logs,$qqq ='')
    {
        $date = date('Y 年 n 月 d 日 H:i:s',time());
        $this->logs .= $qqq."[{$date}] [{$logs}]\n";
    }

    //错误处理
    public function ProcessError($data)
    {
        switch ($data[0]) {

            case 'unknow_error':
                $this->Log('(False)unknow_error');
                return 'unknow_error';
                break;

            case 'not_login':
                $this->Log('(False)not_login');
                return 'not_login';
                break;

            case 'not_found_project':
                $this->Log('(False)not_found_project');
                return 'not_found_project';
                break;

            case 'not_found_moblie':
                $this->Log('(False)not_found_moblie');
                return 'not_found_moblie';
                break;

            case 'login_error':
                $this->Log('(False)login_error');
                return 'login_error';
                break;

            case 'mobile_exists':
                $this->Log('(False)mobile_exists');
                return 'mobile_exists';
                break;

            case 'not_receive':
                $this->Log('(False)not_receive');
                return 'not_receive';
                break;

            case 'parameter_error':
                $this->Log('(False)parameter_error');
                return 'parameter_error';
                break;

            case 'no_data':
                $this->Log('(False)no_data');
                return 'no_data';
                break;

            case 'project_state_error':
                $this->Log('(False)project_state_error');
                return 'project_state_error';
                break;

            case 'mobile_state_error':
                $this->Log('(False)mobile_state_error');
                return 'mobile_state_error';
                break;

            case 'max_count_disable':
                $this->Log('(False)max_count_disable');
                return 'max_count_disable';
                break;
            case 'message':
                $this->Log('(False)'.'Message : '.$data[2]);
                return 'please try again later';
                break;
            default:
                $this->Log('Success!');
                return $data;
                break;
        }
    }

    //分割数据
    public function splite($sdata)
    {
        return explode('|', $sdata);
    }

    //f(user,password)
    public function Login($uid,$pwd)
    {
        $this->Log('Start login.',"\n");
        $fields = array(
            'action' =>'loginIn',
            'uid'    =>$uid,
            'pwd'    =>$pwd
            );
        $data = $this->HttpPost($this->apiUrl,$this->GenerateFields($fields));
        $temp = $this->ProcessError($this->splite($data));
        unset($fields);
        if ($temp != 'login_error') {
            $this->uid   = $temp[0];
            $this->token = $temp[1];
            return $temp;
        }else{
            return $temp;
        }
    }

    //f(pid,[uid,可选],[token,可选])
    public function GetMobileNum($pid)
    {
        $this->Log('Get mobile num',"\n");
        $parametern  = func_num_args();//获取传入的参数个数
        if ($parametern == 3 && ($uid=func_get_arg(1)) != '' && ($token=func_get_arg(2)) != '') {//在条件中赋值
            //如果传递了uid和token则uid为传入的,否则为登陆时的获取的
        }elseif ($parametern < 3 && $parametern == 1 && ($uid=$this->uid) !='' && ($token=$this->token) != '') {

        }else{

            $this->Log('(False) Argument is null or not logged in!');
            return;
        }
        $fields = array(
            'action' =>'getMobilenum',
            'pid'    =>$pid,
            'uid'    =>$uid,
            'token'  =>$token
            );
        $data = $this->HttpPost($this->apiUrl,$this->GenerateFields($fields));
        unset($fields);
        return  $this->ProcessError($this->splite($data));
    }

    //f(mobileNum,NextPid,[uid,可选],[token,可选])
    public function GetVcodeAndHoldMobileNum($mobilenum,$nextPid)
    {
        $this->Log('Get the verification code and keep mobile number.',"\n");
        $parametern  = func_num_args();

        if ($parametern == 4 && ($uid=func_get_arg(2)) != '' && ($token=func_get_arg(3)) != '') {

            //如果传递了uid和token则uid为传入的,否则为登陆时的获取的
        }elseif ($parametern < 4 && $parametern == 2 && ($uid=$this->uid) !='' && ($token=$this->token) != '') {


        }else{
            $this->Log('(False) Argument is null or not logged in!');
            return;
        }
        $fields = array(
            'action' =>'getVcodeAndHoldMobilenum',
            'mobile' =>$mobilenum,
            'next_pid'=>$nextPid,
            'uid'    =>$uid,
            'token'  =>$token,
            'author_uid'=>'fqcode'
            );
        $data = $this->HttpPost($this->apiUrl,$this->GenerateFields($fields));
        unset($fields,$uid,$token,$parametern,$$nextPid);
        return $this->ProcessError($this->splite($data));
    }

    //f(mobileNum,[uid,可选],[token,可选])
    public function GetVcodeAndReleaseMobile($mobilenum)
    {
        $this->Log('Get the verification code and no longer use.',"\n");

        $parametern  = func_num_args();
        if ($parametern == 3 && ($uid=func_get_arg(1)) != '' && ($token=func_get_arg(2)) != '') {

        //如果传递了uid和token则uid为传入的,否则为登陆时的获取的
        }elseif ($parametern < 3 && $parametern == 1 && ($uid=$this->uid) !='' && ($token=$this->token) != '') {

        }else{

            $this->Log('(False) Argument is null or not logged in!');
            return;
        }
        $fields = array(
            'action' =>'getVcodeAndReleaseMobile',
            'mobile' =>$mobilenum,
            'uid'    =>$uid,
            'token'  =>$token,
            'author_uid'=>'fqcode'
            );
        $data =$this->HttpPost($this->apiUrl,$this->GenerateFields($fields));
        unset($fields,$uid,$token,$parametern);
        return $this->ProcessError($this->splite($data));
    }

    //f(pid,mobileNum,[uid,可选],[token,可选])
    public function AddIgnoreList($pid,$mobiles)
    {
        $this->Log('Add several phone numbers to blacklist.',"\n");

        $parametern  = func_num_args();
        if ($parametern == 4 && ($uid=func_get_arg(2)) != '' && ($token=func_get_arg(3)) != '') {

        }elseif ($parametern < 4 && $parametern == 2 && ($uid=$this->uid) !='' && ($token=$this->token) != '') {

        }else{
            $this->Log('(False) Argument is null or not logged in!');
        }
        $fields=array(
            'action' =>'addIgnoreList',
            'pid'    =>$pid,
            'uid'    =>$uid,
            'token'  =>$token
            );
        $data =$this->HttpPost($this->apiUrl,$this->GenerateFields($fields));
        unset($fields,$uid,$token,$parametern);
        if ($data > 0) {
            $this->Log('Success');
            return $data;
        }else{
            return $this->ProcessError($this->splite($data));
        }
    }

    //f(pid,[uid,可选],[token,可选])
    public function ClearIgnoreList($pid)
    {
        $this->Log('Empty certain (All) project blacklist all.',"\n");
        if ($pid == '') {
            //如果为传入PID则会记录提示
            $this->Log('Note: PID is empty, all projects will be emptied blacklist!');
            intval($pid,10);
        }

        $parametern  = func_num_args();
        if ($parametern == 3 && ($uid=func_get_arg(1)) != '' && ($token=func_get_arg(2)) != '') {

        }elseif ($parametern < 3 && $parametern == 1 && ($uid=$this->uid) !='' && ($token=$this->token) != '') {

        }else{
            $this->Log('(False) Argument is null or not logged in!');
        }

        $fields = array(
            'action' => 'clearIgnoreList',
            'pid'    => $pid,
            'uid'    => $uid,
            'token'  => $token
            );
        $data =$this->HttpPost($this->apiUrl,$this->GenerateFields($fields));
        unset($fields,$uid,$token,$parametern);
        if ($data > 0) {
            $this->Log('Success');
            return $data;
        }else{
            return $this->ProcessError($this->splite($data));
        }

    }

    //f(pid,[uid,可选],[token,可选])
    public function GetRecvingInfo($pid)
    {
        $this->Log('Get a list of numbers being used in the project.',"\n");
        if ($pid == '') {
            //如果为传入PID则会记录提示
            $this->Log('Note, PID is empty, it will return a list of all.');
            intval($pid,10);
        }

        $parametern  = func_num_args();
        if ($parametern == 3 && ($uid=func_get_arg(1)) != '' && ($token=func_get_arg(2)) != '') {

        }elseif ($parametern < 3 && $parametern == 1 && ($uid=$this->uid) !='' && ($token=$this->token) != '') {

        }else{
            $this->Log('(False) Argument is null or not logged in!');
        }

        $fields = array(
            'action' => 'getRecvingInfo',
            'pid'    => $pid,
            'uid'    => $uid,
            'token'  => $token
            );
        $data =$this->HttpPost($this->apiUrl,$this->GenerateFields($fields));
        unset($fields,$uid,$token,$parametern);
        if (!json_decode($data)) {
            $this->ProcessError($this->splite($data));
            return $data;
        }else{
            return json_decode($data);
        }
    }

    //f(mobileNum,[uid,可选],[token,可选])
    public function CancelSMSRecv($mobilenum)
    {
        $this->Log('Cancel a text message receiving, the immediate release of the amount to be locked.',"\n");
        if ($mobilenum == '') {
            $this->Log('Mobile num is empty.');
            return;
        }

        $parametern  = func_num_args();
        if ($parametern == 3 && ($uid=func_get_arg(1)) != '' && ($token=func_get_arg(2)) != '') {
        }elseif ($parametern < 3 && $parametern == 1 && ($uid=$this->uid) !='' && ($token= $this->token) != '') {

        }else{
            $this->Log('(False) Argument is null or not logged in!');
        }

        $fields= array(
            'action' => 'cancelSMSRecv',
            'mobile' => $mobilenum,
            'uid'    => $uid,
            'token'  => $token
            );
        $data =$this->HttpPost($this->apiUrl,$this->GenerateFields($fields));
        unset($fields,$uid,$token,$parametern);
        if ($data = 1) {
            $this->Log('Success');
            return $data;
        }else{
            return $this->ProcessError($this->splite($data));
        }
    }

    //f([uid,可选],[token,可选])
    public function CancelSMSRecvAll()
    {
        $this->Log('Cancel all text message receiving, the immediate release of the all amount to be locked.',"\n");

        $parametern  = func_num_args();
        if ($parametern == 2 && ($uid=func_get_arg(0)) != '' && ($token=func_get_arg(1)) != '') {
        }elseif ($parametern <= 2 && ($uid=$this->uid) !='' && ($token=$this->token) != '') {

        }else{
            $this->Log('(False) Argument is null or not logged in!');
        }

        $fields= array(
            'action' => 'cancelSMSRecvAll',
            'uid'    => $uid,
            'token'  => $token
            );
        $data =$this->HttpPost($this->apiUrl,$this->GenerateFields($fields));
        unset($fields,$uid,$token,$parametern);
        if ($data = 1) {
            $this->Log('Success');
            return $data;
        }else{
            return $this->ProcessError($this->splite($data));
        }
    }

    //f(u,r_u)
    public function CheckUserRefer($u,$r_u)
    {
        $this->Log('Check a user whether is another user\'s Agent.',"\n");
        if (func_num_args()<2) {
            $this->Log('Lack of necessary parameters.');
        }elseif ($u == '' | $r_u == '') {
            $this->Log('The parameter is incorrect.');
        }else{
            $this->Log('Unknown error.');
        }
        $fields = array(
            'u'   => $u,
            'r_u' => $r_u
            );

        $data =$this->HttpPost($this->apiUrl,$this->GenerateFields($fields));
        unset($u,$uid,$r_u);
        return $this->ProcessError($this->splite($data));
    }
}
?>

文档也没写。。。不过和飞Q上的API文档的命名以及参数没多少差别,也就是初始化后登陆,然后uid和token变成可选项(uid在前,token在后)而已

转载请注明:神奇海域 » 飞Q验证码API-PHP-Class

发表我的评论
取消评论

Protected by WP Anti Spam

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址