私は、ユーザーが他のユーザーが提供するサービスの料金を支払う Web サイトを持っており、週の終わりに、サービスの販売額からコミッションを差し引いた金額をユーザーに支払います。
現在、ユーザーに支払いをしたいときは、手動で支払いを行い、paypal にログインし、支払い後に手動でデータベースを更新しています。私たちが抱えている問題は、トランザクションが 1 週間に 1,000 件を超えているため、手動で行うのは非常に面倒なことです。
Paypal の Adaptive Payments API を使用して、ワンクリックで支払いを実行し、データベースを更新できる小さなシステムを思いつきました。
私の質問は次のとおりです。いくつかの状況が発生することを恐れています。
ユーザーに支払い、SQL データベースがダウンするため、販売記録を更新しません。その結果、cron が実行されると、システムはユーザーに再度料金を支払います。
逆に、最初に SQL データベースを更新し、それが成功した場合、PayPal での支払いを実行することもできます。問題は、PayPal 側で何か問題が発生した場合、ユーザーに支払いを行ったかのようにデータベースが更新されるため、ユーザーにまったく支払いを行わないことになります。
当社のソリューション:
データベースを更新し、変更されたすべてのレコードを追跡します - > PayPal API の呼び出しに進みます - > PayPal 呼び出しが失敗した場合、変更を更新されたレコードに戻します。呼び出しが成功した場合は、そのままにしておきます。
PayPal 支払いを実行し、データベースを更新します。API からの ACK メッセージをデータベースに保存し、有料ユーザーの記録を確認するときに、ACK フィールドが成功したかどうかを確認します。
私たちのソリューションは私たちを本当に疲れさせ、おそらく特定の考え方にとらわれています. 私たちの懸念は、SQL が失敗するか、PayPal API 呼び出しが通らないことです。私たちの支払いシステムについて何か提案や、おそらくまったく異なる実装を持っている人はいますか?