I am working on a shopping cart with several payment options using different APIs.
The flow I want is that the user chooses which payment option to use and the accor
You can't send a traditional Location:
header to the HTTP client to do a redirect and include POST data. What you could do instead is:
Try this
$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);
Easiest thing to do is have a form submit handler in JavaScript code that will make an AJAX POST request to save the customer-related info.
This also saves you because you can control what parameters to send to your server (the customer's credit card / CVV numbers should not be sent to your server unless you are certified to handle them).
If you have the PECL http extension installed (it'll show up in phpinfo() as pecl_http) you can create an HTTP POST request and spit out the results after the following pattern:
// your DB code above here
$pay_request = new HttpRequest($remote_url, HTTP_METH_POST);
$pay_request->addPostFields($_POST);
$pay_request->send()->send();
Last line's not a typo - the request returns a response, and then the response gets dumped in the output buffer.