2013-04-25 58 views
1

我们有一个电子商务网站使用Authorize.net作为支付网关。如何模拟来自authorize.net的扩展处理响应?

我们最近遇到了提交付款确认的人的问题,然后再次点击提交。这导致双重产品情况和/或双重付款。

有些事情要考虑:

  • 支付确认页面是结果的PRG(后重定向消息获得),这是安装在用户提交他们的付款之前
  • 我们拥有的功能在实际上会对请求的每个部分起作用的地方(请参阅下面的描述)
  • 这种情况只适用于Authorize.net事务比平时更长的情况。
  • 这是不是在生产中,我们只是在寻找一种方法来测试这个新功能来防止这种行为。

的防护件

我们必须遵循以下过程一个多步骤的结账方式:

  • 产品选择
  • 付款项
  • 确认订单/提交付款
  • 收据

在过程的每一步执行该检查是否用户具有当前的“订单”,其具有多个状态中的一个的服务的呼叫:startedprocessingcomplete

如果订单是started,它会将它们重定向到结账流程的第一页。 如果订单是processing,它会将它们重定向到占位符页面,该页面每2秒执行一次ajax请求以检查订单状态。订单完成后,它们被重定向到receipt页面。 如果订单为complete,则会立即将其重定向到receipt页面。

的问题

由于这个功能真的是唯一有效的在处理交易需要更长的时间,它给我们带来麻烦测试它 - 有几个原因:

  1. 我们的开发服务器速度慢,并且在应用程序甚至呈现页面之前,Authorize.net将更有可能响应我们的请求。
  2. 如果我们通过使用PHP函数sleep()虚拟响应,它会阻塞线程并且什么都不运行,我们和[1]在同一条船上。

我们希望什么

我不知道是否有办法通过一些参数进行Authorize.net以较慢的方式响应请求,或者如果有另一种方式来做到这一点。我欢迎任何和所有想法!

回答

1

您不应该直接针对此Authnet进行测试。制作你自己的Authnet“服务器”,让它延迟对你的回应。对于我为我的Authnet库编写的单元测试,我创建了自己的假服务器,它发回我需要测试的适当响应。你可以做同样的事情,并在返回响应之前让“服务器”等待你需要的时间。对于您来说,测试延迟的响应不一定是真实的。

+0

完美:)这将工作出色! – 2013-04-25 18:03:40