通过界面进行系统集成方式思考

系统集成方式概览

系统之间的交互方式通常包含以下几种:

  • api接口调用,通过rpc的方式(如:http)直接调用获取数据或写入数据
  • 直接访问数据存储,如直接访问对方系统数据库等
  • 通过消息队列进行队列通知

接口方式

接口方式(包括api和消息队列)是数据交互的经典方式,适用于系统之间的数据集成、互联互通,便于实现分布式的事务以及系统之间逻辑调用

界面集成方式

很多情况下,系统之间的集成包含了复杂的业务操作逻辑,例如对于保险业务,很多时候需要进行较为复杂的交互操作,这时,如果单纯的使用接口方式进行交互,会调用大量的系统接口,同时需要每个接口集成的业务系统理解一系列的业务交互过程,对于系统集成方造成很大的困难,系统集成周期非常长。针对这种情况,如果被集成方提供现成的基于界面交互的方式的集成能力,将能够大大的降低集成难度,便于业务快速落地。具体流程如下:


界面集成交互流程

支付宝网页支付接口调用示例

支付宝支付接口调用示例

调用顺序如下:

  1. 商户系统请求支付宝接口 alipay.trade.page.pay,支付宝对商户请求参数进行校验,而后重新定向至用户登录页面。

  2. 用户确认支付后,支付宝通过 get 请求 returnUrl(商户入参传入),返回同步返回参数。

  3. 交易成功后,支付宝通过 post 请求 notifyUrl(商户入参传入),返回异步通知参数。

  4. 若由于网络等问题异步通知没有到达,商户可自行调用交易查询接口 alipay.trade.query 进行查询,根据查询接口获取交易以及支付信息(商户也可以直接调用查询接口,不需要依赖异步通知)。

注意

  • 由于同步返回的不可靠性,支付结果必须以异步通知或查询接口返回为准,不能依赖同步跳转。
  • 商户系统接收到异步通知以后,必须通过验签(验证通知中的 sign 参数)来确保支付通知是由支付宝发送的。详细验签规则参考异步通知验签。
  • 接收到异步通知并验签通过后,一定要检查通知内容,包括通知中的 app_id、out_trade_no、total_amount 是否与请求中的一致,并根据 trade_status 进行后续业务处理。
  • 在支付宝端,partnerId 与 out_trade_no 唯一对应一笔单据,商户端保证不同次支付 out_trade_no 不可重复;若重复,支付宝会关联到原单据,基本信息一致的情况下会以原单据为准进行支付。

其他界面集成方案

  • 对于移动端来讲,可以通过类似Android系统的Activity集成调用方式,调用被集成方的App的界面来进行集成

问题及解决方式

  • 上面所描述的方法,如果涉及到复杂传参或者大量传参的情况,可以在被集成方和集成方双方提供数据接口的方式来临时存储过程参数,参数通过临时的唯一标识key来互相获取,存储方式可以考虑redis等临时存储,具有一定时效性,过期清除

你可能感兴趣的:(通过界面进行系统集成方式思考)