我可以测试PayPal本地主机的api吗?

2022-08-30 18:26:14

更新 1:

根据本教程将PayPal的即时付款通知与PHP配合使用,除非打开某些路由器端口,否则PayPal无法访问本地托管的网站。这是因为该网站是关于还是适用于所有PayPal API?IPN

原始问题:

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

对于新项目,我需要使用PayPal API。如果我将笔记本电脑连接到互联网,我是否能够使用本地主机测试PayPal API?还是我必须将我的网站上传到其他地方的LAMP主机?

你可能会想,这是一个多么愚蠢的问题,只是尝试一下,看看它是否有效。我已经尝试过了,但它不起作用,我想在进入下一步之前排除这个问题。


答案 1

如果要调试 IPN 代码,则需要以某种方式公开使用服务器。因此PayPal提交请求后,可以在以后异步回发到服务器。通常我认为这很快(在15秒内),但它可能会更长。

我发现公开开发服务器的一种简单方法是使用此列表中的隧道解决方案,例如boringproxy。这允许您像往常一样继续在 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"
}

要使其按上述方式工作,您需要将以下内容放在 ~/.ssh/config 文件中:

Host vps
    HostName <server address>
    User <server username>

如果您不想(或不能)执行此操作,则以下方法将起作用:

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"

答案 2

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>

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

国际网络历史

您需要单击相对消息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"/>

....

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


推荐