海外电商支付网关避坑指南
前言
Hi,各位朋友,我是CrazyCodes
上一篇我大致描述了支付系统开发的基本流程,但相比之下,国内的流程虽然大同小异,但必要步骤还是完整的,技术水平比较高,但相比之下,对接海外的三方支付就没有我们想象的那么通畅了。
本章还是按照正常流程,付款、通知(包括同步通知、异步通知)、查询、退款以及对账这几个基本步骤来说明与海外的区别。
建议配合 浅谈支付系统开发基本流程 文章理解差异点
付款
文章图片
【海外电商支付网关避坑指南】上图是一个完整的付款流程,与海外支付的特殊性相比较的话,有以下几个点
- 三方确认支付可能不是实时的,这里这个不实时代表的不是分钟级,而可能是小时或者是以天为维度的,为啥延迟这么大,这个我就不清楚了,可能是链路长,或者技术发展水平问题,当然这也是部分国家,类似英国、法国这些比较发达的国家,一般来说流程还是挺正常的。
- 例如台湾的超商支付,可以理解为是一种线下支付方式,大致流程是用户在网站上下单后,我方只能够提供用户一个支付码,用户需拿着这个支付码去线下门店付款,最终完成交易,这种方式在我方付款的这个流程上,只能是完成一个付款前置的功能,付款过程在线下。
- 其次我们不应信任任何系统与用户操作,何况是海外,货品或资金的追回更加困难,所以要做各种校验,有时海外三方系统没有校验的功能,可能会发生欺诈行为,我们可以通过三方提供的附加参数(类似于订单描述)添加上校验码,当然,如果连这个也没有的话,只能听天由命了。
- 最后是关于订单号的问题,就是部分三方系统订单号可能不支持幂等,这意味着当用户使用某个订单号发起支付在并未付款后,再次用这个订单号发起支付时就会失败,遇到这种情况时,我们可以使用一个订单号对应多个交易号去解决,意味着每次发起后生成一个唯一的交易号,作为订单号的替补,去进行支付。
文章图片
付款都如此困难,那么通知更是难上加难,列出几个比较核心的差异点
- 首先可能没有任何通知,那么没有任何通知的情况下,我们只能通过主动查询的方式去获取付款结果
- 又可能是缺少一种一类通知,缺少同步通知,或者异步通知,一般都是缺少异步通知,缺少异步通知的话,如果你系统认为可以完全信任同步通知的话,可以选择性忽略这个缺陷,如果有同步+主动查询,个人认为确实可以选择性忽略,如果没有主动查询的接口,那就需要询问三方系统是否可以提供对账的接口,总而言之,就是要做到信息对称,才可以认定付款成功。
- 最后一种最奇葩,虽说是一个线上付款的流程,但可能三方系统并没有主动查询接口、同步通知、异步通知和对账接口,你没有看错,除了一个付款,啥子都没有,这种情况下,一般三方会提供给你一个可以手动下载账单的商户后台,然后嘞,只能通过导入表格的方式去校验了,这比较类似于国内的银行卡转正或者公对公。
文章图片
经历了复杂多变的付款后,再来看看退款的一些差异
- 首先是没有退款接口,这就意味着用户只能去找三方退款,三方再从对账单中体现出来某个订单的状态。
- 其次就是可能没有退款的异步通知,那么我们只能使用主动查询的方式去验证订单状态,这又回到了没有接口的问题,如果没有主动查询接口,最次最次我们手动去商户后台导出,再导入系统内。
- 最后有一种最原始的方式,叫做财务打款(意思就是没有自动化退款流程)。
- (自求多福型)没有任何可以提供的账单
- (自食其力型)三方系统提供了可以导出的商户后台,通过导入表格完成对账
- (半自动化型)分为两种,提供FTP供下载对账单,另外一种通过邮件方式定时发送账单,程序通过读邮箱完成对账
- 最后说一点,保持着不完全信任三方系统的原则,对账这块还是要谨慎的,尽量把风险挡在用户付款时吧。
推荐阅读
- Android开发支付集成——微信集成
- 支付宝怎么取消优酷自动续费
- 微信app支付返回-1的问题
- H5App打包支付方式
- 支付宝手机宝令打开不知道决办法
- 支付宝APP支付(基于Java实现支付宝APP支付)
- tp3.2支付宝app支付
- APP支付,后台支付宝生成预支付设置超时时间timeout_express无效,使用time_expire代替
- React Native电商项目实战混合APP开发 React Native实战 混合APP实战开发
- 一张图看懂支付宝AR实景红包玩法_微信