Я работаю над корзиной покупок с несколькими вариантами оплаты, используя различные API.
Поток, который я хочу, состоит в том, что пользователь выбирает, какую платежную опцию использовать, и отображается соответствующая форма.
При отправке полей формы, касающихся адреса и т. Д., Следует сохранить в моей БД, а поля, касающиеся платежа, отправляются с POST в обработчик платежей api.
Важно, чтобы пользователю нужно было щелкнуть только один раз, чтобы сэкономить-в-db пришлось сжать между нажатием кнопки отправки и при отправке данных на сервер платежей.
Я подумал о переадресации, когда все данные получают POSTED, и которые сохраняют данные в БД и перенаправляют на сервер платежей, но как я перенаправляю вместе с данными POST (GET не работает, к сожалению).
Вы не можете отправить традиционный заголовок Location:
HTTP-клиенту для перенаправления и включить данные POST. Вместо этого вы можете:
Самое простое – это иметь обработчик формы в JavaScript-коде, который сделает запрос AJAX POST для сохранения информации о клиентах.
Это также экономит вас, потому что вы можете контролировать, какие параметры отправлять на ваш сервер (номера кредитной карты / 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);