贝宝沙箱 - 通知URL问题



我正在开发在线商店应用程序,并且在将订单信息收到通知URL方面很难。在此文档之后,我创建了我的贝宝表格:

<form method="post" action="https://www.sandbox.paypal.com/cgi-bin/webscr">
  <fieldset>
    <input id="buy" name="submit" type="submit" class="btn btn-primary" value="Buy" id="">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="business" value="test-facilitator@gmail.com">
    <input type="hidden" name="item_name" value="My online store">
    <input type="hidden" name="currency_code" value="EUR">
    <input type="hidden" name="amount" data-bind="value: amount"> 
    <input type="hidden" name="notify_url" value="myurl/notify">
    <input type="hidden" name="return" value="myurl/return">
    <input type="hidden" name="cancel_return" value="myurl/cancel">
 </fieldset>
</form>

其中" myurl"类似于 http://78.83.22.112。我正在本地Apache服务器上运行我的应用程序。返回和取消URL正在按预期工作,但是PayPal似乎无法调用我的Notify URL。我正在使用Laravel 4开发我的应用程序,所以这是我在Routes.php中管理通知URL的方式:

Route::post('/notify', 'CartController@notify');

这是我的通知方法:

public function notify() {
    Log::info("Notify hit");
}

在IPN模拟器中测试了我的通知URL,结果为

我们很抱歉,我们无法连接到此URL。请确保它已正确输入。

我在做什么错?为什么沙箱不能称我的通知URL?

这听起来像是防火墙问题。请记住,取消和返回URL是PayPal发送到URL的地方。我一直定期针对内部非路由网址进行测试。PayPal只是将您的浏览器发送到您告诉它的地方,并且没有任何人可以达到的验证。

IPN是另一个故事。PayPal的服务器必须能够连接到您指定的URL。在这种情况下,您需要让端口80(HTTP)打开,以便外部用户可以连接。微软有有关如何打开防火墙端口的说明(Windows 7,但在8.1等相似)。

因此,在3天之后,战斗终于解决了这个问题。我没有在浏览器中键入" Localhost",而是输入了我的外部IP(发送给PayPal的IP)来测试我的应用程序。我的通知URL被称为成功。不知道为什么,但是这解决了问题。

相关内容

  • 没有找到相关文章

最新更新