一、背景
在平时工作中,经常会遇到的一种场景是:A公司要对接B公司的API方法,这时,A公司就要阅读B公司的接口文档,从接口文档中找到自己需要对接的API,并根据接口文档的要求,完成编码工作,最终完成对接工作。
本篇是站在A公司的角度,去对接B公司API接口的实战。
二、了解B公司接口的基础约定
一般情况下,B公司都会给出以下类似约定来满足基础对接,并且会提供测试环境和正式环境的两套信息。
appkey:A公司商户平台 id
appsecret:A公司商户平台 secret
三、请求及相应格式说明
一般情况下,B公司会提供请求及相应的基础格式说明。
例如:
1、请求方式
post
2、请求消息格式
application/json
3、响应消息格式
application/json
4、请求公共参数
例如,B公司有以下要求
所有接口均需要以 Http Header 方式传递以下参数;
当然,不同的公司提供的参数各不相同,因公司而异。
5、响应/回调参数说明
例如:B公司所有API都有响应,并且有的API还有回调响应,不论是响应还是回调响应,它们的参数格式都一样。
6、针对异步回调的说明
例如:B公司对异步回调说明如下:
异步回调:
某些特定的接口需要异步返回结果,因此需商户A提供一个回调地址,将其进行base64 编码后,配置在 Http 请求 Header 中的 callback_url 里。
应答机制:
应答机制是指当商户A收到B公司数据通知时,必须回写 success 字符串,不区分大小写,B公司收到该“ success”,便认为商户A已收到通知; 否则会继续重复请求回调接口 3 次, 时间间隔为 1s, 5s, 30s。如果 4 次都访问不通,则会间隔 3h 继续轮询回调。
回调解密:
回调使用 aes 加密,需解密后使用。为避免由于网络波动造成回调失败,长时间未收到回调,请主动查询。
7、请求体加密说明及示例
数据采用AES加密,加密后作为data的值。
示例:
加密前:
加密后:
8、回调解密说明以及示例
数据采用AES解密,解密data值部分,解密后是json字符串
解密前:
解密后:
9、一般公司B还会对code值进行说明。
四、确定要对接哪些API
一般情况下,公司B会针对某个项目提供必要的API,我们往往只需要对接少部分API接口,因此,首先确认要对接哪些API方法。我们只需要按照API的要求进行对接即可。
五、根据API文档,编写一些基础工具类
工具类分两类。一类工具类,公司B会提供DEMO,我们拿来用即可。另外一类就需要自己根据API要求自己编写了。
六、根据API文档,编写必要的DTO
针对每个API,主要包含请求DTO,响应DTO,回调响应DTO,这个就要跟踪API要求,编写满足要求的DTO。
当然有些DTO是可以抽象成一个类,例如一般响应DTO和回调响应DTO都是一样的,这个时候就可以抽象为一个DTO了。
七、针对每个API方法,进行对接
做好以上准备工作,就可以一个个接口进行对接了。可采用下面方式一个一个接口进行对接。