【问题标题】:Omnipay: Is there a convention about using transactionId vs transactionReference?Omnipay:是否有关于使用 transactionId 与 transactionReference 的约定?
【发布时间】:2014-01-20 05:07:27
【问题描述】:

在使用 Omnipay PHP 库(或任何其他支付处理框架/库)时,是否有涵盖何时使用 transactionId 而不是 transactionReference 的约定?

我考虑过的几种可能性:

  1. “Id”保留用于数字引用,“Reference”保留用于字母数字引用。
  2. “Id”是我们自己对事务的引用,在初始请求中发送给网关,而“Reference”是网关自己在回调/响应中返回的引用。

【问题讨论】:

    标签: php payment-gateway payment-processing omnipay


    【解决方案1】:

    在大多数情况下,它们只是没有任何内在含义的词。不同的支付网关使用不同的术语,这增加了混乱。

    也就是说,Omnipay 已将您的约定标准化 (2):

    • Id 始终指代您自己的应用程序生成的标识符(例如,在发起新付款时发送 transactionId
    • Reference 始终指代支付网关生成的标识符(例如,响应中返回的transactionReferencecardReference,或稍后请求退款时发送的transactionReference

    【讨论】:

    • 是否假定 ID 在不同的付款中是唯一的?或者它可以是一样的吗?我正在考虑一个场景,您可能会发送一些支付模型 ID,或发送订单参考。对我来说,发送订单 ID/参考是有意义的,特别是如果这显示在报表等上。我知道有些网关需要唯一的交易 ID,但这可以在我假设的全支付类中生成。
    • 我认为通常 TransactionId 仅用于参考目的(通常用于返回数据,以便您知道它用于哪些数据)。
    • transactionId 确实需要是唯一的。一些网关(例如 SagePay)将接受商家提供的 ID 以供参考,但如果之前使用过 transactionId,它们会引发异常。名称令人困惑; Helcim 使用相同的两个术语,但目的相反——transactionReference 是商家提供的,而 transactionId 是 Helcim 网关生成的。幸运的是,OmniPay 有助于使这一切正常化,只需遵守上述答案中的规则即可。
    猜你喜欢
    • 2017-10-24
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    相关资源
    最近更新 更多