对外开发接口类

<?php

class FileFlag_Api

{

private $flag=‘fileflag‘;//唯一标识

private $method=‘file_request‘;//方法名称

private $type=‘json‘;//数据格式

private $charset=‘utf-8‘;//数据编码

private $ver=1;//版本

private $token=‘tjiePjfjvnyGUuyMFEXVPmsewokCauuZ‘;//密钥

private $post_data=array();//全部数据

private $sign=null;//签名

private $timestamp=null;//时间戳

private $data=‘‘;//实际数据

//返回信息数组0是返回出错的信息,1返回处理成功的信息

private $result=array(

0=>array(‘code‘=>‘‘,‘info‘=>‘FAILED‘,‘msg‘=>‘‘,‘data‘=>‘‘),

1=>array(‘code‘=>‘‘,‘info‘=>‘SUCCESS‘,‘msg‘=>‘‘,‘data‘=>‘‘)

);

//返回信息数组$this->result的键名

private $key=0;//$this->result  (key)

//构造函数

public function __construct()

{

}

//设置签名

private function set_sign($sign=array())

{

$return_sign=‘‘;

if(!is_array($sign))

{

return null;

}

else

{

ksort($sign,SORT_STRING);

foreach($sign as $key=>$value)

{

if( $value != null && strtolower($key) != ‘sign‘ )

{

if( get_magic_quotes_gpc() )

{

$value=stripslashes($value);

$return_sign.=$key.(is_array($value)?$this->set_sign($value):$value);

}

else

{

$return_sign.=$key.(is_array($value)?$this->set_sign($value):$value);

}

//$return_sign.=$key.(is_array($value)?$this->set_sign($value):$value);

}

else

{

}

}

return $return_sign;

}

}

//获取签名

private function get_sign($sign)

{

if($sign)

{

return strtoupper(md5(strtoupper(md5($sign)).$this->token));

}

else

{

return null;

}

}

//检查字段是否符号要求

private function check_sign($sign=array())

{

$sign_str=$this->set_sign($sign);

$signs=$this->get_sign($sign_str);

if($this->sign==$signs)

{

return true;

}

else

{

return false;

}

}

//检查时间戳

private function check_timestamp()

{

if($this->timestamp)

{

if(($this->timestamp+60)<time())

{

return true;

}

else

{

return false;

}

}

}

//检查签名等必须字段是否符号要求

private function check_post($post)

{

if(!empty($post))

{

$type=$post[‘type‘];

$flags=$post[‘flag‘];

$timestamp=$post[‘timestamp‘];

$this->data=$post[‘data‘];

$sign=$post[‘sign‘];

$method=$post[‘method‘];

$ver=$post[‘ver‘];

$flag=true;

//var_dump($this->data);

//exit;

if($type!=$this->type)

{

$flag=false;

$this->key=0;

$this->result[$this->key][‘code‘]=‘type‘;

$this->result[$this->key][‘msg‘]=‘Response:type field Invalid!‘;

}

elseif($flags!=$this->flag)

{

$this->key=0;

$flag=false;

$this->result[$this->key][‘code‘]=‘flag‘;

$this->result[$this->key][‘msg‘]=‘Response:flag field Invalid!‘;

}

elseif($sign!=$this->sign)

{

$this->key=0;

$flag=false;

$this->result[$this->key][‘code‘]=‘sign‘;

$this->result[$this->key][‘msg‘]=‘Response:sign field Invalid!‘;

}

elseif($method!=$this->method)

{

$this->key=0;

$flag=false;

$this->result[$this->key][‘code‘]=‘method‘;

$this->result[$this->key][‘msg‘]=‘Response:method field Invalid!‘;

}

elseif($ver!=$this->ver)

{

$this->key=0;

$flag=false;

$this->result[$this->key][‘code‘]=‘ver‘;

$this->result[$this->key][‘msg‘]=‘Response:ver field Invalid!‘;

}

else

{

$this->key=1;

}

/* else

{

$this->key=1;

} */

return $flag;

}

else

{

return false;

}

}

//检查转送过来的三维数组是否符合要求

private function data_check()

{

$field_array=array(‘order_sn‘,‘code‘,‘is_upfile‘,‘fileinfo‘);

if(empty($this->post_data))

{

$this->key=0;

$this->result[$this->key][‘code‘]=‘data‘;

$this->result[$this->key][‘msg‘]=‘Response:data is empty!‘;

return false;

}

elseif(!empty($this->post_data) && is_array($this->post_data))

{

foreach($this->post_data as $key => $value)

{

if(in_array(strtolower($key),$field_array))

{

if(is_array($value) && !empty($value))

{

foreach($value as $k => $v)

{

if(is_array($v) && !empty($v))

{

foreach($v as $ky => $val)

{

if(in_array(strtolower($ky),$field_array))

{

if(empty($val))

{

/* $this->key=0;

$this->result[$this->key][‘code‘]=‘data‘;

$this->result[$this->key][‘msg‘]=‘Response:‘.$ky.‘ is empty!‘;

return false; */

}

}

}

}

}

}

elseif(empty($value) && !is_array($value))

{

$this->key=0;

$this->result[$this->key][‘code‘]=‘data‘;

$this->result[$this->key][‘msg‘]=‘Response:‘.$key.‘ is empty!‘;

return false;

}

}

}

}

else

{

return true;

}

}

//过滤转送过来的数据

private function PostFilter($post)

{

$return_post=array();

if(is_array($post))

{

foreach( $post as $key => $value )

{

if(is_array($value) && !empty($value))

{

$value=$this->PostFilter($value);

}

else

{

if(!get_magic_quotes_gpc())

{

$value=addslashes($value);

}

$value=strip_tags($value);

}

$return_post[$key]=$value;

}

}

/*  else

{

if(!get_magic_quotes_gpc())

{

$return_post[]=addslashes($post);

}

$post[]=strip_tags($post);

} */

return $return_post;

}

//$post是三维数组

public function DoResponse($post=array())

{

$sign=$this->set_sign($post);

$this->sign=$this->get_sign($sign);

$check=$this->check_post($post);

if($check)

{

$this->data=json_decode(trim(stripslashes(urldecode($this->data)),chr(239).chr(187).chr(191)),true);

$post=$this->PostFilter($this->data);

$this->post_data=$post;

if(!$this->data_check())

{

return false;

}

else

{

return true;

}

}

else

{

return false;

}

}

//输出结果信息

public function display()

{

$this->result[$this->key][‘data‘]=$this->data;

$json=json_encode($this->result[$this->key]);

$rs=new stdClass();

foreach($this->result[$this->key] as $k => $v)

{

$rs->$k=$v;//$this->result[$this->key][$k];

}

$rs=json_encode($rs);

echo $rs;

//echo $json;

}

//获取转送过来的处理过的数据

public function get_request_data()

{

return $this->post_data;

}

}

