和后台如何对接_业务系统如何对接第三方服务?

在产品工作中,我们时常要对接第三方服务。本文作者从过往的对接项目经历中,提炼的关于业务系统,如何对接第三方服务的方法论,希望能对你有所帮助。

af9d20f1e70b56064ca9b0481321aecc.png

随着公司业务的发展,我们有时会遇到,需要在自身业务系统中加入新服务,但不能纯自主开发的情况。

比如会有以下三种:

  1. 没有资质:有些业务需要有相应的行业资质才能开展,如第三方支付业务,就要求有支付牌照才具有研发资质;
  2. 能力不足:相比头部互联网公司,中小型公司的自研能力相对不强,难以实现需求。如人脸识别,就需要基于AI的识别算法提取人脸特征,没有一定的技术积累则可能无法实现;
  3. 能做但投入产出比不高:要投入大量的资源和精力,且开发难度大,周期长,很容易得不偿失。如搭建客服系统,光是保证消息的收发稳定,都要不短的开发周期,更别说智能分配客服和智能机器人这样的高级功能了。

而这时如果恰好市面上有成熟的解决方案,我们便可以把专业的活,交给有一定资质且专业的人,接入他们的能力来解决自己的问题。

比如,我们要在电商系统中,接入物流轨迹查询的能力,自研的话,需要对接多家物流公司的单号系统,费时费力还可能对接不成功。此时若有第三方服务商,已经整合了多家物流公司的物流轨迹查询,我们便可以直接通过与其进行对接合作,来实现自己的物流查询功能。

通过接入合适的第三方服务,既不用让公司在新领域自研试错,投入过高的开发成本,又能缩短开发周期,让我们的业务产品快速获得更加专业稳定的服务,变得更加成熟、强大。

以上对公司的好处我们了解了,但了解并接入三方服务,这工作对产品经理来说往往不是件易事。

做产品没有标准答案,我们做的每一个产品方案,都是在一个特别具体的环境下产生的。每一次都是定制,对接第三方更为如此。既要快速了解另一个领域的基本知识和行业产品,又要结合选定的第三方服务与公司新提出的业务需求,设计出一期最适合的产品方案,每一次都像是在摸着石头过河,有着说不上来的困难。

在对过往的多个对接项目经历,进行反思后,我将整个对接过程划分为三个阶段,并试图提炼出各个阶段应遵循的共性要点,让我们在对接时能够有章可依,降低事情难度,希望能对你有所帮助。

阶段一:设计前

产品经理在进行具体的方案设计之前,应做哪些事情呢?

1. 对自身业务系统有整体的理解

只有对我们的业务系统,先有全局的理解和把握,才能在知晓业务需求和三方的解决方案后,剖析出要改动的所有部位,做到纤悉无遗。

如若不然,对自身系统结构和业务都还一知半解,就贸然开始着手三方调研和方案设计,很容易因为前期考虑不全,而造成难以预见的危险后果。

举个例子,有一个后台管理系统,管理着线上商城和线下门店的零售业务,你要在整套系统中接入新的第三方聚合支付,逐步替换掉原有的三方支付服务。

若你对业务系统的了解还不足,就直接分析如何使用三方服务能力,并产出方案,推动项目上线。运气好的话,你可能只犯了点小错误。比如在前端商城中,对某个业务页面改了些字段,而后台的一个统计页面,你遗漏了对其进行同步更改,导致无法正常显示。这影响范围还较小,你还能在上线后进行及时补救。

但若严重的话,你的考虑不全,甚至可能会直接影响到系统关联业务的正常运行。比如,之前一直都是负责线上产品的迭代,在这次项目中,由于你没有去加强对线下业务的理解,导致在设计过程中,你直接疏忽了门店的重要设备——POS机,在里面软件的自建订单页面中,也需要更换新的支付方式。由于没有在这次项目中同步更改,将直接影响线下刷卡、扫码等场景的业务的正常开展。

那么需要对业务系统了解到什么程度呢?我们可以通过对风险进行分类,然后倒推得出前期的准备。

