接口对接分为两种形式:
- 我方A公司提供接口给B公司,B公司进行一些操作时调用我们的接口进行实现。
例:A开发会员等级同步接口,供B同步会员等级到B系统。B会员等级的变动需要调用A接口主动推送给A(即更新会员卡等级)。
我们首先要做的就是按照对方的要求,在对方调用我们的接口,我方成功处理之后,按照对方所需要的返回数据以及格式反馈给他们信息。
在写本接口中,因为我们会员卡等级的字段是不一样的,所以我们对此主要处理的就是这个事情,1.例如对方传来修改后的卡等级是金卡,因为我们数据库中是分为vipcard和cardgrade两张表的,所以首先我们要去写一个方法,查询cardgrade表中所有的卡等级的id,返回一个list集合,再利用B公司传过来的数据for循环遍历比较,如果相等,则拿到金卡等级在我方A公司的ID,代码如下:
再根据B公司提供的会员卡号在我们查询到该条会员并拿到id;
最后就可以根据拿到跟新后的等级id和该会员的id进行更新了,任务完成!代码如下:
2.B公司开发会员查询接口,A公司调用B公司接口,实时查询会员
调对方接口和对方调我方的接口稍微有些不同,因为中间涉及到安全问题,所以还要满足对方要求我方传入的参数,不然对方不给通过,参数要求如下:
其中AppID,Args,AppSystem是与对方提供给我方特有的,timestamp是当前时间,我们只需获取当前时间按照他的格式生成,这个较简单,稍微复杂点的就是sign的生成了,要做的就是进行加签/验签,按照对方的要求,我们需要将AppId、Timestamp、Token(客户端保存),按照参数名在英文字典中的顺序排序,然后重新拼成一个标准的query string。然后采用sha1或者md5算法对此加密生成sign,代码如下:
参数都好了之后,对方要求以form表单的形式将参数传过去,这又是一个坑,哎。。,网上找了很久,代码如下:
Url是对方给的方法路径,param是放入的5个参数,然后要处理的就是把对方参数对应转成我方的参数形式,采用set/get即可。
供一起刚入坑的参考。