支付系统流程

摘要:
通常使用第三方支付渠道(就个人而言,原因是有更多支持的支付方式或卡类型。支付系统将更新订单系统的支付状态,将其发送到支付系统进行分析(更新交易结果和交易状态),其他人将根据具体的支付渠道来)。2.3.1第三方支付渠道发送IPN后,接收IPN。将异步通知支付系统(更新交易结果和状态,3。付款系统设计3.1付款过程用图表说明(ABC是用于操作的本地数据库的位置)。

想要精通一个行业需要多久?

我的回答是I don't know,断断续续做支付这一块的业务有几年了,但是感觉刚刚入门。

很久没有写博客了。。。不知道要怎么写了。

---------------------------------------------------------------

以下支付的说明,均是基于跨境电商,支付渠道如无特殊说明,均是指PayPal。
---------------------------------------------------------------

目录:

1. 支付系统简介

2. 支付系统关联系统

3. 支付系统设计

4. 总结

1. 支付系统简介

  每一家公司都是在做销售,产品是实体货物或者服务或者其他,目标都是要盈利。每个公司都会有一个收银台(实物或者虚拟的),原因是需要。。。收款或者退款。这也是支付系统产生的原因吧。毕竟每一个软件的产生都是要解决实际生活中的问题。(小结:支付系统是一个收银台)

       作为一个非支付业务为主的公司,在使用支付渠道时,往往采用的第三方支付渠道(个人认为原因是支持的支付方式或者卡种会更多,对于国外的本地化或者全球化支持度更高),尤其是电商公司。

2. 支付系统关联系统

2.1 订单系统

  我们采用的是先下单,再进行支付,如一段时间之后不进行支付,则取消订单。支付系统会更新订单系统的支付状态,如支付成功会进入发货流程。

  订单系统介绍请查看这里

2.2 风控系统

2.2.1 事前风控

  简介

    在进入第三方进行支付之前,对订单信息进行风控判定,也叫做黑名单风控

  校验信息

    客户ID,客户邮箱,客户IP,客户下单频率,订单支付次数,支付频率

  任意订单信息校验不通过,则拒绝客户进行支付。

2.2.2 事后风控

  简介

    无法通过系统来判断是否是高风险的交易,需要人工判断

  校验信息

    取消订单频率,收货地址(是否在高风险国家、城市),金额(是否超出指定金额)

  说明:

    每个公司对于风控系统的认知和想法不同,适合自己的才是最好的。风控规则也会随着风险的变化而变化。

2.3 IPN管理系统

  简介

    管理第三方发送的交易结果通知,发送给支付系统进行解析(更新交易结果、交易状态)。ipn是指第三方支付渠道发过来的交易通知。

    ipn的类型:payment、refund、chargeback、dispute(这里列出来一些常见的和通用的,其他根据具体的支付渠道来)等等

    2.3.1 接收ipn

    当第三方支付渠道发送过来ipn之后,应该是做简单的校验(和第三方支付结果进行比对)即可入库。以便于由于系统问题造成ipn接收失败

    2.3.2 给支付系统发送(或者重新发送)ipn

    ipn管理系统接收到ipn之后,会异步通知支付系统(更新交易结果和状态,以及时间)

  解决问题

    第三方支付渠道沟通、不进行通知的重发,以及支付系统处理失败等等问题。

3. 支付系统设计

3.1 支付流程

用一张图来说明(A B C为操作本地数据库位置,第一次出现为添加,第二次出现为更新)

支付系统流程第1张

3.2 退款流程

和收款流程相比,只是少了事前风控(当然调用的第三方API,是退款的API)。退款交易的父级ID为付款ID

3.3 Ipn处理流程

以支付结果ipn处理流程为例(这里会处理ipn重复接收的问题,另外dispute、chargeback通知会产生新的交易记录,并且会冻结订单金额)

支付系统流程第2张

4. 总结

4.1 一笔订单可能有多笔支付交易(可能部分付款,国内这种情况较少)

4.2 对于一笔交易而言(不是一笔订单),支付流程的正向流程只有一个,而逆向流程可能有多个(例如,dispute处理过程中可能会发送多条ipn,需要针对不同类型的ipn进行处理,并改变订单状态,让客户知道当前的处理进度)

4.3 退款渠道一般有两条路径(订单系统退款,支付系统退款),如果一笔交易有正在退款中的交易,那么允许再次添加一条退款交易(即使两笔退款都是退全额的支付金额)

4.4 在支付系统设计的过程中,应该考虑到财务对账(第三方支付系统和支付系统,支付系统和订单系统)

4.5 ipn的处理流程太过于复杂,影响到交易结果和订单状态(需要异步发送通知)

4.6 风控策略会根据风险的变化而变化

这里只是简单说一下支付流程,牵扯到的很多细节没有进行说明,未完待续。。。。。。

免责声明:文章转载自《支付系统流程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Django中间件 及 form 实现用户登陆HAProxy配置代理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

iOS APP上架被拒3.1.1支付问题解决方案

Guideline 3.1.1 - Business - Payments - In-App PurchaseWe noticed that your app uses in-app purchase products to purchase credits or currencies that are not consumed within the a...

Windows的Java_HOME环境变更配置

Windows的Java_HOME环境变更配置 一般会配置三个环境变更: 1、系统变量 变量名JAVA_HOME  变量值=安装目录,如:C:Program Files (x86)Javajdk1.7.0_40 2、Path系统变量,编辑,在原来变量值最后处加上:;%JAVA_HOME%in;%JAVA_HOME%jrein; 3、系统变量CLASSPAT...

Centos 7中的网卡一致性命名规则

一致性网络设备命名,即Consistent Network Device Naming 一、为什么需要这个 服务器通常有多块网卡,有板载集成的,同时也有插在PCIe插槽的。 Linux系统的命名原来是eth0,eth1这样的形式,但是这个编号往往不一定准确对应网卡接口的物理顺序。 为解决这类问题,dell开发了biosdevname方案。 systemd...

mac 驱动

Mac OS硬件驱动(.kext)安装方法一、Mac驱动程序的概念我想用我所理解的系统概念为各位稍微的介绍一下在Mac上的驱动程序概念,基本上,Mac OS X Tiger是一个UNIX架构的核心的系统,所以如果有一些UNIX系统概念其实在底层的架构会很容易了解,系统核心,通常会有包含了硬件支持的程序在内,也就是说有一些需要在系统核心启动就跟着支持的基础硬...

UniAPP IAP支付流程

1,plus.payment.getChannels(function(channels) {}) //获取所有支付方式 2,let iap = channels.find(x => x.id == 'appleiap');  //筛选ios内购 iap 3,iap.requestOrder([内购商品ID], function(event) {}...

onkeypress与onkeydown及 oncopy和onpaste 事件区别详细说明

onkeypress与onkeydown 具体区别: 1. 一个放开一个没有放开,onkeydown 先于 onkeypress 发生。 2.onkeypress 无法系统按钮。 2.onkeydown 捕获的 keyCode 不区分字母大小,而 onkeypress 区分。 onkeypress是在用户按下并放开任何字母数字键时发生。系统按钮(例如,箭头键...