paypal IPN发送两次不同的两次

时间:2014-06-08 21:14:23

标签: php paypal paypal-ipn

我遇到了一些有点奇怪的事情我希望有更多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' 它们为什么不同?
为什么Paypal上没有记录这些内容? :(

1 个答案:

答案 0 :(得分:1)

您正在使用自适应付款,因此您需要确保始终记住有3个参与方:应用程序本身,发件人和接收者。

很多时候,您的申请也可能充当发送方或接收方,但在其他情况下,它可能是3个完全独立的方。

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

这样,当您构建代表第三方用户的应用程序时,您可以在应用程序级别跟踪事物,接收者仍然可以获得自己的IPN来跟踪和处理自己的事务。你扮演的角色都是如此,所以你们两个都得到了。

如果其中一个失败,那么您必须在脚本中出现导致该特定类型失败的问题。您可以检查Web服务器日志以查看实际错误,然后解决它。

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

请记住,当您以这种方式测试时,数据不会来自PayPal,因此无法正确验证,但您可以按顺序获取所有内容,然后您就可以开始使用了。