当前位置: 首页 > news >正文

集成第三方接口的技巧总结

现在系统中集成越来越显得很重要了,不管是钉钉还是支付宝等等等等,每个系统都集成了多方的接口,而且越来越多系统功能都会集成的越来越多,我们的信息化之网会越铺越大:

那么调用第三方的接口,使用第三方的api文档有什么技巧吗?

1、借鉴下别人写一个博客一句话,感觉不错:

其实调接口很简单,原理和使用数据库的数据差不多,

我们使用本地数据库的时候是通过: 连接数据库——获取数据(传递参数,获取表中的数据)——返回前端——前端处理(封装返回的数据,前端校验是否成功)这么一个流程,

调用接口其实也差不多是这样,发送请求(向第三方发送请求,传递参数)——收到数据(收到第三方的返回数据)——数据处理(数据解析)——返回前端——前端处理(前端展示封装数据)。

 

通过将SDK方法中返回的数据划分为正常返回数据以及错误返回的数据两部分,让调用者更简单的对接口调用错误进行处理。

将SDK调用第三方服务接口的流程划分为: 数据准备,http请求,结果处理三部分,以重用代码。

 

2、具体操作的一些技巧:

(1)api文档阅读:主要看请求参数和返回数据,有些文档有很多demo,这些demo会帮助我们很多。

参考这个内容:http://www.pmcaff.com/discuss/index/480006465919040?pmc_param=1

 

为了让更多同学更能看懂这个传说中的API接口文档,我举个栗子,并予以详细描述,其实真的很简单!

首先得明白,任何对外接口,都至少(不仅限)包含两个任务分类:
讲清楚这个问题:首先分清楚平台:

三种角色:
A)互联网公司
B)终端用户
C)第三方商家/服务提供者
平台和非平台的区别在于,用户用的产品/服务/信息,直接由A生产,还是直接或间接由C生产。
举个例子,印象笔记就是个互联网产品,它由印象笔记开发,归印象笔记所有,用户消费印象笔记提供的产品。
再举个例子,淘宝就是个平台产品,用户在上面购买的商品和阿里巴巴没有直接关系,是由淘宝上面的C)第三方商家提供的。 淘宝只是为商家提供了这样的场所/系统,引来了顾客。

还有很多平台类公司,你看不到具象的C,例如赶集,知乎,他们通过聚合普通用户的信息,加工组织,再为普通用户服务。我管他们叫信息平台,也就是通常的UGC平台。
判定是否为互联网平台主要有一下两个标准:1 是否对商家开放;2 盈利模式是否为分成。从这个意义上讲,微信不算平台,是腾讯公司自营。直播比较接近平台,直播上的帅哥靓妹属于商家性质。


作者:知乎用户
链接:https://www.zhihu.com/question/21491868/answer/18825854
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1> 服务接口:在平台产品中,一般由商户调用,平台负责处理;

2> 通知接口:在平台产品中,一般由平台调用,商户负责处理;

如上,接口的规范包括URL和请求的参数两部分。

在这里,我拿我们支付平台的『短信验证码扣款接口』做个案例,如看不明白的,可以在评论里告知,我会抽时间回复,当然了,妹纸可以私信我,饭不吃,工不做也第一时间回复。// 由于这个涉及到一些内部私密,本人只作一个简要的说明,但作为牛逼如你的PM,应该能看懂的

1、短信验证码扣款接口

1.1 业务流程(描述)

商户在入驻签约我们产品时(代收代付),可以选择是否开通这个服务,并设定这个服务的规则,很显然,商户开通了,并且设定了用户支付时发送短信验证码

商户发起扣款,我们根据商户设定的发送短信限额,如果单笔扣款金额超出短信金额限制,那么会给用户发送一条短信验证码,用户须用短信回复验证码,我们收到后再继续检查验证码并进行扣款

1.2 接口规范

因为涉及到扣用户的资金,原则上是不能的,但这个用户是和银行和我们达成了三方协议,所以有了协议保障,再扣款则无问题

调用接口的流程略,那么到现在,列位看官,这个接口是服务接口还是通知接口呢?

URL:http://www.pmcaff.com/discuss/edit/523163678204992

请求方式:GET

请求参数:(至少包含以下几个字段)

1> 参数名:

2> 参数含义:

3> 格式说明:

4> 是否必须:

WechatIMG949.jpeg

返回值参数

Clipboard Image.png

返回码如下:

图片.png

当这个接口被调用时,先校验这个商户与我们的签名(sign&sign_method)是否OK,为什么需要校验?不是你媳妇,人家能让你牵手吗?

然后把上述的URL带上,再把签名,再把上述4个参数拼接(需要哪些就拼接哪些)在一起,大概样子如下:

URL:http://www.pmcaff.com/discuss/edit/523163678204992?contract_no=201407110000159812&sp_no=135800000001&sign=XXXXXXXXXXXXXXXXXXXX&sign_method=1&total_amount=1

然后会返回一个结果:

{"err":"0","msg":"OK","token":"b0947e3456032b74c5awarfafe8de1bcd55"}

到现在你看懂了吗?然后再回到我第一段里说的,

产品经理在这个环节,需要关注的不是文档本身,而是API文档里包含的字段参数是否符合我方业务诉求

 

  

 

(2)json数据解析:net.fs.json还是阿里的fastjson还是jacksondegnd

具体参考:https://www.cnblogs.com/huoer33/p/6638378.html

(3)调用第三方使用的工具:Httpclient、urlConnection还是RestTemplate

具体内容参考:http://blog.csdn.net/lmb55/article/details/70247018

 

相关文章:

  • 开始VS 2012 中LightSwitch系列的第2部分:感受关爱——定义数据关系
  • 在左上角倾斜四十五度显示的TextView
  • java IO类简单介绍
  • 高新集训记录
  • css控制大幻灯绝对居中(非背景)
  • Java synchronized用法
  • Zuul小技巧 /routes
  • flex 与 javascript互调用
  • vue2的keep-alive的总结
  • 一款轻量的图像缩放插件
  • class与dex文件
  • 嵌入式Linux:基于ARM11下Android应用点亮LED灯 【PDF版论文下载】
  • 11.24 静态元素过期时间
  • AWS的登录认证。。。
  • 05 Objective C数组的四种遍历方法总结
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • 2017-08-04 前端日报
  • axios 和 cookie 的那些事
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • EventListener原理
  • JS变量作用域
  • leetcode98. Validate Binary Search Tree
  • tweak 支持第三方库
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 分布式任务队列Celery
  • 高度不固定时垂直居中
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 你真的知道 == 和 equals 的区别吗?
  • 前端工程化(Gulp、Webpack)-webpack
  • 设计模式(12)迭代器模式(讲解+应用)
  • 通过几道题目学习二叉搜索树
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 最近的计划
  • 移动端高清、多屏适配方案
  • ​Spring Boot 分片上传文件
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #预处理和函数的对比以及条件编译
  • (3)llvm ir转换过程
  • (C)一些题4
  • (笔试题)分解质因式
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (三)uboot源码分析
  • (十六)一篇文章学会Java的常用API
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)菜鸟学数据库(三)——存储过程
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET分布式缓存Memcached从入门到实战
  • .net开发时的诡异问题,button的onclick事件无效
  • [14]内置对象
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...