9
头图

前言

Hi,各位朋友,我是CrazyCodes

上一篇我大致描述了支付系统开发的基本流程,但相比之下,国内的流程虽然大同小异,但必要步骤还是完整的,技术水平比较高,但相比之下,对接海外的三方支付就没有我们想象的那么通畅了。

本章还是按照正常流程,付款、通知(包括同步通知、异步通知)、查询、退款以及对账这几个基本步骤来说明与海外的区别。

建议配合 浅谈支付系统开发基本流程 文章理解差异点

付款

image.png

上图是一个完整的付款流程,与海外支付的特殊性相比较的话,有以下几个点

  1. 三方确认支付可能不是实时的,这里这个不实时代表的不是分钟级,而可能是小时或者是以天为维度的,为啥延迟这么大,这个我就不清楚了,可能是链路长,或者技术发展水平问题,当然这也是部分国家,类似英国、法国这些比较发达的国家,一般来说流程还是挺正常的。
  2. 例如台湾的超商支付,可以理解为是一种线下支付方式,大致流程是用户在网站上下单后,我方只能够提供用户一个支付码,用户需拿着这个支付码去线下门店付款,最终完成交易,这种方式在我方付款的这个流程上,只能是完成一个付款前置的功能,付款过程在线下
  3. 其次我们不应信任任何系统与用户操作,何况是海外,货品或资金的追回更加困难,所以要做各种校验,有时海外三方系统没有校验的功能,可能会发生欺诈行为,我们可以通过三方提供的附加参数(类似于订单描述)添加上校验码,当然,如果连这个也没有的话,只能听天由命了。
  4. 最后是关于订单号的问题,就是部分三方系统订单号可能不支持幂等,这意味着当用户使用某个订单号发起支付在并未付款后,再次用这个订单号发起支付时就会失败,遇到这种情况时,我们可以使用一个订单号对应多个交易号去解决,意味着每次发起后生成一个唯一的交易号,作为订单号的替补,去进行支付。

通知

image.png

付款都如此困难,那么通知更是难上加难,列出几个比较核心的差异点

  1. 首先可能没有任何通知,那么没有任何通知的情况下,我们只能通过主动查询的方式去获取付款结果
  2. 又可能是缺少一种一类通知,缺少同步通知,或者异步通知,一般都是缺少异步通知,缺少异步通知的话,如果你系统认为可以完全信任同步通知的话,可以选择性忽略这个缺陷,如果有同步+主动查询,个人认为确实可以选择性忽略,如果没有主动查询的接口,那就需要询问三方系统是否可以提供对账的接口,总而言之,就是要做到信息对称,才可以认定付款成功。
  3. 最后一种最奇葩,虽说是一个线上付款的流程,但可能三方系统并没有主动查询接口、同步通知、异步通知和对账接口,你没有看错,除了一个付款,啥子都没有,这种情况下,一般三方会提供给你一个可以手动下载账单的商户后台,然后嘞,只能通过导入表格的方式去校验了,这比较类似于国内的银行卡转正或者公对公。

退款

image.png

经历了复杂多变的付款后,再来看看退款的一些差异

  1. 首先是没有退款接口,这就意味着用户只能去找三方退款,三方再从对账单中体现出来某个订单的状态。
  2. 其次就是可能没有退款的异步通知,那么我们只能使用主动查询的方式去验证订单状态,这又回到了没有接口的问题,如果没有主动查询接口,最次最次我们手动去商户后台导出,再导入系统内。
  3. 最后有一种最原始的方式,叫做财务打款(意思就是没有自动化退款流程)。

对账

历经千辛万苦,总算到了对账这个环节,一般有以下几个差异

  1. (自求多福型)没有任何可以提供的账单
  2. (自食其力型)三方系统提供了可以导出的商户后台,通过导入表格完成对账
  3. (半自动化型)分为两种,提供FTP供下载对账单,另外一种通过邮件方式定时发送账单,程序通过读邮箱完成对账
  4. 最后说一点,保持着不完全信任三方系统的原则,对账这块还是要谨慎的,尽量把风险挡在用户付款时吧。

致谢

感谢你看到这里 ,希望本篇文章可以帮到你,谢谢。


CrazyCodes
16.9k 声望14.8k 粉丝

I am CrazyCodes,生命不息,编码不止。