设置PayPal返回URL为localhost


Setting PayPal return URL to localhost

我正在尝试整合Paypal,我在这个过程中使用沙盒。在下面的问题中,我遵循公认答案的步骤。设置PayPal返回URL并使其自动返回?

但是当我尝试输入URL时,Paypal返回以下错误:

We were unable to validate the URL you have entered. Please check your entry and try again.

我要设置的URL是http://localhost:8888/paypal/success.php

我试着用下面的形式发送返回url。

<input type="hidden" name="return" value="http://localhost:8888/paypal/success.php">

两种方法都不适合我。

完整形式
<form method="post" action="https://www.sandbox.paypal.com/cgi-bin/webscr">
<!-- Identify your business so that you can collect the payments. -->
<input type="hidden" value="dasun_1358759028_biz@archmage.lk" name="business">
<!-- Specify a Buy Now button. -->
<input type="hidden" value="_xclick" name="cmd">
<!-- Specify details about the item that buyers will purchase. -->
<input type="hidden" value="AM Test Item" name="item_name">
<input type="hidden" value="22.16" name="amount">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" value="item_number" name="item_number">
<input type="hidden" name="return" value="http://localhost:8888/paypal/success.php">
<!-- Display the payment button. -->
<input type="image" name="submit" border="0" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynow_LG.gif" alt="PayPal - The safer, easier way to pay online">
<img alt="" border="0" width="1" height="1" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" >
</form> 

如何在开发pc上进行测试?

如果您尝试指定您的IP地址而不是本地主机怎么办?

本地主机无法在远程机器上解析。只有你的本地DNS知道localhost语句,并且是127.0.0.1。

http://your-IP-address:8888/paypal/success.php

您可以为您的网站创建一些URL别名,并将其添加到您的hosts文件(http://en.wikipedia.org/wiki/Hosts_(file))。然后将该URL作为您的返回URL传递给paypal。它们只是在浏览器中触发重定向到该位置,此时主机文件将把它解析到本地开发服务器。

例如

:在hosts文件中添加一行,如127.0.0.1 local.mywebdomain.com

然后在你的PayPal按钮,传递相同的URL为返回参数(例如<input type="hidden" name="return" value="http://local.mywebdomain.com/success.php">)

值得注意的是,当使用Facebook授权API时(可能还有其他API,如果不是全部),您可以将https://localhost:xxxx/my-redirect作为重定向URL,它将工作。

因此,这里的答案基本上说&;duh.....paypal无法在你的pc上访问本地主机有点苛刻,有点离谱。

远程API不需要知道localhost在他们这端是如何解析的,但是在客户端重定向的上下文中,他们不关心,并假设客户端将localhost解析到开发人员想要的位置。

那就是说,我会诚实....当我第一次使用Facebook API时,我对localhost是如何工作的感到有点困惑。但正是在这个过程中,我对这些类型的重定向是如何发生的,以及它们是客户端有了更全面的了解。

这很有意义,因为在大多数情况下,提供身份验证的API,或者在这种情况下支付,将把客户端重定向到带有某种类型的令牌的url,以证明他们的身份/支付。

是的,paypal也有webhook,但那是另一回事。Webhooks是指你正在使用的第三方服务的后端会向你的后端发送POST,给你一些交易的官方结果。

当我开发这种性质的东西时,我更重视这些服务器到服务器的通信,因为我可以肯定,如果paypal的后端告诉我发生了什么,那么它实际上确实发生了,不可能是客户端黑客。

没有一个使用webhook的人会尝试把'localhost'作为webhook URL,因为很明显,这没有意义,也不能用于服务器到服务器的通信。

但是当一个服务在一个事务之后重定向一个web浏览器客户端时,一些开发人员会认为localhost可以工作,因为它应该是一个客户端重定向,而不是一个webhook。

当一个不熟悉任何给定API的开发人员在客户端重定向中使用"localhost"来将用户带回商家的网站时,这并不是一个"愚蠢的"行为。有问题吗

你不能使用localhost,这不是一个有效的URL, PayPal无法访问你的本地环境。

最好的方法是上传表单并返回脚本到web,如果你没有的话,有很多免费的PHP web主机。