支付系统有哪几种订单号?

1,260 阅读3分钟

有几个?

首先,在系统层面,分为几个系统
1.商家
2.支付公司
3.银行


各个系统的订单号

1.商家
商家给支付公司的订单号,用于唯一定位是哪个商家的哪个数据

2.支付公司
1)本地订单号 //携带业务数据,不方便对外提供
2)给上游的本地订单号 //不包含业务数据,可以对外提供
3)商家传过来的订单号 //用于唯一定位是哪个商家的哪个数据
4)上游银行的订单号 //查询对账的时候,上游银行返回的数据,用于唯一定位是哪个上游银行的哪个数据

3.银行
给支付公司的订单号

聚合支付-扫码支付

商家

聚合支付的扫码支付,是没有商家订单号。因为聚合支付的扫码支付,所谓的商家本质只是一个二维码,然后二维码里包含了商家号字段。本质不是一个真正的商家,说白了,因为这个时候商家是没有自己的电商系统。所以,想传商家订单号,他也传不了,因为没有系统,就没有办法生成。


如果是其他类型的支付,比如快捷支付,或者即使是扫码支付,但是不是聚合支付,而是第三方公司自己的app二维码(比如支付宝 微信 其他第三方公司的app)。

本质上,其实只要商家有自己的电商系统,只要支付的时候,都会给上游支付公司传一个商家订单号。

为什么呢?因为支付公司也要传一个给上游的订单号。

本质是因为不同系统之间的对接,订单都要通过订单号来对账。怎么唯一定位一笔订单?必须每个系统,都有自己的订单号,而且还要把这个订单号给到上游,以便查找对账的时候,可以唯一定位数据。而且数据对不上的时候,上游可以拿这个唯一数据,在下游的系统里唯一定位到那个数据。

聚合支付-扫码支付的特殊性在于,没有真正的商家,所谓的商家只是一个包含商家号的二维码,二维码放在商家的店里,所以商家只是一个概念上的商家。这个二维码本质上是属于聚合支付公司的,也是聚合支付公司生成的,然后提供给店家。本质上只是聚合支付公司和微信对接,这个时候,相当于是聚合支付公司是商家,微信是第三方支付公司,即聚合支付公司接微信之后,就成了微信的商家。

支付公司

orderId什么时候生成?这里的orderId,指的是支付公司的orderId。

是1.第一次请求2.第二次请求?是第二次请求。因为第一次请求,只是根据商家号,做鉴权;另外,写数据到缓存。其他业务,都不进行。


什么时候校验数据是否存在?即什么时候处理幂等问题?

也是第二次。因为第一次只是鉴权。第二次才是业务操作。包括1.生成orderId 2.校验数据在数据库是否存在,即幂等处理。

银行订单号

查询对账的时候,保存到本地。