$fileflag=new FileFlag_Api();

$response=$fileflag->DoResponse($post);

$fileflag->display();

?>

时间: 2024-08-09 19:52:42

对外开发接口类的相关文章

借助Gradle Plugin解决模块化开发中模块如何对外暴露接口

直奔主题,在模块化开发中,模块间的数据交流大多数同学会采用以接口作为通信协议的方式.需要面对的问题有以下几点: 接口由谁来维护?这个问题简单,由提供服务的模块来维护.接口怎么暴露?打成jar包,发布到maven.接口在哪里维护?现在可以参考的方案有三种:一. 所有相关模块的接口统一在一个模块中维护:二. 各个模块的接口分别在自建一个新的模块中维护,通过命名规则一一对应:三. 像微信的.api方案,使用特殊的规则混杂在各自的模块中. 如果接着第一个问题,方案一好像就有点难确定接口对应的来源模块.方

C# 开发 &mdash;&mdash; 数组类对象接口

数组类型是从抽象基类 Array 派生的引用类型,通过new运算符创建数组并将数组元素初始化为他们的默认值 一维数组 type[] arrayname; 数组的长度不是声明的一部分,而且数组必须在访问前初始化. foreach 语句声明一个迭代变量 -- 是数组的每个元素的只读副本 二维数组 type[,]  arrayName; int[,] arr = new int[2,2]{{1,2},{3,4}}; 可使用数组的Rank属性和GetUpperBound方法获取数组的行数和列数,然后遍历

python开发面向对象基础:接口类&amp;抽象类&amp;多态&amp;多继承

一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能 开发中容易出现的问题 1 class Alipay: 2 ''' 3 支付宝支付 4 ''' 5 def pay(self,money): 6 print('支付宝支付了%s元'%money) 7 8 class Applepay: 9 ''' 1

EF快速开发定义数据接口类(转)

using System; using System.Linq; using System.Linq.Expressions; using System.Data.Objects; namespace HENANLUHENG.Framework.EntityRepository { public interface IRepository<T> where T : class, new() { /// <summary> /// 返回一个 System.Linq.IQueryabl

使用WCF对外提供接口

本篇将通过WCF以webservices的方式对外提供接口.同时使用NUnit对webservices中的方法进行单元测试. 开发契约 contract Contract项目为类库项目,该项目下会包含WCF中的ServiceContract,这是一些被加上Attribute [ServiceContract]的接口.同时接口中的方法也需要加上Attribute [OperationContract].另,考虑到下一篇要对接口进行压力测试,所以接口中的方法也加上Attribute [WebGet]

SQLite3 C/C++ 开发接口简介

SQLite3 C/C++ 开发接口简介 1.0 总览 SQLite3是SQLite一个全新的版本,它虽然是在SQLite 2.8.13的代码基础之上开发的,但是使用了和之前的版本不兼容的数据库格式和API. SQLite3是为了满足以下的需求而开发的: 支持UTF-16编码. 用户自定义的文本排序方法. 可以对BLOBs字段建立索引. 因此为了支持这些特性我改变了数据库的格式,建立了一个与之前版本不兼容的3.0版. 至于其他的兼容性的改变,例如全新的API等等,都将在理论介绍之后向你说明,这样

JAVA串口开发帮助类分享-及写在马年末

在系统集成开发过程中,存在着各式的传输途径,其中串口经常因其安全性高获得了数据安全传输的重用,通过串口传输可以从硬件上保证数据传输的单向性,这是其它介质所不具备的物理条件.下面我就串口java开发的过程分享一下,并分享一个SerialPortHandler串口开发帮助类,以提高串口开发效率. 1.部署开发环境. 拷贝RXTXcomm.jar 文件到 \jre\lib\ext 目录下,拷贝rxtxSerial.dll文件到 \jre\bin目录下.注意是jre目录下,并非jdk\jre下:注意dl

php 接口类与抽象类的实际作用

1.php 接口类:interface 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候php接口类就起到作用了,当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的,比如 : interface Shop { public function buy($gid); public function sell($gid); public function view($gid); } 我声明一

微信公众账号开发接口实现 - java servlet

原文:微信公众账号开发接口实现 - java servlet 源代码下载地址:http://www.zuidaima.com/share/1550463697898496.htm 微信公众平台开发接口验证token.收取.回复消息实现 其实只需要两个类:DeiponseMessage.java.Wechat.java 项目截图 缺少的jar包下载列表: http://mirrors.ibiblio.org/pub/mirrors/maven2/commons-beanutils/commons-