可以跟我一样,将这些可能的风险,用二分法,简单划分为直接影响业务与间接影响业务。

直接影响,即影响业务的闭环运行。一旦没有兼顾到里面的任一环节,都会干扰到业务的正常进行。所以你需要做到,对该业务需求所涉及的主线业务流程,和其中的逻辑都有清晰的认识,哪怕对里面的任一个字段规则抱有疑问,你都应该剖根问底。分析其如若是个错误,是否应在这次项目中一同解决,避免其对新老业务产生影响。

间接影响,即不影响项目主流程正常进行的其他影响。如统计、设置等地方的关联改动,这种属于支线流程的需求最容易被我们忽略,但只有都顾及到,才能让方案更加完整。在开发评审时,我们的方案很少能一次通过,都会有或多或少的修改。你可以跟我一样,将在每次评审时所发现的,设计时被遗漏的功能或业务,都记在备忘录中,用于在后续每次设计方案产出后进行自查,以提高初次方案的完整度。

为了更好地降低风险,还可以邀请公司中对该业务熟悉的相关人员,来参与你的设计方案评审,一同检查是否有设计遗漏,多一道保险,避免自己顾此失彼。

2. 完成第三方产品的调研

我们在购物时,为了选到最心仪的商品,通常会货比三家。同样的,为实现业务需求而接入的第三方,将会在很长的时间内伴随着自身产品,这就更需要我们去仔细的筛选。

商品不喜欢,我们可以选择退货或者重新选购,但接入的三方服务不合适,即使我们去重新找新的服务商合作,却也已经在之前的对接过程中,让企业付出了成本,这是无法挽回的。

所以在具体对接前,我们应对三方服务商做仔细地调研与筛选。

这过程我划分为两个小阶段,调研初筛和名单提交。

1)调研初筛

刚开始去了解一个新的领域,你需要做的是,快速研究清楚里面的一些核心概念,然后尽可能多地收集行业产品的信息,并简要分析其服务能力与我们业务需求的匹配度如何。

而考察其服务能力,最为关键的点,无疑就是对我们基础需求的满足度,和其产品的拓展性了。

1.基础需求

基础需求,即本期要实现的业务需求能否满足,这一点还是相对容易判断的。

比如,你要在业务系统中,实现在线下单发货的功能。在订单发货时,通过接口传送面单信息后,接收物流公司返回的快递单号信息,并且能获取物流轨迹更新。

这种只需将核心需求梳理后,与其官网的业务描述进行比对,或者直接询问客服或销售,就可以快速知道能否实现。

2.产品拓展性

业务需求极少能一次性满足,往往会随着业务的发展而变化。所以仅考虑现阶段需求的满足,是不够的,你还需要进一步了解。这次为满足基础需求,所用到的三方产品和服务,能否满足未来定制化的需求。判断其拓展性如何,即二次开发的能力。

比如,在对新业务需求进行分析梳理后,我们通常会有多期项目规划。一期满足核心需求,后续就要考虑,如何实现重要但非一期优先的附加需求了。如果届时的迭代方案,需要对已经使用到的三方产品页面或者系统,进行调整设计,而对方并不支持对其二次开发或者改动难度大,周期长,那就需要更加慎重的考量了。

在平常工作中,我们也要不断去锻炼思考问题本质的能力,不让产品设计停留在表面,只能解决当前问题,而要考虑到是否能承接业务未来更多变化的需求。

2)名单提交

在初步调研后,你需要对初筛合格的三方服务商进行纵向研究,完成调研对比产出,并附上综合分析后的建议,给到对应的决策者进行选择。

其中的分析至少包括以下三个维度:

1.成本

在使用第三方服务时,往往会伴随着各种费用的产生,这也是公司最为关注的点之一,需要我们做仔细地调研。

