1

たとえば 3 つの Web サイトで IPN を使用している場合、これについて 100% 明確ではありません。知識のある人が私のシナリオに従ってこれを説明してくれれば、感謝します。

IPN リスナーを使用するようにサンボックス テスト ビジネス アカウントをセットアップしました: site1.com/listener.php (正常に動作しています)。

同じペイパル アカウントを使用して、他のサイトのリスナーをさらに設定する方法を知りたいです。

私のシナリオでは、すべてのサイトでサブスクリプションの支払いのみを使用しています。

質問 1: ipn_notification_url 変数。この変数が設定されている場合、支払いが行われたときにこれを常にリスナーのipn urlとして使用するようにpaypalに指示しますか? 例; サブスクリプションが失敗した場合、または次の毎月の支払いが行われたときにそのようなことはありますか?

ペイパルが私のリスナーをIPNする必要がある場合、アカウントプロファイル設定で設定されたURLではなく、変数のリスナーを使用しますか? それとも、この変数は、処理中の実際の支払いにのみ使用されますか?

質問 2: 正しいリスナー URL への転送を処理するマスター リスナーが必要な場合、Web サイトを区別することは可能ですか? 例: custom = userId 、 receiver_id = サイト名

質問 2 は、実際には質問 1 と似ています。最初の支払いからのPOSTED 変数は、私のサブスクリプションのために将来自動的に行われる支払いに固執します。Paypal が IPN の更新を送信する必要がある場合、最初の支払い時に設定された変数の URL を常に使用しますか??

これについての啓発に感謝します。

4

2 に答える 2

3

フォームの非表示の入力要素を介して指定できる URL は 3 つあります。これらの名前は次のとおりです。

  1. notify_url: これは、この購入に関するすべての通知が送信される URL です。
  2. return: これは、チェックアウトが正常に完了したときにユーザーが戻る URL です。
  3. cancel_return: これは、PayPal でチェックアウトをキャンセルしたときにユーザーが戻る URL です。

したがってnotify_url、ボタンで使用する場合は、サイトごと、ボタンごと、さらにはボタンのレンダリングごとに異なる場合があります。

notify_url支払い設定で設定したものはすべて上書きされることに注意してください。

(2) については、rm次のように変数を指定することもできます。

0: ユーザーは GET 経由で返されます 1: ユーザーは支払い変数なしで GET 経由で返されます。2. PUT を介してユーザーが返され、すべての支払い変数が返されます。つまり、ボタンが PayPal に送信したもののエコーとして返されます。

0と1の違いがよくわかりません。

PayPal HTML 変数を参照してください。

EDIT私が今見つけることができないSOの別の回答では、PayPal担当者は、notify_url自体に任意の引数を渡すことができると述べています。これは、送信したのと同じ方法で返されます。

于 2013-01-10T23:58:12.997 に答える
3

I found this script from http://codeseekah.com/ which will enable you to set-up multiple PayPal IPN listeners. It allows you to filter the notifications which means that you can send to different listeners depending on conditions that you set (so useful!):

<?php

    ini_set( 'max_execution_time', 0 ); // Do not abort with timeouts
    ini_set( 'display_errors', 'Off' ); // Do not display any errors to anyone
    $urls = array(); // The broadcast session queue

    // List of IPN listener points ** ADJUST THESE TO POINT TO YOUR LISTENERS
    $ipns = array(
            'first' => 'http://www.yourwebsite1.co.uk//paypal/ipn.php',
            'second' => 'http://www.yourwebsite2.co.uk//paypal/ipn.php',
            'third' => 'http://www.yourwebsite3.co.uk//paypal/ipn.php'
        );

    // ** ADJUST THESE CONDITIONS TO FILTER 
    if($_POST['txn_type']!='cart') $urls []= $ipns['first']; // Choose this IPN URL if all conditions have been met
    if(isset($_POST['auction_buyer_id'])) $urls []= $ipns['second']; // Choose this IPN URL if all conditions have been met
    $urls []= $ipns['third']; // maybe this one is always sent to

    // Broadcast
    if ( !sizeof($urls) ) $urls = $ipns; // No URLs have been matched
    $urls = array_unique( $urls ); // Unique, just in case

    // Broadcast (excluding IPNs from the list according to filter is possible
    foreach ( $urls as $url ) broadcast( $url );

    header( 'HTTP/1.1 200 OK', true, 200 );
    exit();

    // Perform a simple cURL-powered proxy request to broadcast
    function broadcast( $url ) {

        // Format POST data accordingly
        $data = array();
        foreach ($_POST as $key => $value) $data []= urlencode($key).'='.urlencode($value);
        $data = implode('&', $data);

        // Log the broadcast
        file_put_contents('_logs/'.time().'.'.reverse_lookup( $url ).'-'.rand(1,100), $data);

        $ch = curl_init(); // Initialize

        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, count($data));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        curl_exec($ch); // Execute HTTP request
        curl_close($ch); // Close
    }

    function reverse_lookup( $url ) {
        global $ipns;
        foreach ( $ipns as $tag => $_url ) {
            if ( $url == $_url ) return $tag;
        }
        return 'unknown';
    }
?>

Just customise the parts you need to (with **s), save it in a file, for example called "multiple-paypal-ipn.php", then put it on one of your servers. Then in your PayPal IPN URL setting (in PayPal) put in the full URL where you have just placed it, e.g. http://www.yourwebsite/paypal/multiple-paypal-ipn.php

This saved me BIG time so hopefully will for others!_g

于 2014-01-26T21:50:25.390 に答える