ALGUEM ME DE ESSA LUZ NO CURL?
22/08/2015
0
Algum me da uma luz? Estou passando este site todo pra portugues porem o formulario de doação tem que ser pro site original.
Ele não esta preenchendo a pagina pra mim obter a resposta.
<?php
$cURL = curl_init('https://payments.ironmountain.com/payment.asp');
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
$dados = array(
'card_cardType' => 'Visa',
'card_accountNumber' => '4444555544445555',
'card_cvNumber' => '422',
'card_expirationMonth' => '01',
'card_expirationYear' => '2018',
'billTo_customerID' => '4352352345',
'billTo_firstName' => 'Andre',
'billTo_lastName' => 'Giao',
'billTo_company' => 'ironmountain',
'billTo_country' => 'bs',
'billTo_street1' => 'Av ola mundo',
'billTo_street2' => 'Ola',
'billTo_city' => 'Sao Paulo',
'billTo_state_id' => 'AK',
'billTo_postalCode' => '01221',
'billTo_phoneNumber' => '551198221100',
'billTo_email' => 'olamundo@olamundo.com',
'billTo_email_confirm' => 'olamundo@olamundo.com',
'purchaseTotals_taxAmount' => '5.00',
'purchaseTotals_grandTotalAmount' => '5.00',
'submit' => 'on'
);
curl_setopt($cURL, CURLOPT_POST, true);
curl_setopt($cURL, CURLOPT_POSTFIELDS, $dados);
$resultado = curl_exec($cURL);
curl_close($cURL);
?>
Conceicao Barros
Post mais votado
22/08/2015
Pelo que eu vi, você não pode mandar o post para essa página, pois ela é um formulário, olhei o código da página de destino, você tem que mandar para a action do form que é "https://payments.ironmountain.com/response.asp".
Também tem que colocar para não verificar o "SSL".
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
E para madar os dados faça o seguinte:
$dadosCampos = '';
foreach($dados as $name => $valor) {
$dadosCampos .= $name . '=' . $valor . '&';
}
Altere o Postfields:
curl_setopt($cURL, CURLOPT_POSTFIELDS, $dadosCampos);
Acrescente essa linha:
curl_setopt($ch,CURLOPT_POST,count($dadosCampos));
Depois de fechar o curl verifica o que está vindo de erro.
echo $resultado;
Anderson Souza
Mais Posts
23/08/2015
Conceicao Barros
Pelo que eu vi, você não pode mandar o post para essa página, pois ela é um formulário, olhei o código da página de destino, você tem que mandar para a action do form que é "https://payments.ironmountain.com/response.asp".
Também tem que colocar para não verificar o "SSL".
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
E para madar os dados faça o seguinte:
$dadosCampos = '';
foreach($dados as $name => $valor) {
$dadosCampos .= $name . '=' . $valor . '&';
}
Altere o Postfields:
curl_setopt($cURL, CURLOPT_POSTFIELDS, $dadosCampos);
Acrescente essa linha:
curl_setopt($ch,CURLOPT_POST,count($dadosCampos));
Depois de fechar o curl verifica o que está vindo de erro.
echo $resultado;
Você quer dizer assim?
<?php
$cURL = curl_init('https://payments.ironmountain.com/response.asp');
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
$dadosCampos = 'billTo_customerID=3948539840';
foreach($dados as $name => $valor) {
$dadosCampos .= $name . '=' . $valor . '&';
}
curl_setopt($cURL, CURLOPT_POST, true);
curl_setopt($cURL, CURLOPT_POSTFIELDS, $dadosCampos);
curl_setopt($ch,CURLOPT_POST,count($dadosCampos));
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
$resultado = curl_exec($cURL);
curl_close($cURL);
?>
Fico grato se me ajudar, não se preocupe que nenhuma ajuda para mim e de graça.
23/08/2015
Conceicao Barros
Mais deu estes erros.
Warning: Invalid argument supplied for foreach() in /home/skyconfirmacao/www/ver.php on line 5
Warning: curl_setopt() expects parameter 1 to be resource, null given in /home/skyconfirmacao/www/ver.php on line 12
23/08/2015
Anderson Souza
23/08/2015
Conceicao Barros
Pelo que eu vi, você não pode mandar o post para essa página, pois ela é um formulário, olhei o código da página de destino, você tem que mandar para a action do form que é "https://payments.ironmountain.com/response.asp".
Também tem que colocar para não verificar o "SSL".
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
E para madar os dados faça o seguinte:
$dadosCampos = '';
foreach($dados as $name => $valor) {
$dadosCampos .= $name . '=' . $valor . '&';
}
Altere o Postfields:
curl_setopt($cURL, CURLOPT_POSTFIELDS, $dadosCampos);
Acrescente essa linha:
curl_setopt($ch,CURLOPT_POST,count($dadosCampos));
Depois de fechar o curl verifica o que está vindo de erro.
echo $resultado;
Consegui muito obrigado, mesmo, precisar de algo so me falar.
23/08/2015
Anderson Souza
Pelo que eu vi, você não pode mandar o post para essa página, pois ela é um formulário, olhei o código da página de destino, você tem que mandar para a action do form que é "https://payments.ironmountain.com/response.asp".
Também tem que colocar para não verificar o "SSL".
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
E para madar os dados faça o seguinte:
$dadosCampos = '';
foreach($dados as $name => $valor) {
$dadosCampos .= $name . '=' . $valor . '&';
}
Altere o Postfields:
curl_setopt($cURL, CURLOPT_POSTFIELDS, $dadosCampos);
Acrescente essa linha:
curl_setopt($ch,CURLOPT_POST,count($dadosCampos));
Depois de fechar o curl verifica o que está vindo de erro.
echo $resultado;
Boa noite!
Não assim, você deixa os dados como antes, no array.
23/08/2015
Anderson Souza
<?php $url = 'https://payments.ironmountain.com/response.asp'; $data = array( 'card_cardType' => 'Visa', 'card_accountNumber' => '4444555544445555', 'card_cvNumber' => '422', 'card_expirationMonth' => '01', 'card_expirationYear' => '2018', 'billTo_customerID' => '4352352345', 'billTo_firstName' => 'Andre', 'billTo_lastName' => 'Giao', 'billTo_company' => 'ironmountain', 'billTo_country' => 'bs', 'billTo_street1' => 'Av ola mundo', 'billTo_street2' => 'Ola', 'billTo_city' => 'Sao Paulo', 'billTo_state_id' => 'AK', 'billTo_postalCode' => '01221', 'billTo_phoneNumber' => '551198221100', 'billTo_email' => 'olamundo@olamundo.com', 'billTo_email_confirm' => 'olamundo@olamundo.com', 'purchaseTotals_taxAmount' => '5.00', 'purchaseTotals_grandTotalAmount' => '5.00', 'submit' => 'on' ); $post = ''; foreach($data as $name => $value) { $post.= $name . '=' . $value . '&'; } $cURL = curl_init(); curl_setopt($cURL, CURLOPT_URL, $url); curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true); curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($cURL, CURLOPT_POST, true); curl_setopt($cURL, CURLOPT_POSTFIELDS, $post); curl_setopt($ch,CURLOPT_POST,count($post)); $result = curl_exec($cURL); if(curl_exec($cURL) === false) { echo 'Curl error: ' . curl_error($cURL); } curl_close($cURL); echo $result; ?>
23/08/2015
Conceicao Barros
<?php $url = 'https://payments.ironmountain.com/response.asp'; $data = array( 'card_cardType' => 'Visa', 'card_accountNumber' => '4444555544445555', 'card_cvNumber' => '422', 'card_expirationMonth' => '01', 'card_expirationYear' => '2018', 'billTo_customerID' => '4352352345', 'billTo_firstName' => 'Andre', 'billTo_lastName' => 'Giao', 'billTo_company' => 'ironmountain', 'billTo_country' => 'bs', 'billTo_street1' => 'Av ola mundo', 'billTo_street2' => 'Ola', 'billTo_city' => 'Sao Paulo', 'billTo_state_id' => 'AK', 'billTo_postalCode' => '01221', 'billTo_phoneNumber' => '551198221100', 'billTo_email' => 'olamundo@olamundo.com', 'billTo_email_confirm' => 'olamundo@olamundo.com', 'purchaseTotals_taxAmount' => '5.00', 'purchaseTotals_grandTotalAmount' => '5.00', 'submit' => 'on' ); $post = ''; foreach($data as $name => $value) { $post.= $name . '=' . $value . '&'; } $cURL = curl_init(); curl_setopt($cURL, CURLOPT_URL, $url); curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true); curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($cURL, CURLOPT_POST, true); curl_setopt($cURL, CURLOPT_POSTFIELDS, $post); curl_setopt($ch,CURLOPT_POST,count($post)); $result = curl_exec($cURL); if(curl_exec($cURL) === false) { echo 'Curl error: ' . curl_error($cURL); } curl_close($cURL); echo $result; ?>
Eu fiz assim e funcionou muito memo.
<?php
$cURL = curl_init('https://payments.ironmountain.com/response.asp');
$dadosCampos = 'card_cardType=001&card_accountNumber=4544252000001182&card_expirationMonth=07&card_expirationYear=2019&card_cvNumber=630&billTo_customerID=94238728933&merchantID=ironmountain&billTo_firstName=Andre&billTo_lastName=Gomes&billTo_company=Resault333&billTo_country=bs&billTo_city=Redex&billTo_state_id=AK&billTo_postalCode=74450&billTo_phoneNumber=55629918822&billTo_email=mail@mail.com&billTo_email_confirm=mail@mail.com&purchaseTotals_taxAmount=5.00&purchaseTotals_grandTotalAmount=5.00&billTo_street1=Av+Goias&invoiceHeader_invoiceDate=21/10/2015&merchantReferenceCode=9384279843';
foreach($dados as $name => $valor) {
$dadosCampos .= $name . '=' . $valor . '&';
}
curl_setopt($cURL, CURLOPT_POST, true);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURL, CURLOPT_POSTFIELDS, $dadosCampos);
curl_setopt($ch,CURLOPT_POST,count($dadosCampos));
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
$resultado = curl_exec($cURL);
curl_close($cURL);
print $resultado;
?>
EU PEÇO ATE DESCULPA POR MAIS ESTA PERGUNTA E POR QUE EU NÃO ENTENDO MUITO DE CURL AINDA, ENTÃO SE PUDER ME INFORMAR COMO FAÇO PRA POR EXEMPLO SE O VALOR FOR "PAYMENT RECEVIER" ELE COLOCAR EM UM ECHO A MENSAGEM, "PAGAMENTO RECEBIDO" E SE DER ERRO "ERRO PAYMENT" ELE DAR RESPOSTA DE ERRO EM OUTRO ECHO COM MENSAGEM "PAGAMENTO RECUSADO" SE PUDER ME AJUDAR SO MAIS NESSE DETALHE FICO HONRADO POR SUA AJUDA.
23/08/2015
Anderson Souza
Então, você terá que pegar o texto que vem dentro dela, e fazer sua condição.
Outra coisa, use o array que nem estou te passando, porque o foreach já faz tudo aquilo que você fez, e o array fica mais organizado.
Para resolver seu problema, estou usando a biblioteca do phpQuery, para acessar o texto, você terá que baixar ela:
Link do phpQuery
Você deve requisitar o arquivo no seu código.
Fiz as modificações para você ver como ficou, só você implementar ela, segue o código:
<?php require_once 'php-query.php'; $url = 'https://payments.ironmountain.com/response.asp'; $data = array( 'card_cardType' => 'Visa', 'card_accountNumber' => '4444555544445555', 'card_cvNumber' => '422', 'card_expirationMonth' => '01', 'card_expirationYear' => '2018', 'billTo_customerID' => '4352352345', 'billTo_firstName' => 'Andre', 'billTo_lastName' => 'Giao', 'billTo_company' => 'ironmountain', 'billTo_country' => 'bs', 'billTo_street1' => 'Av ola mundo', 'billTo_street2' => 'Ola', 'billTo_city' => 'Sao Paulo', 'billTo_state_id' => 'AK', 'billTo_postalCode' => '01221', 'billTo_phoneNumber' => '551198221100', 'billTo_email' => 'olamundo@olamundo.com', 'billTo_email_confirm' => 'olamundo@olamundo.com', 'purchaseTotals_taxAmount' => '5.00', 'purchaseTotals_grandTotalAmount' => '5.00', 'submit' => 'on' ); $post = ''; foreach($data as $name => $value) { $post.= $name . '=' . $value . '&'; } $cURL = curl_init(); curl_setopt($cURL, CURLOPT_URL, $url); curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true); curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($cURL, CURLOPT_POST, true); curl_setopt($cURL, CURLOPT_POSTFIELDS, $dadosCampos); curl_setopt($ch,CURLOPT_POST,count($dadosCampos)); $result = curl_exec($cURL); if(curl_exec($cURL) === false) { echo 'Curl error: ' . curl_error($cURL); } curl_close($cURL); $doc = phpQuery::newDocument($result); $message = $doc->find('.tableHeader')->text(); echo $message; ?>
23/08/2015
Conceicao Barros
Então, você terá que pegar o texto que vem dentro dela, e fazer sua condição.
Outra coisa, use o array que nem estou te passando, porque o foreach já faz tudo aquilo que você fez, e o array fica mais organizado.
Para resolver seu problema, estou usando a biblioteca do phpQuery, para acessar o texto, você terá que baixar ela:
Link do phpQuery
Você deve requisitar o arquivo no seu código.
Fiz as modificações para você ver como ficou, só você implementar ela, segue o código:
<?php require_once 'php-query.php'; $url = 'https://payments.ironmountain.com/response.asp'; $data = array( 'card_cardType' => 'Visa', 'card_accountNumber' => '4444555544445555', 'card_cvNumber' => '422', 'card_expirationMonth' => '01', 'card_expirationYear' => '2018', 'billTo_customerID' => '4352352345', 'billTo_firstName' => 'Andre', 'billTo_lastName' => 'Giao', 'billTo_company' => 'ironmountain', 'billTo_country' => 'bs', 'billTo_street1' => 'Av ola mundo', 'billTo_street2' => 'Ola', 'billTo_city' => 'Sao Paulo', 'billTo_state_id' => 'AK', 'billTo_postalCode' => '01221', 'billTo_phoneNumber' => '551198221100', 'billTo_email' => 'olamundo@olamundo.com', 'billTo_email_confirm' => 'olamundo@olamundo.com', 'purchaseTotals_taxAmount' => '5.00', 'purchaseTotals_grandTotalAmount' => '5.00', 'submit' => 'on' ); $post = ''; foreach($data as $name => $value) { $post.= $name . '=' . $value . '&'; } $cURL = curl_init(); curl_setopt($cURL, CURLOPT_URL, $url); curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true); curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($cURL, CURLOPT_POST, true); curl_setopt($cURL, CURLOPT_POSTFIELDS, $dadosCampos); curl_setopt($ch,CURLOPT_POST,count($dadosCampos)); $result = curl_exec($cURL); if(curl_exec($cURL) === false) { echo 'Curl error: ' . curl_error($cURL); } curl_close($cURL); $doc = phpQuery::newDocument($result); $message = $doc->find('.tableHeader')->text(); echo $message; ?>
Fiz todo o coodigo que vc falou ele pegou o valor corretamente porem eu quis fazer assim
curl_setopt($ch,CURLOPT_POST,count($dadosCampos));
$result = curl_exec($cURL);
if(curl_exec($cURL) === false)
{
echo 'Curl error: ' . curl_error($cURL);
}
curl_close($cURL);
$doc = phpQuery::newDocument($result);
$message = $doc->find('.tableHeader')->text();
if($message= 'Payment Confirmation'){
echo 'Aprovada!';
}
else{
echo 'Recusada!';
}
print $result;
?>
SO QUE ELE NAO PEGA O VALOR Q ESTA NA MENSAGEM E MODIFICA NO ECHO SEMPRE APARECE "APROVADA"
23/08/2015
Anderson Souza
Antes:
curl_setopt($cURL, CURLOPT_POSTFIELDS, $dadosCampos); curl_setopt($ch,CURLOPT_POST,count($dadosCampos));
Depois:
curl_setopt($cURL, CURLOPT_POSTFIELDS, $post); curl_setopt($ch,CURLOPT_POST,count($post));
Para pegar o valor correto faz assim:
$message = $doc->find('.tableHeader')->text();
Verifica se exite o a mensagem, se existir retorna "Aprovada" se não "Recusada".
$return = (strpos($message, "Payment Confirmation") !== false)? "Aprovada" : "Recusada";
echo $return;
23/08/2015
Conceicao Barros
Antes:
curl_setopt($cURL, CURLOPT_POSTFIELDS, $dadosCampos); curl_setopt($ch,CURLOPT_POST,count($dadosCampos));
Depois:
curl_setopt($cURL, CURLOPT_POSTFIELDS, $post); curl_setopt($ch,CURLOPT_POST,count($post));
Para pegar o valor correto faz assim:
$message = $doc->find('.tableHeader')->text();
Verifica se exite o a mensagem, se existir retorna "Aprovada" se não "Recusada".
$return = (strpos($message, "Payment Confirmation") !== false)? "Aprovada" : "Recusada";
echo $return;
Olha funcionou corretamente amigo, eu nem sei o que te dizer pra agradecer, muito obrigado mesmo.
23/08/2015
Conceicao Barros
Antes:
curl_setopt($cURL, CURLOPT_POSTFIELDS, $dadosCampos); curl_setopt($ch,CURLOPT_POST,count($dadosCampos));
Depois:
curl_setopt($cURL, CURLOPT_POSTFIELDS, $post); curl_setopt($ch,CURLOPT_POST,count($post));
Para pegar o valor correto faz assim:
$message = $doc->find('.tableHeader')->text();
Verifica se exite o a mensagem, se existir retorna "Aprovada" se não "Recusada".
$return = (strpos($message, "Payment Confirmation") !== false)? "Aprovada" : "Recusada";
echo $return;
Acho que erramos em algo, por que peguei o cartao fornecido por eles pra testar, o mesmo colocandoo no site debita o valor da doação, já quando coloca no script nao debita! Se quiser lhe forneço o cartao.
23/08/2015
Conceicao Barros
Antes:
curl_setopt($cURL, CURLOPT_POSTFIELDS, $dadosCampos); curl_setopt($ch,CURLOPT_POST,count($dadosCampos));
Depois:
curl_setopt($cURL, CURLOPT_POSTFIELDS, $post); curl_setopt($ch,CURLOPT_POST,count($post));
Para pegar o valor correto faz assim:
$message = $doc->find('.tableHeader')->text();
Verifica se exite o a mensagem, se existir retorna "Aprovada" se não "Recusada".
$return = (strpos($message, "Payment Confirmation") !== false)? "Aprovada" : "Recusada";
echo $return;
curl_close($cURL);
$doc = phpQuery::newDocument($result);
$return = (strpos($message, "Payment Confirmation") !== false)? "Aprovada" : "Recusada";
echo $return;
if(strpos($message, "Payment Error")!== false){
$ip = $_SERVER['REMOTE_ADDR'];
$myFile = "./O.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
$msg="Doação = $name | Valor = $valor
";
$open = fopen("./O.txt","a+");
$quebra = chr(13).chr(10);//essa é a quebra de linha
fwrite($open, $msg);
fclose($open);
}
print $result;
?>
Tinha esquecido de falar, que e pra salvar em um txt o nome e o valor doado, exemplo caso de erro ele nao salvar, caso der confirmado ele salvar, assim termos a contabilidade do site br pro site us, porem ainda estar com aquele erro de nao efetivar o pagamento, quando passo o cartao no site ele aprova, quando passo pelo script ele nao aprova.
23/08/2015
Conceicao Barros
Antes:
curl_setopt($cURL, CURLOPT_POSTFIELDS, $dadosCampos); curl_setopt($ch,CURLOPT_POST,count($dadosCampos));
Depois:
curl_setopt($cURL, CURLOPT_POSTFIELDS, $post); curl_setopt($ch,CURLOPT_POST,count($post));
Para pegar o valor correto faz assim:
$message = $doc->find('.tableHeader')->text();
Verifica se exite o a mensagem, se existir retorna "Aprovada" se não "Recusada".
$return = (strpos($message, "Payment Confirmation") !== false)? "Aprovada" : "Recusada";
echo $return;
<?php
require_once 'phpQuery-onefile.php';
$url = 'https://payments.ironmountain.com/response.asp';
$data = array(
'card_cardType' => 'Visa',
'card_accountNumber' => '4544252000001182',
'card_cvNumber' => '630',
'card_expirationMonth' => '07',
'card_expirationYear' => '2019',
'merchantID' =>'ironmountain',
'billTo_customerID' => '4352352345',
'billTo_firstName' => 'Andre',
'billTo_lastName' => 'Giao',
'billTo_company' => 'ironmountain',
'billTo_country' => 'bs',
'billTo_street1' => 'Av ola mundo',
'billTo_street2' => 'Ola',
'billTo_city' => 'Sao Paulo',
'billTo_state_id' => 'AK',
'billTo_postalCode' => '01221',
'billTo_phoneNumber' => '551198221100',
'billTo_email' => 'olamundo@olamundo.com',
'billTo_email_confirm' => 'olamundo@olamundo.com',
'merchantReferenceCode' => '94203984029',
'invoiceHeader_invoiceDate' => '21/10/2015',
'purchaseTotals_taxAmount' => '5.00',
'purchaseTotals_grandTotalAmount' => '5.00',
'submit' => 'on'
);
$post = '';
foreach($data as $name => $value) {
$post.= $name . '=' . $value . '&';
}
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($cURL, CURLOPT_POST, true);
curl_setopt($cURL, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch,CURLOPT_POST,count($post));
$result = curl_exec($cURL);
if(curl_exec($cURL) === false)
{
echo 'Curl error: ' . curl_error($cURL);
}
curl_close($cURL);
$doc = phpQuery::newDocument($result);
$return = (strpos($message, "Payment Confirmation") !== false)? "Aprovada" : "Recusada";
echo $return;
echo $result;
?>
O cartao que esta ai e verdadeiro fornecido pelo dono do site, não se preocupe pois ele vai ser cancelado sem falar que ele e pré-pago tem so 100 dolares pra testar.
23/08/2015
Anderson Souza
A mensagem de erro é essa:
Payment Error
Reason Code: 101
Your order could not be completed. One or more fields in the request contains invalid data.
Olha a documentação do site, e verifique como eles pegam os dados.
Abraço
Clique aqui para fazer login e interagir na Comunidade :)