Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Omnipay:关于使用transactionId和transactionReference是否有约定?_Php_Payment Gateway_Payment Processing_Omnipay - Fatal编程技术网

Php Omnipay:关于使用transactionId和transactionReference是否有约定?

Php Omnipay:关于使用transactionId和transactionReference是否有约定?,php,payment-gateway,payment-processing,omnipay,Php,Payment Gateway,Payment Processing,Omnipay,当使用Omnipay PHP库(或任何其他支付处理框架/库)时,是否有一个约定涵盖何时使用transactionId而不是transactionReference 我考虑过的几种可能性: “Id”保留用于数字引用,“Reference”保留用于字母数字引用 “Id”是我们自己对事务的引用,在初始请求中发送给网关,“reference”是网关自己在回调/响应中返回的引用 在大多数情况下,它们只是没有任何内在意义的词语。不同的支付网关使用不同的术语,这增加了混淆 这就是说,Omnipay已经在您的惯

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

我考虑过的几种可能性:

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

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

    这就是说,Omnipay已经在您的惯例上实现了标准化(2):

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

    是否假定ID在不同的付款中是唯一的?还是会是一样的?我正在考虑一个场景,您可以发送一些付款模式id,或者发送订单参考。对我来说,发送订单id/引用是有意义的,特别是如果它出现在语句等中。我知道一些网关需要唯一的事务id,但这可以在我假设的omnipay类中生成。我认为通常事务id仅用于引用目的(通常用于返回数据,以便您知道它用于哪个数据)。transactionId确实需要是唯一的。一些网关(如SagePay)将接受商户提供的ID作为参考,但如果transactionId以前使用过,则会引发例外情况。名字令人困惑;Helcim使用相同的两个术语,但目的相反-transactionReference是商户提供的,transactionId是Helcim网关生成的。幸运的是,OmniPay有助于将这一切正常化,只需遵守上述答案中的规则即可。