我们在超时之前将SagePay(直接)的响应设置为30秒,并向客户发送“超时,再试一次”消息。有时,SagePay很少需要花费更长的时间来回应。
有一些(罕见)SagePay直接实例,其响应时间最长为2分钟(称为SagePay支持跟踪事务)。显然这是由于下游银行的系统需要很长时间才能做出回应。这会导致孤立的交易,我们告诉客户它已经失败,但SagePay已完成交易。客户然后再次尝试,我们最终得到重复的交易(或者,在一个案例中,在我们注册为失败的成功交易之后卡被拒绝)。
这种情况很少见,但是数十万笔交易已经发生了几十起,并导致客户服务和需要退还这些交易的客户部门感到悲痛。
问题:
更新1 - 9月2日:
在9月1日再次发生SagePay在他们的数据库失败,因此“交易花费的时间比平时长”。这些交易花费了一分多钟才完成,到那时我们已经超时并告诉客户即使他们的交易最终完成也要再次尝试。
当被问到时,SagePay表示他们的超时间隔是15分钟,这是等待HTTP响应的非常长的时间。默认情况下,IIS在请求被终止之前的最长时间为90秒。
同样,有没有人为此做过变通办法?
更新2 - 9月29日: SagePay因为网关故障而失败,它会导致一些飞行中的交易失败,我们得到以下信息:
底层连接已关闭:预期的连接 保持活着由服务器关闭。
然而,遗憾的是,其中一些交易已经成功,即SagePay向客户收费,但我们并未意识到这一点。
有任何改进建议吗?
2016年2月26日更新时间: 关于这一点,没有什么可以做的。您需要允许某个超时时间,比如30秒,然后将其作为错误处理。最好的选择是确保引发/记录警告,然后您可以在以后跟踪它。
其中一件事永远无法解决......: - (