常见的费用类型有:

  • 服务费用:在使用服务商的某款产品或服务的过程中,产生的服务资费,一般按实际使用量或使用时长付费。如,调用人脸识别的次数,按次收费,使用即时通讯服务的期限,按每月固定的费用收取。
  • 授权费用:我们所选择的服务,需要通过使用对方的SDK去对接时,就有可能要收取对应的费用,即该SDK在固定期限内的使用授权费。 不过也不是固定收取的,有时也会结合服务费用里的套餐包免费赠送,如腾讯云直播购买特定流量包后,就会赠送一年的直播SDK使用权限。
  • 对接费用:在初次对接对方产品时,需要一次性收取的接入费用。一般只在系统级的定制对接,即业务对接复杂度较高时,才有可能要支付这项费用。类似于平台接入银行的存管系统这种,才会收取对接费用。

每家服务商都有自己的收费模式,我们需要了解清楚后,结合自己的需求,去思考最适合公司现阶段的选项或组合。

2.风险

若是接入的三方服务不稳定,那么在上线后,对自身产品所带来的影响将是灾难级的。

服务不稳定带来的卡顿,或者数据错误与丢失等问题,将会直接影响用户对产品的体验和印象,甚至直接弃用产品。

所以稳定,便是对三方服务能力要求的重中之重了,但这也是我们在初次对接时,往往很难判断的一项。

如果直接问服务商其接口的稳定性如何,对方一定会说很稳定,因为没有人会想在初次合作时,暴露自身问题,让客户动摇导致合作失败。所以我们需要,多从其他途径去了解真实情况。

比如可以通过以下几个小点去评估和减小风险:

  • 了解对方业务的沉淀程度:新业务代表着不成熟与高风险,业务的发展需要一定时间的摸爬滚打才能趋于完善。新业务的性能不足和异常流程处理机制的不完善,都会让我们在使用时具有极大的不确定性。所以业务沉淀越久越好,个人建议直接找头部的服务商,或者该业务至少开展了2年的服务商。
  • 先接入支线业务:确定服务商后,最低风险的对接方法,就是先拿自身业务流程中的边缘业务去试手。在对三方服务能力不够确定的情况下,先不要对接核心业务。在熟悉对接流程与其服务能力后,再逐步进行核心业务的全面对接。比如,之前在对接某银行的聚合支付时,我们就先挑选了业务系统中的一个简单业务进行对接验证,即后台系统中的短信付费,有个扫码支付的场景,可以直接接入这项新支付方式进行测试。然后该支线业务的流程跑通后,我们再在所有的支付场景中,接入该聚合支付。
  • 要有备选的服务商:项目上线后,才能验证当时方案的可行性和三方的服务能力。没上线前,我们也不能确信,初次合作的三方服务商,其服务能力能否很好实现业务要求。所以你需要在接入效果不好时,有可以紧急更换的选项,才能做到有备无患。

3.产品配套

初筛时我们所关注的是,要使用到的单个产品的拓展性,这里还需了解对应的产品配套如何,即思考其他的产品资源,能否为我们后期业务的发展而服务。

如接入视频直播服务时,关注美颜、转码、连麦聊天等配套功能,考虑在未来的发展中是否有可能应用上。这既能帮助我们在对未来的规划思考上,拓宽思维,又能进一步判断对方的服务能力和业务成熟度。

3. 初步方案

确定好对接哪家第三方后,我们需要给出初步的方案与服务商进行沟通,确认可以实现后,再进行具体的设计。

这就需要我们先了解,本次需求背后的核心问题是什么,通过识别业务核心,找到简单快速的解法,了解优先级和紧急程度后,给出自己的最小方案。并结合自身系统的简单介绍和业务背景说明,让服务商更好的判断自身产品或服务能否满足。

方案中为了更好的阐述需要实现的业务需求,可配合简要流程图进行说明,同时确认会在哪些环节用到什么接口。这一步因为涉及到双方系统的实现,我们需要邀请本司技术人员,共同参与前期的调研评审,探讨接入方式与可行性。

1)注意事项

1.关于第三方服务商

