paypal IPN发送两个不同的两次


paypal IPN sends two different twice

我遇到了一些奇怪的事情,我希望有更有Paypal经验的人能解释一下,特别是IPN功能。

我的IPN监听器似乎收到了两个非常不同的点击。第一个总是不及格,第二个通过。

现在我知道Paypal倾向于发送重复,但我注意到的是收到两个非常不同的$_POST数组。

回复如下:

    [2014-06-08 23:51:19] 
    RAW POST DATA : Array
    (
            [transaction] => Array
            (
                    [0] => ILS 20.00
            )
            [payment_request_date] => Sun Jun 08 13:52:12 PDT 2014
            [return_url] => MY_URL
            [fees_payer] => EACHRECEIVER
            [ipn_notification_url] => MY_URL
            [sender_email] => patrick.testbuyer@gmail.com //fake email
            [verify_sign] => ANp5TpLat3.2ylx.cECtVZ..5HejAsVcs05tdVC7RldmeYNJ91SKaqFJ
            [test_ipn] => 1
            [cancel_url] => MY_URL
            [pay_key] => AP-04B74091M7083584A
            [action_type] => PAY
            [transaction_type] => Adaptive Payment PAY
            [tracking_id] => 13 // This is a number I passed, But it doesn't exist in the 2nd POST
            [status] => COMPLETED
            [log_default_shipping_address_in_transaction] => false
            [charset] => windows-1252
            [notify_version] => UNVERSIONED
            [reverse_all_parallel_payments_on_error] => false
    )
    [2014-06-08 23:51:19]
    RAW POST DATA :  Array
    (
            [transaction_subject] =>
            [payment_date] => 13:52:28 Jun 08, 2014 PDT
            [txn_type] => web_accept
            [last_name] => test
            [residence_country] => US
            [item_name] =>
            ....
            (this continues for quite a bit more)
            ....
            [payment_fee] =>
            [mc_fee] => 1.78
            [mc_gross] => 20.00
            [custom] =>
            [charset] => windows-1252
            [notify_version] => 3.8
            [ipn_track_id] => f93ce8bdd4382
    )

我的问题
第一个具有多源tracking_id的IPN失败,第二个IPN被验证,但是一旦IPN被验证,我就不再有权访问tracking_id

我的问题为什么paypal发送两个不同的IPN
为什么它们不同?
为什么这些都没有记录在贝宝上?(

您正在使用Adaptive Payments,因此您需要确保始终记住有三个方面在起作用:应用程序本身、发送方和接收方。

很多时候,你的应用程序也可以作为发送方或接收方,但在其他情况下,它可能是3个完全独立的方。

IPN系统设置为向应用程序发送IPN,这是您在这里展示的第一个IPN,然后接收方帐户也会收到他们刚刚收到的付款的IPN,这是您收到的第二个IPN。您可以根据在其中获得的transaction_type/txn_type值相应地处理这些值。

这样,当你构建代表第三方用户工作的应用程序时,你可以在应用程序级别跟踪事情,接收器仍然可以获得自己的IPN来跟踪和处理自己的事务。你同时扮演两个角色,所以你得到了两个。

如果其中一个失败,那么一定是脚本中有问题导致该特定类型失败。你可以检查你的web服务器日志,看看实际的错误是什么,然后解决它。

我喜欢做的另一件事是在我自己的模拟器中使用一个基本的HTML表单复制IPN,并将操作设置为我的IPN URL。设置隐藏字段与您从失败的真实PayPal IPN中获得的名称/值相同,然后在浏览器中加载并提交,以便您可以在屏幕上看到结果。这在调试中很有用。

请记住,当你以这种方式测试时,数据不是来自PayPal,所以它不会正确验证,但你可以把一切都安排妥当,然后你就可以准备好了。