PayPal notify_url经过广泛的沙盒测试后不会被调用



我正在为慈善棋盘游戏活动设计一个网站,人们可以在其中现场观看活动,并可以向慈善机构捐款(儿童游戏),以迫使玩家连续玩 60 小时。 由于捐款将直接用于"儿童游戏",因此我需要使用notify_url设置来传递我的 IPN 通知 URL;我们之前已经做过两次这个马拉松,没有任何问题,但我们最近把它移植到了PHP。

现在,在过去的几个月里,我一直在使用沙盒对网站进行了广泛的测试,一切都运行良好。 距离马拉松比赛只有几周了,所以我切换到实际的PayPal系统,发起了测试捐赠,现在我遇到了一个问题:由于某种原因,PayPal根本没有达到notify_url。 我已经通过暂时切换回沙盒来验证 URL,一切正常。 我还在侦听器代码中添加了一些调用来error_log,以查看它是否只是在某个地方被代码捕获,但发现它根本没有被击中。

如果有人能在这里就我能做什么提供任何建议,我将不胜感激。 显然,我有点时间紧迫,所以如果您能尽快回复,我将不胜感激。

编辑:这是相关代码:

if (isset($_GET['paypalipn'])) {
  // tell PHP to log errors to ipn_errors.log in this directory
  ini_set('log_errors', true);
  ini_set('error_log', dirname(__FILE__).'/ipn_errors.log');
  // intantiate the IPN listener
  $listener = new IpnListener();
  // tell the IPN listener to use the PayPal test sandbox
  $listener->use_sandbox = false;
  error_log("here");
  // try to process the IPN POST
  try {
    $listener->requirePostMethod();
    $verified = $listener->processIpn();
  } catch (Exception $e) {
    error_log($e->getMessage());
    exit(0);
  }
  error_log("here2");
  // Process the IPN
  if ($verified) {
      error_log("here3");
      $errmsg = '';   // stores errors from fraud checks
      // Split the custom variable
      $split_custom = explode("&", $_POST['custom']);
      $custom_array = array();
      for ($i = 0; $i<count($split_custom); $i++) {
        $current_set = explode("=", $split_custom[$i]);
        $custom_array[$current_set[0]] = $current_set[1];
      } 
      error_log("here4");
      if (!isset($custom_array['game'])) {
        $custom_array['game'] = 0;
      }
      if (!isset($custom_array['player'])) {
        $custom_array['player'] = 0;
      }
      error_log("here5");
      if (!empty($errmsg)) {
          // manually investigate errors from the fraud checking
          $body = "IPN failed fraud checks: n$errmsgnn";
          $body .= $listener->getTextReport();
          mail('jafawcett@gmail.com', 'IPN Fraud Warning', $body);
      } else {
          mail('jafawcett@gmail.com', 'Successful IPN', $listener->getTextReport());
      }
      error_log("donor_un: ".$custom_array['donor_un']);
      process_donation($_POST['mc_gross'], $custom_array['player'], $custom_array['game'],     $custom_array['donor_name'], $_POST['payer_email'], $custom_array['donor_un']);
  } else {
      // manually investigate the invalid IPN
      mail('jafawcett@gmail.com', 'Invalid IPN', $listener->getTextReport());
  }
}

对于 ipn 侦听器类,我使用的是 Micah Carrick 创建的类,可在此处获得:https://github.com/Quixotix/PHP-PayPal-IPN

我向PayPal的直接联系人询问了这个问题,并得到了以下回复...

关于IPN问题,我们昨晚停电了。它是固定的 大约在凌晨 1-2 点,IPN 延迟,因为我们有一个备份队列 大约250万个IPN没有发出。我们目前在 通过这些 IPN 工作。我很快就会期待正常的功能。

你也可以在Twitter上看到很多人在谈论这个问题。

我们遇到了同样的问题。

几个月来它运行良好,脚本保持不变。PayPal IPN 也在PayPal帐户中启用,我们的 IPN 今天早上刚刚停止。

PayPal可能有问题,我们仍在努力解决。

相关内容

  • 没有找到相关文章

最新更新