3

現在、誰かが支払い処理業者に送られた後に注文を処理するスクリプトがあります。

支払い処理業者は、私のサイトに 2 つ (またはそれ以上) の応答を送信することがあります (通常、最初の応答から 1 分以内)。
この問題について支払い処理業者に連絡しました。彼らはこれを彼らのシステムの問題とは見ておらず、私のスクリプトは余分な応答を考慮し、最後に送信された応答のみをリッスンする必要があると言っています。

複数回答の注文では、最初の回答が成功したので、この回答が来たら注文が処理されます
。2 番目の回答が来た場合、通常は約 30 秒後にエラー応答が返され、注文をキャンセルします。
問題は、最初の応答から顧客に「ご注文ありがとうございました」というメールを送信してしまったことです。これは明らかに理想的ではありません。

注文が処理されてから数分後に別のスクリプトを実行するようにトリガーする方法はありますか? つまり、元の注文から数分後に注文がまだ有効かどうかを確認し、電子メールを送信します。

毎分実行される cron ジョブを考えていましたが、注文が行われた場合にのみスクリプトを実行する必要があるため、これは確かにやり過ぎでしょうか?

4

3 に答える 3

4

shell_exec("/usr/bin/php /path/to/test.php ".($orderId)." &");開始時に 3 分の遅延を使用してバックグラウンド ジョブを開始(sleep(180));し、コードを実行して注文のステータスを確認できます。$argv[2]orderId番号が含まれている必要があります。

于 2012-09-24T16:22:31.923 に答える
1

ここにあなたができること

最初の応答を受け取ったら、スクリプトをしばらく待機させます。たとえば、sleep()関数を使用して1分間待機させます。

http://php.net/manual/en/function.sleep.php

于 2012-09-24T16:25:11.210 に答える
-1

支払い処理業者から2回目のリクエストがあった後、メッセージを変更してメールで通知できないのはなぜですか?

私が理解しているように、2番目の応答を送信している間、プロセッサはすでにサイト上のURLを呼び出しています。これが必要なトリガーです。そのようなコールバック機能がない場合は、完全に処理されていない注文を処理するcronをインストールし、そのような注文の支払いステータスを確認して、別の電子メールで顧客に通知することができます。

于 2012-09-24T16:26:35.337 に答える