我遇到了一些有点奇怪的事情我希望有更多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上没有记录这些内容? :(
答案 0 :(得分:1)
您正在使用自适应付款,因此您需要确保始终记住有3个参与方:应用程序本身,发件人和接收者。
很多时候,您的申请也可能充当发送方或接收方,但在其他情况下,它可能是3个完全独立的方。
IPN系统设置为向应用程序发送IPN,这是您在此处显示的第一个IPN,然后接收方帐户将获得IPN以及他们刚刚收到的付款,这是您的第二个IPN得到了。您可以根据您在其中获得的transaction_type / txn_type值相应地处理这些值。
这样,当您构建代表第三方用户的应用程序时,您可以在应用程序级别跟踪事物,接收者仍然可以获得自己的IPN来跟踪和处理自己的事务。你扮演的角色都是如此,所以你们两个都得到了。
如果其中一个失败,那么您必须在脚本中出现导致该特定类型失败的问题。您可以检查Web服务器日志以查看实际错误,然后解决它。
我喜欢做的另一件事是使用基本HTML表单在我自己的模拟器中复制IPN,并将操作设置为我的IPN URL。使用与失败的真实PayPal IPN相同的名称/值设置隐藏字段,然后将其加载到浏览器中并提交,以便在屏幕上查看结果。这在调试中很有用。
请记住,当您以这种方式测试时,数据不会来自PayPal,因此无法正确验证,但您可以按顺序获取所有内容,然后您就可以开始使用了。