3

シナリオは、Web アプリケーションのユーザーがデジタル アイテムを購入できるというものです。Web アプリケーションはPaypal Instant Payment Notificationを使用します。

IPN プロトコルは、次の 3 つのステップで構成されます。

  1. PayPal は、イベントを通知するメッセージを IPN リスナーに送信します

  2. リスナーは、変更されていない完全なメッセージを PayPal に送り返します。メッセージには、同じフィールドが同じ順序で含まれ、元のメッセージと同じ方法でエンコードされている必要があります

  3. PayPal は、メッセージが PayPal から発信された場合は VERIFIED、最初に送信されたものと矛盾がある場合は INVALID という 1 つの単語を返信します。

ユーザーが自分のペイパルVERIFIEDで他のメールアドレスを使用した場合、誰がトランザクションを完了したか、アイテムを購入したか (Web アプリケーションのユーザー) をどのように知ることができますか? ユーザーのメールアドレスを保存しましたsessionが、別のペイパルメールアドレスを持っている場合はどうなりますか? Paypal のメールは IPN メッセージに含まれています。

他の詳細については、役に立たないかもしれませんが、アプリケーションは Google-App-Engine の Struts2 で書かれています。

4

2 に答える 2

1

戻ってきたIPNデータをユーザーと相関させる方法が必要になります。ペイパルの電子メールを提供するように依頼するか、IPNサービスのユーザー名/パスワード生成機能を使用します。これはややエレガントではありませんが機能的なアプローチです。

  • IPNがネットワークから外れたら、ペイパルが生成したユーザー名/パスワードとpayer_id(おそらくデータストア内)を保持します。
  • 電子メールで関連付けることができない場合は、ユーザーがサイトに戻ってきたときに、ペイパルのサイトから生成されたユーザー名/パスワードを1回入力するように要求します(関連付けるためだけに)。
  • ユーザー名/パスワードを検索し、UserServiceからのユーザーIDを支払人IDに関連付けます。

IPNを使用する理由は、サブスクリプションが終了したとき、キャンセルされたとき、または支払いが入ったとき(支払いを停止したアカウントの場合)にIPNメッセージを受け取ることができるため、サブスクリプションサービスのためです。

考慮すべき最も重要なことは、サイトのユーザーを、使用しているサービスの支払いに使用されるpayer_id(場合によってはpayer_ids)に関連付ける方法です。

別の注意点として、IPNコールバックの情報を保存するためにセッションを使用することはありません。実際には、長い時間がかかる場合があります(たとえば、x.com会議がオンで、全員がペイパルを叩いている場合)。

実行中のアプリケーションまたはルックアンドフィールのより良い説明がある場合、私はよりエレガントな提案を思い付くことができるかもしれません。これが役に立ったかどうか教えてください。

于 2012-07-20T21:50:50.080 に答える
0

PayPalのエクスプレスチェックアウトを利用してみませんか?このようにして、server2serverにトークンをネゴシエートし、ユーザーが戻ってきたときにそのトークンの結果をPayPalで確認できます。ユーザーがアプリケーションから直接購入している場合は、実装が簡単です。そして、私はそれがあなたが使用している方法よりも堅牢だと思います(私はそれを前に聞いたことがありません:D)

于 2012-07-16T17:05:58.030 に答える