Я совершенно новичок в Drupal. Я создал форму в Drupal, используя чистый HTML, когда пользователь нажимает на оплату, я вызываю файл PHP, просто чтобы получить некоторую информацию о базе данных, впоследствии этот PHP перенаправляет на другой PHP, который объединяет платеж Paypal.
По какой-то причине PHP-платеж PayPal не перенаправляется на PayPal, когда он вызывается из-под Drupal. Мои слои следующие:
https://mysite.com/test/?q=node/11 —> Call SavedatatoDB.php -> Call PayPalpreparepayment.php -> перенаправить на PayPal
Если я вызываю PayPal платеж PHP из браузера прямо так:
https://mysite.com/test/paypal/restapi/sample/payments/PaymentPP.php?samount=0.005&Sprice = 123.45&описание = продукты&sqty = 100
оно работает! Я думал, что проблема может быть выводом перед header (), но это не так.
Я написал строку для записи в файл журнала прямо перед перенаправлением следующим образом:
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$log = "{$today} ready to redirect {$sale_description}, {$sale_amount}, {$sale_quantity}, {$sale_price}\n";
//Save string to log, use FILE_APPEND to append.
file_put_contents('./log_'.date("j.n.Y").'.txt', $log, FILE_APPEND);
header("Location: $redirectUrl");
exit;
И журнал показывает, что я так далеко, но без перенаправления! но опять же, если я вызываю этот PHP напрямую из браузера, я вижу, что Paypal просит меня авторизоваться.
Поэтому, когда я работаю под Drupal UI, мне интересно, может ли Drupal каким-то образом блокировать перенаправление.
Любые идеи, пожалуйста? Спасибо за вашу помощь.
Я получил ответ от Drupal.org, который имеет смысл.
вот ссылка: https://www.drupal.org/node/2365503#comment-9295613
Jaypan прокомментировал около 11 часов назад
Проблема в том, что ваше перенаправление находится на стороне сервера, но вы
вызывая его с помощью JavaScript. Если триггер находится в вашем JS, то
Перенаправление также должно происходить в JS. Если триггер не-JS
(отправляет на сервер), тогда ваше перенаправление может быть на стороне сервера.
Других решений пока нет …