我们需要确定对方的业务对接人和技术对接人,以便在产生对接疑问时,可以快速找到负责人,沟通并解决问题。

在具体设计之前,一定要先通过电话或者QQ等方式,对话确认自身的业务需求能否满足,避免在开发人员进行对接的过程中,才发现无法很好实现,那么一切的努力都将成为白费。

进行业务方案的可行性确认前,你还可以先问下对方的典型案例和场景是什么样的,通过了解不同的业务需求,还能帮助你拓展思维,思考后期的需求。

在对接较为复杂,或者沟通不清楚时,可联系上门演示,缩短沟通周期。

2.关于业务定制方

这里说的业务定制方,指的是定制项目或SaaS软件的业务方。当帮他们实现新服务需求时,请务必提前了解并确定对方想要实现的业务范围,同时每次的沟通结果都做留档确认,避免在前期的业务需求确认上,出现不必要的异议。

阶段二:设计中

初步方案通过后,我们就要做具体的产品设计了,这里简单聊下,设计时应该注意的4个小点:

1. 接入第三方的业务流程梳理

为了避免复杂的开发,并降低沟通成本,可在流程图中注明与三方的接口动作,在哪些环节做什么判断。同时还有异常情况的处理方式,比如在对接第三方支付中,支付失败有哪些原因,拿到不同的结果该怎么处理,等等。

2. 新业务对原业务的影响

新服务接入到业务系统后,需确定并说明是否为默认开通,且不开通时,是否要对原业务做设计调整,和对旧数据进行处理。

3. 设计上对C端用户的无差异感知

如无必要,无需让用户直接感受到产品加入的第三方。

依旧以上述的三方支付项目为例,当时我们有个环节是,个人分销商要进行佣金提现,需要在成为分销商前,就在三方账户体系中进行账户新建,即会要求个人提前在前端产品进行认证签约。

此时,我们无需让用户在签约过程中,直接感知第三方的账户资料建立(签约协议中会有说明),只需在后台直接让三方的虚拟账户体系,映射平台账户,一一对应,用户无感,也减少认知负担。

4. 接口文档上的数据项是否有遗漏

接口文档的作用,就是让我们知道,在哪个环节需要提供哪些内容给对方,对方才可以有效的处理并返回给我们需要的结果。

比如在后台实现在线下单的功能,就只需要我们传给对方,收寄件人的姓名手机和地址信息即可,然后对方再返回快递单号。

仔细看接口文档,除了避免遗漏必填项外,还要留意各个环节的选填项是否要在本次设计中加入。比如,在后台在线下单时,可考虑是否让用户可以选择通知快递员上门揽件。

5. 注意事项

在完全实现业务需求之前,我们往往先采取最小可行性方案,即先跑通核心业务为主。在第一次对接时,最好逻辑不要过于复杂,如果开发评审后,评估的研发周期较长,你就需要反思下,自己是不是一次性做的需求太多了。

同时,完整的设计方案产出后,在进行开发之前,还应与业务方再次沟通,并输出最终业务流程图进行确认。

阶段三:上线后

测试完成,上线之后,我们还要做两件事:

1. 风控与三方能力评估

上线后对三方服务的风控依旧不能松懈,由于第三方是我们无法把控的部分,因此我们不能确定上线后是否会出现什么问题,所以在必要时,要能做到即时关闭该服务。

同时,还需要在运行一段时间后,对三方的稳定性和拓展性两方面进行评估,若没达到要求,则需要考虑后期是否更换服务商。

2. 项目复盘

项目复盘,即反思从项目开始到正式上线,自己做了什么事情,产品方案的落地效果如何,对已达成的结果和预期成果之间所产生偏差进行评估,是否优于预期,有做错了什么。通过在反思中获得进步,进而提高自身的生产效率。

特别是,我们做的产品方案,在评审时如果不是一次过,更要多反思那时修改了什么,在哪方面思考不足,并检查是否有遗漏的异常流,对其他模块的影响是否有照顾到,将在复盘过程中发现的待完善内容,列入到接下来的迭代规划当中。

