PayPal自动返回不会发回任何POST数据

时间:2011-12-28 21:24:22

标签: php paypal return paypal-ipn

我对这篇文章有类似的问题

Setting PayPal return URL and making it auto return?

然而,那里的解决方案没有用。我们设置了IPN并传回POST变量(访问者点击后可以下载购买的PDF文件),但后来我试图摆脱Paypal订单确认页面

  

您刚刚完成了付款。此付款的交易ID   是:XXXXXXXXXXXXX。

并在网站付款偏好设置中启用“自动退货”,指定网址http://www.educted.ca/payment_complete.php,POST变量现在不会传递回payment_complete.php - 它显示为空白。一旦禁用“自动返回”,POST变量就会正确显示,并且可以下载购买的产品。当然,我正在使用Paypal Sandbox帐户。

<input type="hidden" name="return" value="<?php echo LIVE_SITE;>payment_complete.php">
<input type="hidden" name="cancel_return" value="<?php echo LIVE_SITE; ?>catalog.php">
<input type="hidden" name="notify_url" value="<?php echo LIVE_SITE; ?>ipn.php">
<input type="hidden" name="rm" value="2">

有什么想法吗?

4 个答案:

答案 0 :(得分:14)

如果启用“自动返回”,则无论rm设置为何值,都将始终通过GET返回值。

如果您想在买家完成交易后立即进行文件传递,请查看PayPal付款数据传输。启用后,PDT会在您的返回网址中添加tx GET var;通过在https://www.paypal.com/cgi-bin/webscr?cmd=_notify-synch&tx=value-for-tx-here&at=value-for-your-paypal-account-authentication-token致电PayPal,您将能够提取有关交易的额外数据,并立即检查其是否有效。
另请参阅https://www.paypal.com/pdt/

IPN应保留用于后端处理,因为它可能会有很长的延迟 另一方面,PDT让你从PayPal中提取信息,并且就是这样。

答案 1 :(得分:4)

您仍然可以将自动返回设置为开,但请确保禁用PDT,并且您将通过POST将所有事务变量发送到您的返回URL(如果您在请求中将rm参数设置为2) ,正如你所说的那样)。

出于某种原因,启用PDT将忽略rm参数并强制使用GET方法。

答案 2 :(得分:1)

在您的特定情况下,由于代码中的错误,它显示为空白:

<?php echo LIVE_SITE;>

这不会解析为有效的PHP - 它会导致致命的错误。如果尚未输出任何信息并且错误报告已关闭,则它将是一个空白页。

答案 3 :(得分:1)

  

您仍然可以将自动返回设置为开,但请确保禁用PDT,并且您将通过POST将所有事务变量发送到您的返回URL(如果您在请求中将rm参数设置为2) ,正如你所说的那样)。

这是正确的答案!如果要获取POST数据,则不得启用使用自动响应发送付款数据。

但是,在这种情况下,您必须使用https网站,否则客户会在重定向之前收到警告!