2016-03-27 10 views
0

サーバー統合方式を使用してSagePayと統合しています。通知の処理に20秒以上かかる場合があります

SagePayからの通知POSTは、私たちの側のPHPスクリプトを呼び出します。

私たちのPHPコールバックは、外部Webサービス上でいくつかのメソッドを呼び出す必要があります。

ネットワーク遅延のため、コールバックスクリプトの実行に20秒以上かかることがあります。 SagePayはこれを気に入らず、新しい通知POSTを再発行します。その結果、私たちのコールバックは最終的に2回以上実行され、それは理想的ではありません(複数の支払い完了メールなどを送信します)。基本的にSagePayは、20秒以内に応答が得られるまで通知を発行し続けます。

SagePayからの最新のPOST要求を無視することはできません。以前の通知について忘れてしまい、最新のものからの応答を受け取るように見えます。ネットワークレイテンシについても何もできません。

誰もこのような状況で何をすべきかアドバイスしていますか?

答えて

1

通知コールバックが行うことができる最初のことは、トランザクションテーブルをチェックし、まだ更新されていない場合はトランザクションテーブルをメッセージで更新し、ビジネス処理を続行するか、繰り返し呼び出しを破棄することです。私はSagepayが最も最近発行された通知コールバックからの応答しか受け入れなかったことを知らなかった。これは統合ガイドには言及されていない。

ただし、スピードアップを目指してください。 1分ごとにcron/scheduledジョブで電子メールを送信する方法について考えてみてください。そうすれば、顧客はサードパーティが応答するのを待たずに済みます。通知コールバックで電子メールを送信するのではなく、後でcronジョブによって処理されるようにemail_queueテーブルに行を追加するだけです。

+0

ありがとうIanさん、メッセージを保存して処理を続行できませんでした。 SagePayのウェブサイトは次のように述べています。「あなたのサーバーが通知の投稿に応答しない場合、別の試みが送信されます。あなたのサーバーは、Sage Payによって送信された最新の通知ポストに応答する必要があります。通知ポストSage Payへの応答は無視されます。 最終的に私たちはいくらか助けてくれたコールをスピードアップすることができました。 SagePayに「ok」を返すかどうかを知るために実行するWebサービスコールを待つ必要があります。 – CJD

関連する問題