【问题标题】:Payment queuing system for PHPPHP的支付排队系统
【发布时间】:2014-07-11 19:03:09
【问题描述】:

我正在尝试找出处理付款处理的最佳方式,以防止重复提交付款。我正在使用 PHP(特别是 CakePHP 2.3.8)和 Balanced Payments 来处理付款处理。

我注意到在我的服务器日志中,我在一秒钟内提交了多个请求,这些请求通常与 wordpress 或 phpmyadmin 相关,例如

ip.address.here - [08/Jul/2014:15:03:12 -0400] "GET / HTTP/1.1" 302 320 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"
ip.address.here - [08/Jul/2014:15:03:12 -0400] "GET / HTTP/1.1" 302 320 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"
ip.address.here - [08/Jul/2014:15:03:12 -0400] "GET / HTTP/1.1" 302 320 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"
ip.address.here - [08/Jul/2014:15:03:13 -0400] "GET / HTTP/1.1" 302 320 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"

我担心有人尝试类似的事情(无论是否出于意外)但需要付费。处理上述情况的最有效方法是什么?无论是“黑客”还是系统中的小问题,多个请求都很快进入?如果我使用像this one, speficially for CakePHP 这样的排队系统,我将如何跟踪以前处理的条目以检测重复提交?

假设我有一个包含 3 个条目的队列。在处理条目 1 时,我会检查条目 2 和 3 以确保它们不是重复信息吗?如果是,那么就删除它们?

【问题讨论】:

    标签: php cakephp queue payment


    【解决方案1】:

    根据我的经验,您应该只保存一个会话标识符,该标识符在事务完成或被取消之前保持不变。通常,支付网关会使用该会话标识符来检查您是否没有重复交易。

    此外,支付网关应检测到重复项(即在短时间内相同的卡信息、相同的金额)并将错误返回给您,让您知道发生了什么。

    因此,您只需记住跟踪您的唯一 ID 并在交易完成时将其重置。如果您保留了一个购物袋,并且该购物袋已过期,请让交易 ID 同时过期。最后,确保使用 javascript 禁用提交按钮,这样用户就不会多次点击它。

    【讨论】:

      猜你喜欢
      • 2011-05-20
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-15
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      相关资源
      最近更新 更多