【问题标题】:What are possible causes for Paypal Sandbox IPN url not to be executed?Paypal Sandbox IPN url 不被执行的可能原因是什么?
【发布时间】:2013-09-02 12:19:28
【问题描述】:

我正在尝试使用沙盒实现贝宝支付,但我似乎无法理解为什么它无法调用/到达/执行我的 IPN 网址。

我一直在论坛上阅读并尝试了几种解决方案,但似乎没有任何东西可以帮助我解决我的问题。

我得到了这个简单的表单代码:

<form action=" https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" name="form2" id="form2">
    <input name="first_name" required="" size="40" type="text">
    <input name="last_name" required="" size="40" type="text">
    <input name="email" size="40" type="email">
    <input name="item_name" size="40" type="text" value="Test Item">
    <input name="amount" type="hidden" value="0.01">
    <input name="cmd" type="hidden" value="_xclick">
    <input name="business" type="hidden" value="test-seller8@test.co.uk">
    <input name="notify_url" type="hidden" value="http://myurl.com/ipn.php">
    <input name="return" type="hidden" value="http://myurl.com/result.php">
    <input name="currency_code" type="hidden" value="GBP">
    <input name="no_shipping" type="hidden" value="1">
    <input type="submit" value="Pay now!">
</form>

我想我的表单没问题,我可以转到贝宝付款并使用沙盒个人帐户类型付款,它会提供一个链接以重定向到我的退货页面,当我点击它时,它会转到正确的页面。

问题是我的 IPN 脚本没有执行。这是我的 IPN 中的代码。

if(strcmp($_REQUEST['payment_status'],'Completed') == 0)
{
    $fd = fopen(dirname(__FILE__).'/results/payment-result.txt', 'wb');

    //dump request to file
    fwrite($fd, "### $_REQUEST = ### \n");
    fwrite($fd, print_r($_REQUEST, true));  
}
else 
{
    echo 'No direct access';    
}

我尝试删除 if 语句以检查付款状态是否已完成,而不仅仅是检查脚本是否已执行但没有,它甚至没有创建 .txt 文件。我还尝试通过直接访问它来检查我的 IPN 代码中是否存在错误,但这似乎很好,它会创建文件并记录请求变量。

我也尝试使用 IPN 模拟器,但每当我发送它时,它就像永远加载一样,然后给出错误:

IPN Delivery Failed:I/O error: Connection timed out; nested exception is java.net.ConnectException: Connection timed out

这对我来说真的没有意义。

现在我很困惑我错过了哪一部分,或者是什么导致了我的 IPN 正在执行的问题。

【问题讨论】:

  • 查看您从 IPN 模拟器获得的错误 - 似乎您的 IPN 网址无法从 Internet 访问。您可以仔细检查您的 IPN 网址吗?如果您可以在此处发布 - 我可以帮助验证我是否可以访问它。
  • 嗨@Praveen,有什么方法可以让我自己验证吗?
  • 尝试从您的浏览器加载它,看看您是否可以访问您的服务器。确保您没有通过 vpn 或其他方式从同一台机器或同一网络中加载它。
  • @Praveen 我可以直接从浏览器访问它。在我看来,这似乎与我们的服务器有关,它不允许 IPN 调用访问脚本。服务器中是否有必须设置的东西才能让 IPN 调用到达它?
  • 我已将网址发送到您的电子邮件@Praveen。

标签: php paypal paypal-sandbox paypal-ipn


【解决方案1】:

您应该确保在您的 PayPal 设置中打开了 IPN:

  • 登录您的 PayPal 账户,然后转到个人资料 → 个人资料和设置 → 销售偏好 → 即时付款通知偏好:(或者 click here 直接进入该页面,请确保您在点击之前已登录您的 PayPal 账户链接)
  • 点击 PayPal 网站上的开启 IPN。
  • 然后将提示您输入通知 URL,它应该是任何 URL - 无论如何它只会被您的 notify_url 参数替换
  • 保存您的设置

如果您已经这样做了,那么您需要确保您的通知 URL 可以通过外部世界访问,使用 https://www.hidemyass.com/proxy 之类的东西来检查您的网站是否确实可用。

检查您的 PayPal 帐户上的 IPN history,您将看到 IPN 发送到的确切 URL 和状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-29
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 2018-10-31
    • 2013-02-16
    相关资源
    最近更新 更多