2012-05-07 16 views

答えて

2

IIRC グーグルの後、私はあなたのようには見えません。私たちはPayPalを使用します。基本的に、ユーザがPayPalボタンをクリックすると、custom変数をIPNプロセスに渡すことができます。この変数はトランザクション全体に渡り、IPN通知を処理するコントローラに送信されます。

リクエストを検証して信頼できるかどうかを確認します。

たとえば、カスタム変数でユーザーIDを使用し、PayPalのメールアドレスをファイルのアドレスと比較し、(サーバー上のトラッキングを使用して)最近ボタンをクリックしたことを確認できます。

詳細はPayPal IPN docsを参照してください。

+0

PayPalは開発者にとってあまり親切ではないことが残念です。彼らの書類は長く、実際には重要ではありません。私は午前中にドキュメントを読んでいて、私が望む変数が 'custom'であることを知りました。ご説明いただきありがとうございます。 – hllau

+0

私は友人に共感することができます - 私も同じでした。顧客の視点から見たUXも恐ろしいものです。がんばろう! –

0

私はpaypalで支払いを受け付けるウェブサイトも開発しています。ちょうどあなたのように、私はIPNとそれをテストする方法と一緒に何をすべきかを考え出すのに苦労しました。 IPNを設定できるようにするには、ボタンを編集し、詳細オプションに進みます。そこに他の変数を含めるテキスト領域があります。右に2つのサンプル変数をコピーするだけです(notify_urlと(address_overide = 1)?)。 notify_urlの値を変更して保存します。

2

PaypalではIPN URLをhttps://username:[email protected]/ipnのように設定できますが、ユーザー名とパスワードは送信されないようです。

私のサーバ上で認証を削除するまで、すべてのリクエストは常にIPN履歴に失敗としてマークされていました。 代わりに.htaccessファイルを作成して、paypalからのリクエストを受け入れることができます(私はそれをしていないので、正確な構文がわからないので、googleする必要があります)。

0

今のところ不可能ですが、実世界のシナリオについて質問する場合は、通常、単純なHTTP認証を処理するWebサーバーの前にプロキシサーバーがあります。あなたのpaypal IPNのURL。たとえば、nginxディレクティブを使用すると、次のようになります。

server { 
listen 80; 
server_name example.com; 

location /paypal/ipn { 
     try_files $uri @proxy_to_app; 
} 

location/{ 
    auth_basic "Restricted"; 
    auth_basic_user_file /example/.htpasswd; 
    try_files $uri @proxy_to_app; 
} 
location @proxy_to_app { 
    if (!-f $request_filename) { 
      proxy_pass http://localhost; 
      break; 
    } 
}} 
関連する問題