Почему массив сведений о транзакции Paypal возвращается пустым?

Я создал тестовую учетную запись покупателя и продавца в песочнице Paypal. Я также создал кнопку Paypal.

Кнопка Paypal:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
  <input type="hidden" name="cmd" value="_s-xclick">
  <input type="hidden" name="hosted_button_id" value="6M75NVDV8ZHR8">
  <input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
  <img alt="" border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

Я включил IPN и установил там URL-адрес уведомления.
При создании кнопки Paypal я вставляю URL-адрес своего сайта для успешной транзакции.
Успешная транзакция и уведомление IPN имеют один и тот же URL-адрес.

Вот скрипт PHP для указанного URL:

<?php  
  // read the post from PayPal system and add 'cmd'  
  $req = 'cmd=_notify-validate';  
  print_r($_POST);

  foreach ($_POST as $key => $value) {  
    echo "loop";
    echo $value = urlencode(stripslashes($value));  
    echo $req .= "&$key=$value";  
  }

  // post back to PayPal system to validate  
  $header = "POST /cgi-bin/webscr HTTP/1.0\r\n";  
  $header.= "Content-Type: application/x-www-form-urlencoded\r\n";  
  $header.= "Content-Length: " . strlen($req) . "\r\n\r\n";  
  
  $fp = fsockopen('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30); 
  
  if (!$fp) {  
    // HTTP ERROR  
  } else {  
    fputs ($fp, $header . $req);  

    while (!feof($fp)) {  
      $res = fgets ($fp, 1024);  
      if (strcmp ($res, "VERIFIED") == 0) {  
        echo " PAYMENT VALIDATED & VERIFIED! "; 
      }
      else if (strcmp ($res, "INVALID") == 0) {
        echo " PAYMENT INVALID & INVESTIGATE MANUALY!  ";
      }  
    }  
    fclose ($fp);  
  }
?>

Функция print_r печатает только Array(), а в цикле foreach ничего не отображается.

На странице отображается только PAYMENT INVALID & INVESTIGATE MANUALLY!.

В чем здесь проблема?
Потому что я хочу вставить некоторые данные об успешной транзакции.


ОБНОВЛЕНО

Вот мой массив сообщений:

Array
(
)
DoDirectPayment failed: Array
(
    [TIMESTAMP] => 2012%2d05%2d03T12%3a54%3a08Z
    [CORRELATIONID] => 51176eef6a5
    [ACK] => Failure
    [VERSION] => 51%2e0
    [BUILD] => 2860716
    [L_ERRORCODE0] => 10527
    [L_ERRORCODE1] => 10563
    [L_ERRORCODE2] => 10562
    [L_ERRORCODE3] => 81234
    [L_SHORTMESSAGE0] => Invalid%20Data
    [L_SHORTMESSAGE1] => Invalid%20Data
    [L_SHORTMESSAGE2] => Invalid%20Data
    [L_SHORTMESSAGE3] => Invalid%20Parameter
    [L_LONGMESSAGE0] => This%20transaction%20cannot%20be%20processed%2e%20Please%20enter%20a%20valid%20credit%20card%20number%20and%20type%2e
    [L_LONGMESSAGE1] => This%20transaction%20cannot%20be%20processed%2e%20Please%20enter%20a%20valid%20credit%20card%20expiration%20month%2e
    [L_LONGMESSAGE2] => This%20transaction%20cannot%20be%20processed%2e%20Please%20enter%20a%20valid%20credit%20card%20expiration%20year%2e
    [L_LONGMESSAGE3] => ExpDate%20%3a%20Invalid%20Parameter
    [L_SEVERITYCODE0] => Error
    [L_SEVERITYCODE1] => Error
    [L_SEVERITYCODE2] => Error
    [L_SEVERITYCODE3] => Error
)

Я изменил код ipn.php и теперь получаю эту ошибку: Неверный номер кредитной карты.

Я создал учетную запись покупателя, используя предварительно настроенную учетную запись, и она случайным образом генерирует номер кредитной карты.

Теперь, когда я пошел, чтобы добавить / изменить кредитную карту, я не могу редактировать номер карты, только адрес и дату истечения срока действия.

А также не удается добавить новую кредитную карту, вместо этого ошибка этой кредитной карты назначается другому сообщению учетной записи Paypal.


person Ahmad    schedule 03.05.2012    source источник
comment
Вы проверили это на локальном хосте?   -  person nithi    schedule 03.05.2012
comment
нет, я проверил это на живом URL.   -  person Ahmad    schedule 03.05.2012
comment
также установите URL-адрес уведомления в скрытой переменной. Затем напишите ответ PayPal в файл .txt, чтобы проверить его.   -  person nithi    schedule 03.05.2012
comment
Я изменил код ipn.php и теперь получаю эту ошибку Invalid credit card number. Я создал учетную запись покупателя, используя предварительно настроенную, и она генерирует номер кредитной карты случайным образом. Теперь, когда я пошел, чтобы добавить / изменить кредитную карту, я не могу редактировать номер карты, только адрес и дату истечения срока действия. А также не могу добавить новую кредитную карту вместо сообщения об ошибке This credit card is assigned to another paypal account.   -  person Ahmad    schedule 03.05.2012


Ответы (1)


print_r повторяет свой вывод в сценарии PayPal. Вы, вероятно, хотите, чтобы он был зарегистрирован в файле, чтобы вы могли просмотреть его позже.

person Vasisualiy    schedule 03.05.2012
comment
как я это сделаю? и почему он возвращает недействительный платеж? - person Ahmad; 03.05.2012
comment
file_put_contents(log.txt, print_r($_POST,true)); - person Vasisualiy; 03.05.2012
comment
пока пробовал ваш код, когда я открываю файл log.txt, у него есть только Array(). - person Ahmad; 03.05.2012