Перенаправление на удаленный URL с помощью метода POST, полей POST и информации заголовка в PHP - PullRequest
0 голосов
/ 05 ноября 2019

Я только что столкнулся с ситуацией, когда я хочу поместить некоторые данные в удаленный URL. Помимо размещения данных с некоторой информацией заголовка, я также хочу, чтобы пользователь был перенаправлен на этот URL-адрес POST .

Позвольте мне объяснить здесь сценарий, я интегрирую третийучастник платежного шлюза в моем веб-приложении. Я использую Laravel . После цепочки вызовов API приложение отправляет платежные реквизиты в API. Результат API имеет сторонний URL (соответствующего банка), на который мне нужно взять пользователя для завершения процесса аутентификации. У меня есть пара данных и информация заголовка, чтобы взять с собой. Я пробовал Laravel Guzzle, но, как и cURL, когда мы отправляем данные POST, мы на самом деле получим ответ обратно в нашу сторону. Но не получаю переадресацию.

Если мне нужно перейти со стандартной формой HTML, как я могу опубликовать там информацию заголовка. Использование jQuery ajax может также вызвать такую ​​же проблему, что я не могу перенаправить пользователя.

Я провел некоторый повторный поиск и попробовал что-то,

  1. С жадностью яЯ на самом деле могу показать содержимое HTML обратно пользователю, используя метод getBody, но HTML не обрабатывается правильно, изображения не работают (из-за относительного пути, который они используют на веб-страницах), а также ссылки икнопки не выводят меня в нужные места.
$response = $client->request('POST', $transactionResponse['redirectForm']['actionUrl'], [
    'headers' => $transactionResponse['redirectForm']['headers'],
    'form_params' => $transactionResponse['redirectForm']['content']
]);

echo $response->getBody();

Я также пробовал cURL с директивой CURLOPT_FOLLOWLOCATION, но он также возвращает ответ, не перенаправляя пользователя.

$post = [
    'username' => 'user1',
    'password' => 'passuser1',
    'gender'   => 1,
];

$ch = curl_init('http://localhost/laravel/arax_v1/paytm/callback');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'location: http://localhost/laravel/arax_v1/paytm/callback'
));

// execute!
$response = curl_exec($ch);

// close the connection, release resources used
curl_close($ch);

Может ли кто-нибудь иметь лучшую идею, чтобы решить это?

...