我对这篇文章有类似的问题
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">
有什么想法吗?
答案 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网站,否则客户会在重定向之前收到警告!