Paypal Sandbox没有返回任何变量

时间:2017-11-01 07:11:21

标签: php paypal paypal-sandbox paypal-ipn

我的代码如下:

    $paypal_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr'; 
    $paypal_id = 'payments@business.com';

    $str .= "<form method='post' action='".$paypal_url."'>";
    $str .= "<input type='hidden' name='business' value='".$paypal_id."'>";
    $str .= "<input type='hidden' name='cmd' value='_xclick'>";
    $str .= "<input type='hidden' name='item_name' value='Room'>";
    $str .= "<input type='hidden' name='item_number' value='".getRoom($id)."'>";
    $str .= "<input type='hidden' name='currency_code' value='USD'>";
    $str .= "<input type='hidden' name='no_shipping' value='1'>";
    $str .= "<input type='hidden' name='amount' id='paypal_cost' value='".getBal($id)."'>";
    $str .= "<input name='notify_url' value='http://localhost/tropicana/guests/notify.php' type='hidden'>";
    $str .= "<input type='hidden' name='cancel_return' value='http://localhost/tropicana/guests/payments.php'>";
    $str .= "<input type='hidden' name='return' value='http://localhost/tropicana/guests/notify.php'>";
    $str .= "<button type='submit' name='submit' class='form-control btn-danger'>Pay $".getBal($id)." with <i>PayPal</i>";

    $str .= "</form>";

但是在付款成功后,我的返回脚本notify.php没有收到任何变量。

当我尝试print_r() $_REQUEST时,它会返回一个空数组。

1 个答案:

答案 0 :(得分:1)

TL; DR:您的notify_url不能 localhost ,因为PayPal会向您发送IPN消息(来自外部),这意味着您的开发机器必须暴露于互联网。

展示计算机的一种方法是使用ngrok之类的工具,或类似serveo之类的工具。 完成此操作后,将 notify_url 设置为该公共URL以接收IPN消息。

但是,请注意:

  • 如果您使用免费的ngrok选项,您的随机子域名(例如13bf0ee2.ngrok.com)将在每次ngrok重新启动时更改
  • 如果您测试订阅,之前使用ngrok notify_url创建的计划将不再有效,您将不会收到重复的IPN消息。
  • 因为PayPal沙箱是垃圾邮件的一大块,你可能根本没有收到的IPN邮件只是因为它们完全破坏了服务。

当然,有时为什么事情会在昨天而不是今天起作用。最好的选择是抵制他们,继续与那些在这个领域具有实际能力的人一起生活和事业。