Php 贝宝10486号“;买方';"香港经验";关于重定向

Php 贝宝10486号“;买方';"香港经验";关于重定向,php,error-handling,paypal-sandbox,Php,Error Handling,Paypal Sandbox,我正在使用paypal沙箱测试我的支付流程 我试图对paypal返回的错误消息做出反应。在本例中,错误10486:“此交易无法完成。请将您的客户重定向到PayPal。” [编辑]在我的网页上,我显示了错误,用户有一个链接可以再次重定向到paypal。[/编辑] 我将用户重定向到paypal,如本文所述 我用的是同样的标记。 一切都很好,但用户没有收到任何关于出错原因以及他被重定向到paypal的消息 有人知道我是否做错了什么,或者在沙箱中显示错误的帐户设置中是否有需要更改的内容,或者沙箱有问题

我正在使用paypal沙箱测试我的支付流程

我试图对paypal返回的错误消息做出反应。在本例中,错误10486:“此交易无法完成。请将您的客户重定向到PayPal。”

[编辑]在我的网页上,我显示了错误,用户有一个链接可以再次重定向到paypal。[/编辑]

我将用户重定向到paypal,如本文所述

我用的是同样的标记。 一切都很好,但用户没有收到任何关于出错原因以及他被重定向到paypal的消息


有人知道我是否做错了什么,或者在沙箱中显示错误的帐户设置中是否有需要更改的内容,或者沙箱有问题,没有显示错误消息。

很抱歉,您遇到了问题。根据PayPal社区,此代码表示您的卡被您的银行拒绝;因此,你的第一步应该是与发卡机构取得联系。如果这还不能解决问题,打电话给PayPal客户支持就很简单了,下面是最快的方法。登录后,请转到此特殊页面,而不是拨打PayPal的800支持号码: www.paypal.com/us/cgi-bin/helpscr?cmd=\u contact-phone 要缩短看似没完没了的电话菜单,请对每个提示重复“代理”

当客户返回网站时,您是否立即执行“DoExpressCheckoutPayment”(这样客户就不必第三次确认,在他们假定已付款时)

如果是这样的话,我想PayPal正在检查浏览器的referer头。。。其中,如果您不向用户显示页面,浏览器的“引用者”标题仍将设置为paypal.com,这似乎会抑制错误消息的显示

到目前为止,我发现的解决方案是在你的网站上显示一个错误页面,并将链接(而不是重定向)返回到PayPal网站。。。正如你所知道的,这并不好,我认为这更像是PayPals方面的一个bug(所以通常是这样)


这根本不能回答这个问题。。。我也有同样的问题。文档一点也不“完整”,我在上面找到的答案都不符合今天的“简介”,谢谢你的回答。我发现,这只发生在沙箱里。当我在现场网站上试用时,一切都很好。啊,谢谢。。。我必须承认我只是签入了沙盒,因为我不想把它上传到现场(这是沙盒和现场完全不同的另一种情况)。很抱歉,我在我的问题中写道,我进行了重定向。是的,我进行了重定向,但在我的网页的错误页面上有一个链接。我已经在我的问题中更新了这个。好的,我认为同样的情况也适用于。。。但是只要它是“固定”的,那么我想我们就没有什么可以做的了(我已经向PayPal提出了错误,但一如既往,没有回应)。我参加聚会有点晚,但情况仍然如此。如果您直接返回paypal而不显示中间页面,则不会显示错误消息,用户将处于付款失败的永久循环中,并且没有给出任何原因。您应该(几乎)始终在标题('Location:')后放置一个exit()。。。仅仅因为浏览器被重定向,并不意味着PHP的其余部分没有被处理。。。另外,$\u GET中的任何内容都已为您反URL编码。。。因此,当您将其包含在url中时,需要再次对该值进行urlencode()(以防'token'变量包含诸如“&”之类的字符)。
if(isset($_GET['token'])){
   $token = $_GET['token']
   $url = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=$token";
   header('HTTP/1.1 301 Moved Permanently');
   header('Location: ' . $url);
}