【问题标题】:Handling post notifications that may take more than 20 seconds处理可能需要超过 20 秒的发布通知
【发布时间】:2016-03-27 09:50:36
【问题描述】:

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

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

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

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

我们不能只忽略来自 SagePay 的最新 POST 请求,因为它们会“忘记”任何以前的通知并希望收到最新通知的响应。对于网络延迟,我们也无能为力。

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

【问题讨论】:

    标签: opayo


    【解决方案1】:

    您的通知回调可以做的第一件事是检查事务表,如果尚未更新,则使用消息更新事务表并继续您的业务处理,否则丢弃重复的调用。我不知道 Sagepay 只接受来自最近发出的通知回调的响应,集成指南中也没有提到这一点。

    不过,您仍然应该以加快速度为目标。考虑一下如何每分钟以 cron/计划的工作发送电子邮件,这样您的客户就不会等待第三方回复。无需在 Notification 回调中发送电子邮件,您只需将行添加到 email_queue 表,稍后由 cron 作业处理。

    【讨论】:

    • 感谢 Ian,存储消息然后继续处理是行不通的。 SagePay 网站声明:“如果您的服务器未响应通知帖子,我们将再次发送尝试。您的服务器必须响应 Sage Pay 发送的最新通知帖子。任何对旧通知帖子的回复 Sage Pay 都会忽略它。最后,我们设法加快了通话速度,这有所帮助。我们必须等待网络服务调用运行才能知道是否向 SagePay 返回“ok”。
    猜你喜欢
    • 2015-11-24
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多