PayPal IPN的工作方式与预期不符

时间:2017-03-10 20:15:58

标签: php paypal paypal-ipn

我使用自己的书面下载软件通过paypal进行付费下载。这在过去几年没有任何问题,但最后几天,PayPal的IPN出现了一些问题。每个下载都有一个自己的表单,for for看起来像这样

<form action="https://www.paypal.com/cgi-bin/webscr" target="_top" method="post" target="_top" style="text-align: right">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="seller@example.com">
<input type="hidden" name="item_name" value="SOME PRODUCT Single License">
<input type="hidden" name="item_number" value="20001"> <input type="hidden" name="amount" value="69">
<input type="hidden" name="currency_code" value="EUR"><input type="hidden" name="button_subtype" value="services">
<input type="hidden" name="no_note" value="0">
<input type="hidden" name="notify_url" value="https://www.example.com/path1/path2/path3/?no_cache=1&tx_ppdownload_pi1%5Baction%5D=notify&tx_ppdownload_pi1%5Bcontroller%5D=Transaction">
<input type="hidden" name="image_url" value="http://www.example.com/files/logo.png">
<input type="hidden" name="return" value="https://www.example.com/path1/path2/path3/?no_cache=1&tx_ppdownload_pi1%5Baction%5D=return&tx_ppdownload_pi1%5Bcontroller%5D=Transaction">
<input type="hidden" name="cancel_return" value="https://www.example.com/path1/path2/path3/?no_cache=1&tx_ppdownload_pi1%5Baction%5D=cancel&tx_ppdownload_pi1%5Bcontroller%5D=Transaction">
<button class="btn btn-lg btn-success btn-block" style="border-radius: 0;">Purchase now <br /><small>secure via PayPal</small></button>

页面上有多个表单,其中包含不同的产品。几天以来,我遇到了这个问题:

Sandbox and live:购买后,有一个新的布局和一个新的链接返回商店。几天前,该链接称为我的返回URL,带有一些获取/发布数据。该数据包括txn_id。在通知网址上发送PayPal始终是交易,并且使用返回网址和txnid,我能够检查交易并显示一些信息。

取消网址也会被忽略。我可以点击按钮,然后我来到贝宝。几天前,我可以点击取消,然后回到cancel_return来显示一些信息。在大多数情况下,cancel_return现在是:

https://www.example.com/path1/path2/path3/?no_cache=1

没有其他参数。在10个案例中的7个案例中,附加参数不在paypal页面的取消链接中。

在10个案例中的7个案例中,notify_url永远不会被调用,也许错过了参数。

在10个案例中的10个案例中,return_url不包含txn_id,在10个案例中,有7个案例中的返回网址错过了我的表单中的参数。

第一笔不良付款(得到钱,没有正确的return_url,几天前没有通知notify_url)。在上个月,我有大约60个不同页面的交易,产品不同,都没有错误。

我现在不知道现在的错误。

1 个答案:

答案 0 :(得分:0)

截至2017年3月8日,PayPal的IPN处理问题开始出现。当事务传递包含“&amp;”的url(return,cancel_return和notify_url)时(例如在分隔多个值时),PayPal会在第一个'&amp;'之后剥离所有内容的网址。

此帖是第一个报告此问题的帖子,建议使用urlencode:QueryString values removed from the IPN endpoint by PayPal

我对自己的PayPal表单进行了一些修改,只替换了'&amp;'使用'&amp;'(编码版本),这似乎也有效。

此问题已报告给PayPal(可能现在很多人);希望他们能解决这个问题。另请注意,问题似乎是间歇性的,正如上面提到的链接帖子所提到的,它可能取决于您连接的PayPal服务器。