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秒内),但它可能会更长.
我发现公开提供开发服务器的一种简单方法是使用ngrok或forwardhq.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)
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帐户中找到:
您需要单击相关的消息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后,您可以使用浏览器打开该文件,然后提交此表单.
它应该工作。去年我已经与贝宝进行了支付集成,它在本地主机上运行没有问题。
您是否使用贝宝沙箱进行开发? https://developer.paypal.com/
如果http:// localhost未验证,请使用http://127.0.0.1