悠悠楠杉
API接口对接方法:从联调失败到稳定上线
API接口对接,是让两个系统按约定交换数据。拿到接口地址和密钥后,工作并没有结束:请求能发出,只代表网络层面走通;返回成功码,也还要核对业务数据是否按预期写入。实际联调中,耗时最多的往往是双方对同一项约定理解不同。
请求发出后,先核对双方理解的“成功”
开始写代码前,把接口文档里直接影响结果的内容落成一份可核对的约定:请求方法、字段含义、鉴权方式,以及成功和失败各返回什么。字段类型尤其容易被略过。订单编号看起来全是数字,也可能按字符串传递;金额若以最小货币单位提交,接入方按元处理,就会产生业务错误,而接口仍可能正常响应。
联调时保留一组经过脱敏的请求与响应,记录请求环境、请求标识和返回时间。调用方看到“成功”,还要确认成功指的是“已接收”还是“已处理完成”。如果对方异步处理数据,后续状态可能通过查询接口或回调返回,不能把首次响应当成最终结果。遇到文档没有写清的字段,直接把实际报文和疑问发给接口提供方,比凭字段名猜测省事。
签名错误反复出现时,核对实际发出的内容
假设有这样一种联调情境:调用方按文档生成了签名,请求却持续收到签名验证失败。重新检查密钥后仍未解决,但用固定报文测试时偶尔能够通过。排查方向便落在签名所用的数据与最终发出的数据之间。
开发人员将签名前的请求体和网络层实际发送的请求体分别记录,发现程序在签名后又序列化了一次数据,部分字段的表示发生变化。对方验证的是收到的报文,而调用方签的是先前的内容,两边计算结果无法一致。调用方随后固定请求体的生成位置,用同一份内容参与签名和发送,并请接口提供方确认字段顺序、时间戳和编码方式的约定。
这条处理路径仍有待验证之处:若调整后部分请求继续失败,还得对照失败报文检查双方的签名规则,不能仅凭一次通过就关闭问题。日志里保留请求标识和必要的摘要即可,密钥及敏感原文不应直接写入普通日志。
测试环境通过后,处理超时和重复请求
联调成功不代表上线后的请求都会及时返回。调用方超时,可能是对方没有收到请求,也可能是对方已经处理、响应却未送达。此时直接重试创建订单或提交支付类请求,可能产生重复操作。双方要确认接口是否支持幂等:同一个业务请求标识重复提交时,返回原处理结果,还是再次执行。
回调接口也会遇到重复通知。接收方按业务标识核对已处理状态,完成处理后再返回约定的确认响应;若处理失败,则保留错误记录,便于后续重试或人工核查。上线前再用测试环境覆盖一次超时、重复提交和失败返回,确认日志能串起一次请求的发送、响应与后续状态。尚未明确的重试条件和回调规则,应在双方对接记录中写清后再启用自动重试。