结语

每次对接新的第三方类型时,我们经常会像面对一个全新的困难一样,充满着太多的未知,容易一头雾水。

但作为一个研究型的职业,产品就是这样经常要做探索。既然选择了产品这条路,便只能风雨兼程,让我们知难而不畏难,在一个又一个的项目中,继续不断深入思考、磨炼自己。

本文由 @陈星 原创发布于人人都是产品经理,未经作者许可,禁止转载。

题图来自Unsplash,基于CC0协议。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468810.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

adb 启动某个apk

有时候需要用apk来启动某个apk adb shell am start -n com.android.launcher3/com.android.launcher3.Launcher 具体查看~ /rk3399_7in1/packages/apps/Launcher3/AndroidManifest.xml

Linux_PAM_用户之间的信息传递

PAM 账户信息的验证,可动态加载验证模块,提高验证的灵活性; PAM是一套应用程序接口,提供一连串的验证机制,借由一个与指令程序相同文件名的配置文件进行认证分析. 验证的过程包含三个字段: 1.验证类别(Type): author(认证):检验使用身份,需要密码进行检验account(账户):进行…

将枚举的键值绑定到下拉列表框

控制器代码: ///assemblyString:程序集名称的长格式,name:获取程序集实例中具有指定名称的 System.Type 对象,except:除了哪些枚举(键或值都可以)不加载到下拉列表框///此方法写在控…

Makefile 文件中的:obj-$(CONFIG_TEST) += test.o,这一类的是什么意思?

1、obj-$ $(CONFIG_TEST) 是一个整体,$(bbb)表示引用变量 bbb 比如定义 CONFIG_TESTy $(CONFIG_TEST) 就是 y obj-$(CONFIG_TEST) 就是 obj-y 又比如定义 CONFIG_TESTm $(CONFIG_TEST) 就是 m obj-$(CONFIG_TEST) 就是 obj-m obj-y foo.o 该例子告诉Kbuild在这目…

C++_IO类型_文件输入输出流_字符串流

IO类型 iostream: 用于窗口的输入输出fstream: 用于文件读写sstream :读写存储在内存中的string对象 注:他们继承于istream与ostream,因此istream对象也可用于读取ifstream, string对象, ostream对象同上; 并且iostream类型可在同一个流实现输入输出操作;. IO对象不可复制赋…

python网络编程证书_python 网络编程——客户端

网络通信的基本接口是socket,它扩展了操作系统的基本I/O到网络网络通信。socket可以通过socket()函数来建立,通过connect()函数来连接。得到了socket,可以确定本地和远程端点的IP地址和端口号。socket对不同的协议来说都是一种通用的接口&…

AC日记——集合位置 洛谷 P1491

集合位置 思路&#xff1a; 次短路&#xff1b; 先走一遍最短路&#xff1b; 记录最短路径&#xff0c;然后依次删边走最短路&#xff1b; 最短的长度就是次短路&#xff1b; 来&#xff0c;上代码&#xff1a; #include <queue> #include <cmath> #include <cs…

Kconfig中的“depends on”和“select”

在Kconfig文件中&#xff1a; config Adepends on Bselect C它的含义是&#xff1a;CONFIG_A配置与否&#xff0c;取决于CONFIG_B是否配置。一旦CONFIG_A配置了&#xff0c;CONFIG_C也自动配置了。 参考资料&#xff1a;“select” vs “depends” in kernel Kconfig。 所以去…

C++_虚继承_虚函数_纯虚函数(多继承的二义性,多态)

基本信息 每一个类都有一个虚表,以及虚表指针; 虚表的内容是编译器决定的,虚表中用于存放虚函数的指针, 程序运行时的类型信息等; 每个多态对象都存放着一个指向当前类型的虚表的指针, 该指针在构造函数中被赋值, 一般来说当调用当前这个类的构造函数, 则虚表指针就指向当前类…

数组的合并和升序排列_leetcode 33 搜索旋转排序数组

