Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Problema: preciso de um meio de enviar dados POST para uma URL (em outro site) e redirecionar o usuário junto, utilizando cURL
Descrição:
Estou montando um pequeno sistema de loja, e vou utilizar o MoIP para processar os pagamentos. Preciso passar dados POST para a página do MoIP, mas não posso fazê-lo com um simples formulário HTML.
A solução aqui seria o cURL. Eu consigo com sucesso enviar os dados da forma que preciso para o MoIP, e o mesmo os reconhece. O problema é que não consigo "enviar o usuário junto". Em vez disso, a página do MoIP é "incorporada" ao meu site. Inicialmente, tentei redirecionar o usuário após realizar as operações no cURL. Mas dessa forma, o usuário "não vai junto com os dados POST", e a página do MoIP informa que as informações obrigatórias não foram fornecidas. Tentar redirecionar antes das operações no cURL também não funciona.
Depois de pesquisar um pouco, descobri o CURLOPT_FOLLOWLOCATION, mas ele não funciona, devido ao safe_mode e open_basedir. Li sobre obter o HEADER e procurar por "Location", para aí redirecionar o usuário. Não cheguei a testar, mas acho que vai acabar dando no mesmo problema relatado no parágrafo acima.
Nessa situação, como posso redirecionar o usuário junto com os dados POST, utilizando cURL ou alguma outra solução inteiramente em PHP?
Cart.php
...
<form>
<!-- Formulário com os produtos no carrinho, para alterar quantidades ou remover itens -->
</form>
...
<form>
<!-- Formulário para ir á página do MoIP -->
<!-- Não quero expor informações aqui (como o preço, que um usuário mal intencionado pode alterar com as ferramentas de desenvolvedor) e também não posso gerar os dados do pedido, pois, como o formulário do carrinho e este formulário encontram-se na mesma página, os itens do pedido estão sujeitos à alteração -->
<!-- Portanto, esse formulário leva à um script em PHP que envia os dados para o MoIP -->
<button>Concluir Compra</button>
</form>
...
SendToMoIP.php
// Enviando os dados para o MoIP a partir deste script, posso verificar se o preço está correto, posso gerar os dados do pedido (afinal de contas, nesse ponto, o usuário não alteraria mais os produtos do carrinho e posso enviar informações que não quero expor (como o ID da carteira)
$Query->Insert("INSERT INTO Orders
(
Transaction,
Product,
Attributes,
Quantity,
CreateDate
)
SELECT ?,
Product,
Attributes,
Quantity,
NOW()
FROM Cart
WHERE Cart = ?", array($Transaction, $Cart->ID));
$Data = array
(
'id_carteira' => 'exemplo',
'valor' => $Cart->Price(),
'nome' => $Cart->Name(),
'descricao' => $Cart->Desc(),
'id_transacao' => $TransactionID,
'frete' => '1'
);
$Curl = curl_init('https://desenvolvedor.moip.com.br/sandbox/PagamentoMoIP.do'); //Agora o script enviaria os dados para o MoIP
curl_setopt($Curl, CURLOPT_POST, true);
curl_setopt($Curl, CURLOPT_POSTFIELDS, $Data);curl_exec($Curl);
curl_close($Curl);
//O resultado é que a página do MoIP é "incorporada" aqui, e o usuário não é redirecionado
//Através da página "incorporada", posso checar que os dados POST chegam ao MoIP
//Mas eu preciso redirecionar o usuário para a página do MoIP
//Se agora eu fizer um redirecionamento ("Location: https://desenvolvedor.moip.com.br/sandbox/PagamentoMoIP.do"), o usuário será levado ao MoIP sem os dados POST
//Se eu fizer um redirecionamento antes do cURL, não funcionará também
Assim, nessa situação, como posso levar o usuário junto com os dados POST ao MoIP?
Carregando comentários...