处理可能需要20秒以上的帖子通知

时间:2016-03-27 09:50:37

标签: sagepay

我们正在使用服务器集成方法与SagePay集成。

来自SagePay的通知POST回调到我们这边的PHP脚本。

我们的PHP回调本身必须在外部Web服务上调用多个方法。

有时,由于网络延迟,我们的回调脚本需要超过20秒才能运行。 SagePay不喜欢这样,并重新发布新的通知POST。这导致我们的回调最终运行两次或更多,这不太理想(发送多个付款完成电子邮件等)。基本上SagePay会持续发出通知,直到它在不到20秒的时间内得到响应。

我们不能忽略来自SagePay的最新POST请求,因为他们“忘记”之前的任何通知,并期待收到最新通知的响应。我们也无法对网络延迟做任何事情。

有没有人对在这种情况下该怎么做有任何建议?

1 个答案:

答案 0 :(得分:1)

您的通知回调可以做的第一件事是检查事务表,如果尚未更新,则使用该消息更新事务表并继续进行业务处理,否则丢弃重复的调用。我不知道Sagepay只接受了最近发布的Notification回调的回复,而且在集成指南中没有提及。

然而,你仍然应该加快速度。考虑一下如何每分钟在cron /预定作业中发送电子邮件,这样您的客户就不会等待您的第三方做出回应。您可以简单地将行添加到email_queue表中,以便稍后由cron作业处理,而不是在通知回调中发送电子邮件。