@Markusan

Как сделать отправку POST запроса данных формы и переход по URL на PHP?

Нужно отправить POST запрос на сайт платежной системы. Если сделать форму и в action прописать url платёжной системы (получатель запроса), то всё работает. На адрес, указанный в action (https://paysystem.com) отправляется POST запрос и происходит переход на страницу с оплатой (https://paysystem.com) с данными, отправленными в запросе. (номер заказа, стоимость и т.д)
<form action="https://paysystem.com/" method="POST">
    <input type="hidden" name="wsb_t" value="1">
    <input type="hidden" name="wsb_v" value="2">
    <input type="hidden" name="wsb_id" value="12345678">
    <input type="hidden" name="wsb_order" value="ORDER-121123">
    <input type="submit" class="btns__border btns__btn" value="Оплатить">
</form>

Но как это реализовать чтобы в < form action="" был .php? Т.е обработка форма происходила в php файле, указанном в action формы.

Если отправить POST запрос в файле pay.php, то приходит ответ без перехода на страницу с оплатой. Пробовал разные методы отправки запроса, но переход не происходит (возможно так и должно быть?).
<form action="pay.php" method="POST">
    <input type="submit" class="btns__border btns__btn" value="Оплатить">
</form>

pay.php:
<?php
$url = 'https://paysystem.com/';
$params = array(
    'wsb_t' => '1',
    'wsb_v' => '2',
    'wsb_id' => '12345678',
    'wsb_order' => 'ORDER-121123',
);
$result = file_get_contents($url, false, stream_context_create(array(
    'http' => array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => http_build_query($params)
    )
)));

?>

Возможно отправить запрос с переходом (как в 1ом случае), но чтобы вся обработка была в файле pay.php? (в action был pay.php)
  • Вопрос задан
  • 1522 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Eugene-Kei
Ваш код pay.php создает переменную $result и никак с ней не работает.
В платежной системе должна быть возможность отправить пользователя на указанный вами адрес, после того, как он оплатит или откажется платить.
1. Вы отправляете пользователя на конкретную страницу оплаты, на сайте платежной системы.
2. Пользователь оплачивает или не оплачивает.
3. Платежная система перенаправляет его на указанный в настройках адрес, на вашем сайте.

Сомневаюсь, что вы сможете из php совершить платеж от имени пользователя. Любая платежная система производит ряд проверок, которые вы вряд ли сможете обойти.

А редирект из php делается отправкой соответствующего заголовка.
header("Location: http://www.example.com/");
www.php.net/manual/ru/function.header.php
Ответ написан
Комментировать
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
После выполнения file_get_contents() смотрите значение переменной $http_response_header
В ответе платёжной системы будет заголовок с Location: *****. Это адрес дальнейшей переадресации, который вам и нужен.

$result = file_get_contents( ...
var_dump($http_response_header);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы