我可以从localhost测试paypal api吗?

osh*_*nen 20 php paypal paypal-sandbox

更新1:

根据使用PayPal使用PHP的即时付款通知的教程,除非打开某些路由器端口,否则PayPal无法访问本地托管的网站.这是因为该网站IPN对所有PayPal API都是真的吗?

原始问题:

在我的笔记本电脑上,我有一个LAMP环境设置,当我在http://localhost上线之前使用创建网站.

对于一个新项目,我需要使用PayPal API.如果我将笔记本电脑连接到互联网,我是否可以使用localhost来测试PayPal API?或者我是否必须将我的网站上传到其他地方的LAMP主机?

你可能在想,这是一个多么愚蠢的问题,试试看它是否有效.我已经尝试了它并且没有用,我想在进入下一步之前排除这个问题.

Bra*_*rks 18

如果要调试IPN代码,则需要以某种方式公开提供服务器.这样,PayPal可以在您提交请求后稍后异步回发到您的服务器.通常我认为这是非常快的(在15秒内),但它可能会更长.

我发现公开提供开发服务器的一种简单方法是使用ngrokforwardhq.com.这使您可以像在正常情况下一样在IDE中继续开发,在调试模式下运行代码.当PayPal回发到您的端点时,您可以在IDE中调试它.这些服务为您提供了这些服务,因此在没有任何技术知识的情况下很容易做到.

根据我的理解,这是使用"反向SSH隧道"完成的,它允许您的网站通过已经公开可用的服务器进行代理来公开.请注意,在您执行此操作之前,您必须考虑到PayPal一旦公开就可以访问您的网站,但任何人都可以,但请首先考虑这一点.

此外,如果您有自己的面向公众的域并且不介意在使用SSH的终端中玩游戏,那么您可以执行类似此shell脚本的操作(从此要点复制)

# Usage: show <local-port> <subdomain>
function show() {
    DOMAIN=".yourdomain.com"
    REMOTE="$2$DOMAIN"
    ssh -tR 1080:127.0.0.1:$1 vps "sudo ssh -Nl \$USER -L $REMOTE:80:127.0.0.1:1080 localhost"
}
Run Code Online (Sandbox Code Playgroud)

要使其如上所述工作,您需要将以下内容放在〜/ .ssh/config文件中:

Host vps
    HostName <server address>
    User <server username>
Run Code Online (Sandbox Code Playgroud)

如果您不想(或不能)这样做,那么以下内容将起作用:

SERVERUSER="<server username>"
ssh -l $SERVERUSER -tR 1080:127.0.0.1:$1 <server address> "sudo ssh -Nl \$SERVERUSER -L $REMOTE:80:127.0.0.1:1080 localhost"
Run Code Online (Sandbox Code Playgroud)


Mau*_*cia 8

PayPal的官方开发者页面中描述了一个简单的解决方案:

developer.paypal.com - 本地IPN测试

诀窍在于使用以下内容编写一个小HTML文件:

<form target="_new" method="post" action="https://www.YourDomain.com/Path/YourIPNHandler.php">

<!-- start example variables: -->

<input type="hidden" name="SomePayPalVar" value="SomeValue1"/>
<input type="hidden" name="SomeOtherPPVar" value="SomeValue2"/>
    
<!-- /end example variables -->

<input type="submit"/>
	
</form>
Run Code Online (Sandbox Code Playgroud)

要获得真实的结果,您需要复制PayPal发送的所有IPN变量.这些真实变量可以在IPN历史记录下的PayPal帐户中找到:

IPN历史

您需要单击相关的消息ID,然后复制"IPN消息"内容(它将类似于mc_gross = 27.00&invoice-Test-1&protection_eligibility = Ineligible&...),必须将其转换为HTML隐藏输入字段.例如:

<input type="hidden" name="mc_gross" value="27.00"/>
<input type="hidden" name="invoice" value="Test-1"/>
<input type="hidden" name="protection_eligibility" value="Ineligible"/>

....
Run Code Online (Sandbox Code Playgroud)

设置所有这些变量并更改操作URL后,您可以使用浏览器打开该文件,然后提交此表单.


Mih*_*tiu 6

它应该工作。去年我已经与贝宝进行了支付集成,它在本地主机上运行没有问题。

您是否使用贝宝沙箱进行开发? https://developer.paypal.com/

  • 是的,因为在 paypal 沙箱(例如)中,您必须指定一个 IPN 处理程序 URL。Paypal 正在使用此 URL 调用您网站上处理 IPN 调用的 php 文件。所以你不能进入那个 url http://localhost/yourwebsite/ipn_handler.php。您将需要类似 http://your_computer_public_ip/yourwebsite/ipn_handler.php 的内容 (6认同)

Mar*_*yen 5

如果http:// localhost未验证,请使用http://127.0.0.1

  • 为什么这没有被标记是我无法理解的。猜猜人们更喜欢无用的、过于复杂的变通方法,而不是简单的方法。谢谢,我知道我曾经有过这样的经历,但忘记尝试了。 (2认同)