给你一个升序排列的整数数组 nums &#xff0c;和一个整数 target 。假设按照升序排序的数组在预先未知的某个点上进行了旋转。&#xff08;例如&#xff0c;数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] &#xff09;。请你在数组中搜索 target &#xff0c;如果数组中存在…

[LeetCode] [C++] 206 Reverse Linked List 反转单项链表

题目要求 Reverse a singly linked list.LeetCode 206在线测试 问题描述 给定一个单项链表&#xff0c;将其反转后返回链表头节点。 思路分析1 可以完整的遍历一遍链表&#xff0c;将链表的每个节点的值存在数组中&#xff0c;然后反向遍历数组重新生存一个新 链表。这样做需要…

defconfig、 .config

最近在裁剪内核慢慢关注这个问题 defconfig、 .config defconfig 一般在arch/arm64/configs/目录下&#xff0c;是一个简单的内核配置&#xff0c;是没有展开的。 .config一般是用来执行make menuconfig的基础配置 从.config到defcong不是简单的复制操作&#xff0c;而是mak…

递归过程中语句执行顺序

递归的两种模式 模式一 //递归的过程中在"递"的过程中解决问题 function function_name(Max_argument){if(end_condition){end;}else{solve;function_name(Min_argument);//问题规模逐渐减小} } 注:位于递归函数前的语句和函数具有顺序性 模式二 //递归的过程中…

qq面板(仿版,未完待续中。。。。)---2017-04-24

主要实现效果&#xff1a; 1、点击对话&#xff0c;显示对话&#xff1b;点击联系人&#xff0c;显示联系人 2、在联系人界面&#xff1a; 实现好友列表的展开与折叠&#xff1b;&#xff08;图12&#xff09; 实现鼠标移到好友列表上的背景颜色的变化&#xff1b;&#xff08;…

苹果企业证书_苹果签名经常掉签原因大汇总

苹果签名就是数字签名&#xff0c;是基于非对称加密算法来实现的&#xff0c;对称加密就是通过非对称加密算法实现的&#xff0c;对称加密是通过同一份秘钥加密解密数据&#xff0c;非对称加密有两份秘钥&#xff0c;分别是公钥和私钥&#xff0c;用公钥进行加密的数据只能使用…

漫画|Linux 并发、竞态、互斥锁、自旋锁、信号量都是什么鬼?

1. 锁的由来&#xff1f;学习linux的时候&#xff0c;肯定会遇到各种和锁相关的知识&#xff0c;有时候自己学好了一点&#xff0c;感觉半桶水的自己已经可以华山论剑了&#xff0c;又突然冒出一个新的知识点&#xff0c;我看到新知识点的时候&#xff0c;有时间也是一脸的懵逼…

C++_顺序容器

顺序容器类型 顺序容器 vector: 支持快速随机访问list: 支持快速插入与删除deque: 双端队列 顺序适配器 - stack: 后进先出(LIFO)堆栈 - queue: 先进先出(FIFO)队列 - priority_queue: 有优先级管理的队列 上述顺序容器包含于以下头文件中:< vector >,< list &…

python画tan_Python入门之三角函数tan()函数实例详解

描述tan() 返回x弧度的正弦值。语法以下是 tan() 方法的语法:import mathmath.tan(x)注意&#xff1a;tan()是不能直接访问的&#xff0c;需要导入 math 模块&#xff0c;然后通过 math 静态对象调用该方法。参数x -- 一个数值。返回值返回x弧度的正弦值&#xff0c;数值在 -1 …

课程作业一

由于代码的难点部分是王源写的。。所以开始我选择了重写。。但是重写好像比我想象的复杂太多&#xff0c;加上时间分配不够所以现在还没有完成。。先提交随笔写好后补上代码。。我道歉认罚。。把这次当成一个教训。。 转载于:https://www.cnblogs.com/daydreams/p/6759372.html…

不废话~就是抽奖~

不废话就是抽奖 在公众号回复-抽奖- 获取抽奖二维码参与抽奖