贝宝IPN多设置(Paypal multiple IPN setup)

2019-07-17 12:42发布

我使用IPN时让我们说3个网站,如果有人与知识可以根据我的情况给我讲解一下,我将不胜感激对此感到不是100%清楚。

我已经安装使用IPN监听我的SANbox测试业务帐户:site1.com/listener.php(工作就好了)。

我想知道如何建立更多的听众对我的其他网站,使用相同的PayPal帐户。

在我的方案,我只认购款项的所有网站的工作。

1:ipn_notification_url变量。 将这个变量,如果设置,告诉贝宝付款时,总是以此为听者IPN网址是什么? 例; 如果认购失败或类似的东西,接下来每月的付款时?

所以,当贝宝有需要IPN我的监听器,它会使用从变量听众,而不是在帐户配置文件设置一组网址是什么? 或者将这个变量只用在实际支付时beeing处理?

问题2:是否有可能不同的网站分开,如果需要有一个主监听器,用于处理转发到正确的监听器网址是什么? 例如:定制=用户id,receiver_id =网站名

问题2实际上类似的问题1.从首期付款张贴变量将, 坚持到会全自动的未来为我订阅的付款 。 所以,当贝宝需要我送IPN更新,它总是会使用网址从我的首付款变盘?

感谢有这方面的启示。

Answer 1:

我发现从这个脚本http://codeseekah.com/这将使您能够设置多个贝宝IPN的听众。 它可以让你过滤的通知,这意味着你可以发送到根据您设定的条件不同的听众(非常有用!):

<?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';
    }
?>

只是定制你需要(与** S)的部分,它保存在一个文件中,例如所谓的“多贝宝ipn.php”,然后把它放在你的服务器之一。 然后在放入完整的URL,你刚才把它放在你的PayPal IPN URL设置(贝宝),例如HTTP://www.yourwebsite/paypal/multiple-paypal-ipn.php

这救了我BIG时间,所以希望能为别人!_g



Answer 2:

还有,你可以通过表单隐藏输入元素,这些名字提供三个URL:

  1. notify_url:这是这对此次收购的所有通知将要发送的URL。
  2. 返回:这是该用户将被成功返回上完成结帐的URL。
  3. cancel_return:这是该用户将在贝宝在结帐取消返回的URL。

所以,如果你使用notify_url的按钮,也可以是每个网站不同,每个按钮,甚至每个按钮呈现,如果你有这样的事情使用。

需要注意的是notify_url无论你在付款偏好设置替代。

关于(2),还可以提供一个rm如下变量:

0:用户通过GET 1返回:用户通过GET返回了没有付款的变量。 2.用户通过PUT返回与返回,也就是说作为什么发送到PayPal按钮回声所有的支付变量。

我不是在0和1之间的区别清楚。

见贝宝HTML变量 。

编辑在SO另一个答案,我现在找不到,贝宝人指出,可以在notify_url本身,它会回来,你送他们以同样的方式传递任意参数。



文章来源: Paypal multiple IPN setup