前言
在实际工作中,我们经常需要在项目中调用第三方API接口(电商API接口),获取数据,或者上报数据,进行数据交换和通信。
那么,调用第三方API接口会遇到哪些问题?如何解决这些问题呢?
这篇文章就跟大家一起聊聊第三方API接口的话题,希望对你会有所帮助。
1 域名访问不到
一般我们在第一次对接第三方平台的API接口时,可能会先通过浏览器或者postman调用一下,该接口是否可以访问。
有些人可能觉得多次一举。
其实不然。
有可能你调用第三方平台的API接口时,他们的接口真的挂了,他们还不知道。
还有一种最重要的情况,就是你的工作网络,是否可以访问这个外网的接口。
有些公司为了安全考虑,对内网的开发环境,是设置了防火墙的,或者有一些其他的限制,有些ip白名单,只能访问一些指定的外网接口。
如果你发现你访问的域名,在开发环境访问不通,就要到运维同学给你添加ip白名单
了。
2 签名错误
很多第三方API接口为了防止别人篡改数据,通常会增加数字签名(sign)的验证。
sign = md5(多个参数拼接 + 密钥)
在刚开始对接第三方平台接口时,会遇到参数错误,签名错误等问题。
其中参数错误比较好解决,重点是签名错误这个问题。
签名是由一些算法生成的。
比如:将参数名和参数值用冒号拼接,如果有多个参数,则按首字母排序,然后再将多个参数一起拼接。然后加盐(即:密钥),再通过md5,生成一个签名。
如果有多个参数,你是按首字母倒序的,则最后生成的签名会出问题。
如果你开发环境的密钥,用的生产环境的,也可能会导致生产的签名出现问题。
如果第三方平台要求最后3次md5生成签名,而你只用了1次,也可能会导致生产的签名出现问题。
因此,接口签名在接口联调时是比较麻烦的事情。
如果第三方平台有提供sdk生成签名是最好的,如果没有,就只能根据他们文档手写签名算法了。
3 签名过期
通过上面一步,我们将签名调通了,可以正常访问第三方平台获取数据了。
但你可能会发现,同一个请求,15分钟之后,再获取数据,却返回失败了。
第三方平台在设计接口时,在签名中增加了时间戳校验,同一个请求在15分钟之内,允许返回数据。如果超过了15分钟