【问题标题】:How do I send a unique order ID for each request to a payment gateway?如何将每个请求的唯一订单 ID 发送到支付网关?
【发布时间】:2009-05-18 04:40:30
【问题描述】:

我有一个购物车。我想与 CCAvenue 支付网关集成。我总是从数据库发送订单 ID。结帐后,我的系统突然关闭。然后我必须再次检查它再次发送。我数据库中的订单 ID 与支付网关重复。这是我的问题。

我的问题是:如何每次都发送唯一的订单 ID?我的网站是 PHP 的。

【问题讨论】:

  • 您能解释一下“我的系统已关闭”是什么意思吗?您还没有真正提供足够的信息或代码示例。
  • 系统已关闭意味着由于断电,我的系统已关闭。我的问题是如何创建唯一的订单 ID

标签: payment-gateway


【解决方案1】:

对于大多数支付网关,您可以发送单个 auth+capture AKA“销售”交易,或者您可以将授权和捕获交易作为两个单独的请求发送。

如果您担心发送单个销售交易的交易一致性问题,我的建议是发送授权以首先保留资金,然后在您的订购流程结束时发送捕获。

如果系统在初始授权期间出现故障,更糟糕的情况是,在您的身份验证到期后的三天内,资金将被释放。您应该注意不要发生更糟糕的授权情况,因为它会阻止授权资金在清算之前被使用,这有时会导致客户不高兴。

如果系统在最终捕获期间失败并且您无法记录状态,您可以稍后重新运行捕获,在这种情况下,结果将是成功或来自网关的消息表明捕获已经发生,然后可用于更新您系统的付款状态。

【讨论】:

    【解决方案2】:

    我认为应该有一个单独的功能 - 一直运行,检查以前版本的订单是否在购物车中。此外,该过程的副本应始终存储在数据库中。这样,如果由于某种原因,服务器重启,仍然可以从同一位置继续下单(不会出现重复下单的问题)。

    【讨论】:

    • 永远不要将完整的信用卡详细信息存储在您的数据库中。充其量你冒着信息被盗的风险。在最坏的情况下,您很可能会直接违反您与商家帐户提供商的协议。请记住,您没有的东西(完整的信用卡信息)永远不会被盗。相反,只需存储信用卡的最后 4 位数字即可启用审核。
    • @Larry K:+1 啊。违反与支付网关的协议从来都不是一件有趣的事,而且有多少人这样做很烦人。
    【解决方案3】:

    可能想要一个像 http://us3.php.net/uniqid 这样的唯一 ID,尽管您的问题有点模糊

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-22
      • 2017-08-16
      • 2016-02-10
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 2020-05-17
      相关资源
      最近更新 更多