PayPal MPL を使用して、バックエンド サーバーは支払いが完了したかどうかをどのように確認できますか? MPL がフロー全体を制御していることを理解しているので、バックエンド サーバー呼び出しは必要ありませんが、サーバーが購入完了を検証して登録する必要がある場合はどうでしょうか。
更新まず、これまでの回答に感謝します。プロセスを改善するためのガイドとなる 2 つの要件/好みがあります。
- 支払いはできるだけ早く検証する必要があります。お客様は、購入後すぐに有料サービスにアクセスする必要があります。
- 検証プロセスでは、アプリからの最小限の証明データを使用する必要があります。次のシナリオを考えてみましょう: 購入は完了しましたが、バックエンド サーバーがオフラインになりました。クライアント アプリは、後で検証するために証明データ (トランザクション ID、支払い ID) を保存する必要があります。しかし、その間にクライアントがプルーフ データ (アプリの再インストールなど) を失った場合、どうすればクライアントとバックエンド サーバーが同期を取り戻すことができるでしょうか?
req #1のため、IPN は好まれません。IPNのドキュメントによると:
通常、PayPal は IPN メッセージをすぐに処理しますが、IPN は Web サイトでのアクションと同期されません。インターネット接続は常に 100% 信頼できるとは限らず、IPN メッセージが失われたり遅延したりする可能性があります。IPN サービスは、リスナーが確認応答するまでメッセージを自動的に再送信します。サービスは最大 4 日間メッセージを再送信します。IPN はリアルタイム サービスではないため、チェックアウト フローは IPN メッセージを待ってから完了する必要があります。チェックアウト フローが IPN メッセージの受信に依存している場合、システム負荷またはその他の理由により処理が遅れる可能性があります。可能な遅延を処理するようにチェックアウト フローを構成します。
iOS SDK ドキュメントに記載されているプロセスには、支払いを確認するためのさまざまな API 呼び出しが含まれますが、これらの呼び出しには、クライアント アプリからの証明データが必要です。しかし、クライアントが証明データを紛失した場合はどうなるでしょうか? ( req #2 )支払い前に証明データをバックエンドに送信できますか? その場合、バックエンド サーバーは検証できるまでプルーフ データを保存できます。そのプロセスは次のようになります。
- クライアント アプリが PayPal 支払いを開始する
- クライアント アプリは証明データ/支払い情報をバックエンド サーバーに送信します
- バックエンド サーバーに支払い情報が保存される
- クライアント アプリは、PayPal での支払いプロセスに従います
- クライアント アプリは、支払いを検証できることをバックエンドに通知します (追加のデータは必要ありません)。
- バックエンド サーバーは、ステップ 2 のデータを使用して支払いを検証します。
これには、ステップ 2 で使用できるパラメーターを使用した API 呼び出しが必要ですが、ほとんどの ID は支払いが完了した後にのみ使用できます。何かアドバイスはありますか?