Перенаправление с данными POST

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

Поток, который я хочу, состоит в том, что пользователь выбирает, какую платежную опцию использовать, и отображается соответствующая форма.

При отправке полей формы, касающихся адреса и т. Д., Следует сохранить в моей БД, а поля, касающиеся платежа, отправляются с POST в обработчик платежей api.

Важно, чтобы пользователю нужно было щелкнуть только один раз, чтобы сэкономить-в-db пришлось сжать между нажатием кнопки отправки и при отправке данных на сервер платежей.

Я подумал о переадресации, когда все данные получают POSTED, и которые сохраняют данные в БД и перенаправляют на сервер платежей, но как я перенаправляю вместе с данными POST (GET не работает, к сожалению).

Вы не можете отправить традиционный заголовок Location: HTTP-клиенту для перенаправления и включить данные POST. Вместо этого вы можете:

  • используйте запрос AJAX для получения правильного целевого URL-адреса
  • обновите действие формы с помощью этого URL с помощью JavaScript (в функции обратного вызова AJAX)
  • отправить форму

Самое простое – это иметь обработчик формы в JavaScript-коде, который сделает запрос AJAX POST для сохранения информации о клиентах.

  • Действие платежной формы должно указывать на платежный шлюз
  • Присоединить JavaScript для отправки события в форму оплаты
  • В обработчике отправки соберите всю информацию о клиенте (имя, адрес и т. Д.) И сделайте AJAX POST на свой сервер.
  • Убедитесь, что обработчик отправки возвращает false, так что POST еще не отправляется на платежный шлюз
  • После того, как AJAX POST успешно представит форму оплаты, используя JavaScript.

Это также экономит вас, потому что вы можете контролировать, какие параметры отправлять на ваш сервер (номера кредитной карты / CVV клиента не должны быть отправлены на ваш сервер, если вы не сертифицированы для их обработки).

Если у вас установлено расширение HTTP PECL (оно будет отображаться в phpinfo () как pecl_http), вы можете создать запрос HTTP POST и выплюнуть результаты после следующего шаблона:

 // your DB code above here $pay_request = new HttpRequest($remote_url, HTTP_METH_POST); $pay_request->addPostFields($_POST); $pay_request->send()->send(); 

Последняя строка не является опечаткой – запрос возвращает ответ, а затем ответ удаляется в выходном буфере.

Попробуй это

  $context = stream_context_create(array( 'http' => array( 'method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencoded\r\n", 'content' => http_build_query($_POST) ), )); echo file_get_contents($url, false, $context);