Transactions 订单号、交易id和发票号之间的差异

Transactions 订单号、交易id和发票号之间的差异,transactions,payment-gateway,payment,credit-card,payment-processing,Transactions,Payment Gateway,Payment,Credit Card,Payment Processing,我正在实现我的第一个支付网关,虽然我的情况可能很简单,因为我可以使所有三个相同,但我想知道一些情况下,它们应该是不同的 同样,订单号、交易id和发票号与任何其他形式的交易相关信息之间的区别是什么? 它们都必须是唯一的吗? 最后,交易完成后,我应该向客户展示什么 注意:我是一名商人,但与任何其他领域(如银行、信用卡、支付网关或任何东西)相关的情况也是可以接受的。我们集成了来自不同银行的许多不同的卡授权API,在较高的层次上,没有API接口的标准,当您获得商户帐户时,API接口将提供给您 以我的经验

我正在实现我的第一个支付网关,虽然我的情况可能很简单,因为我可以使所有三个相同,但我想知道一些情况下,它们应该是不同的

同样,订单号、交易id和发票号与任何其他形式的交易相关信息之间的区别是什么?

它们都必须是唯一的吗?

最后,交易完成后,我应该向客户展示什么


注意:我是一名商人,但与任何其他领域(如银行、信用卡、支付网关或任何东西)相关的情况也是可以接受的。

我们集成了来自不同银行的许多不同的卡授权API,在较高的层次上,没有API接口的标准,当您获得商户帐户时,API接口将提供给您

以我的经验:

订单号(或同等产品) 是商户提供的值,该值在交易请求中传递给银行,然后银行将其与交易关联到其记录中

这允许使用商户定义的值在银行系统上识别交易(用于报告/对账等)

一般来说,这是独一无二的

交易id(或等价物)是银行返回的用于识别其系统上交易的值。这将是独一无二的

发票编号这与授权流程无关,因此与银行提供的附加功能有关,并且是具体实施的(例如,将多个产品分组在一起的方式)

最后,交易完成后,我应该向客户展示什么


您将在数据库中存储与交易相关的所有信息,并从该记录集生成您自己的交易id;这就是您将向用户展示的内容。

在我们进入语义之前,让我们先讨论一下我们遇到的不同ID

在我们的系统上,我们为发票生成一条记录。此记录及其链接表包括客户、项目、日期、价格、税金、总额和付款。我们的数据库为该行生成一个唯一的ID。此ID用于联接表

我们处理的每个付款都有一个来自付款处理程序的ID(除非付款放在我们客户的内部帐户上)

在创建第一条记录之前,我们为事务生成一个唯一的逻辑id

下面是我们给它们起的名字,以及我们如何使用它们

  • 订单ID或记录编号:数据库生成的ID。通常是递增的整数。用于链接表。也用作简短、简洁、用户友好的ID
  • 发票ID:我们为发票创建的唯一逻辑ID。我们使用GUID。这是我们随付款交易一起发送的内容
  • 交易ID或付款ID:从付款处理程序返回的ID。使用了各种格式

您可以跳过发票ID,只使用订单ID。我们希望在将记录存储到数据库之前,有一个逻辑ID可以随意使用。

在我的情况下,我应该向支付网关提供所有3个详细信息(这提供了API,我们不直接与银行和信用卡网络打交道),这将返回根交易参考号(由银行提供)、授权代码(由银行提供)、EPG交易参考号(由支付网关本身提供)。所以我猜在这种情况下,订单号、交易id和发票号只是额外的信息,三者可以是相同的。有什么想法吗?