PaylPal を Web ショップの支払いモジュールとして統合する作業を行っています。PHPとMysqlを使用しています。PayPal で支払いが行われた後、顧客は私のウェブショップにリダイレクトされます。その時点で、私の IPN en DPT スクリプトが同時に呼び出されます。私がこれを行うのは、IPN に (わずかな) 遅延がある場合があるためです。顧客に IPN を待たせたくないので、PDT スクリプトが注文を処理し、データベースに挿入します。もちろん、挿入する前に、PDT スクリプトはポストバックで注文をチェックします。
2 つのスクリプトが同時に呼び出されると、注文が 2 回処理される危険性があります。私たちはそれを望んでいません。そこで、txn_id フィールドの列を一意の列にしました。IPN のクエリが失敗した場合、DPT は既にデータベースへの挿入を行っており、その逆も同様です。そうすれば、テーブルをロックする必要はありません。
私はこれを正しくやっていますか?