Skip to content

Instantly share code, notes, and snippets.

Created June 5, 2013 13:48
Show Gist options
  • Save anonymous/5713995 to your computer and use it in GitHub Desktop.
Save anonymous/5713995 to your computer and use it in GitHub Desktop.
<?php
// arquivo: recarga.php 2011-05-19 18:37
// por: Giancarlo Gil Ottaviani Raduan - gra...@gmail.com /
http://www.raduan.net
// saudações aos colegas da Lista PHP (list...@googlegroups.com)
// copie, altere, mude, mas por favor, deixe os créditos acima :)
if ( $_POST ) {
//ambiente de producao
$numero = 'coloque aqui seu numero de estabelecimento'; //
estabelecimento oficial
$numero = '1006993069'; // estabelecimento testes
$chave = 'coloque aqui sua chave de acesso'; // chave oficial
$chave =
'25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3'; //
chave teste
$url =
'https://ecommerce.cbmp.com.br/servicos/ecommwsec.do'; // url
producao
$url =
'https://qasecommerce.cielo.com.br/servicos/ecommwsec.do'; // url
homologacao
$ccnome = $_POST['ccnome'];
$ccnum = $_POST['ccnum'];
$ccaval = $_POST['ccaval'];
$ccmval = $_POST['ccmval'];
$ccccv = $_POST['ccccv'];
$nome = $_POST['nome'];
$valor = $_POST['valor'];
$bandeira = $_POST['bandeira'];
$data = strftime("%FT%T");
$numpedido = time();
$id = md5(date("YmdHisu"));
$valor = str_replace(array(',', '.'), '', $valor);
$id = md5(date("YmdHisu"));
$string = <<<XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<requisicao-tid id="$id" versao="1.1.0">
<dados-ec>
<numero>$numero</numero>
<chave>$chave</chave>
</dados-ec>
<forma-pagamento>
<bandeira>$bandeira</bandeira>
<produto>1</produto>
<parcelas>1</parcelas>
</forma-pagamento>
</requisicao-tid>
XML;
flush();
$ch = curl_init();
flush();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'mensagem=' . $string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 40);
$string = curl_exec($ch);
if ( curl_error($ch) ) { echo "x01 - " . curl_error($ch); }
curl_close($ch);
$xml = @simplexml_load_string($string);
flush();
if ( $xml->tid ) {
$tid = $xml->tid;
$id = md5(date("YmdHisu"));
$string2 = <<<XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<requisicao-autorizacao-portador id="$id" versao="1.1.0">
<tid>$tid</tid>
<dados-ec>
<numero>$numero</numero>
<chave>$chave</chave>
</dados-ec>
<dados-cartao>
<numero>$ccnum</numero>
<validade>{$ccaval}{$ccmval}</validade>
<indicador>1</indicador>
<codigo-seguranca>{$ccccv}</codigo-seguranca>
</dados-cartao>
<dados-pedido>
<numero>$numpedido</numero>
<valor>$valor</valor>
<moeda>986</moeda>
<data-hora>$data</data-hora>
<idioma>PT</idioma>
</dados-pedido>
<forma-pagamento>
<bandeira>$bandeira</bandeira>
<produto>1</produto>
<parcelas>1</parcelas>
</forma-pagamento>
<capturar-automaticamente>false</capturar-automaticamente>
</requisicao-autorizacao-portador>
XML;
$ch = curl_init();
flush();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'mensagem=' . $string2);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 40);
$xml2 = curl_exec($ch);
$xml2 = @simplexml_load_string($xml2);
curl_close($ch);
flush();
$id = md5(date("YmdHisu"));
$string3 = <<<XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<requisicao-autorizacao-tid id="$id" versao="1.1.0">
<tid>$tid</tid>
<dados-ec>
<numero>$numero</numero>
<chave>$chave</chave>
</dados-ec>
</requisicao-captura>
XML;
$ch = curl_init();
flush();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'mensagem=' . $string3);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 40);
$xml3 = curl_exec($ch);
$xml3 = @simplexml_load_string($xml3);
curl_close($ch);
flush();
header("Location: https://www.url-de-confirmacao-do-seu-site/");
}
else {
echo "Falha na comunicação com os servidores da CIELO";
}
}
else {
echo "não autorizado";
}
?>
<form action="recarga.php" method="post">
<table border="0" cellpadding="3" cellspacing="0">
<tr>
<td>Pagar com</td>
<td><select name="bandeira"><option
value="visa">Visa</option><option
value="mastercard">MasterCard</option><option
value="elo">Elo</option></select></td>
</tr>
<tr>
<td>Número do Cartão</td>
<td><input type="text" name="ccnum" id="ccnum" maxlength="16"></td>
</tr>
<tr>
<td>Nome do Portador</td>
<td><input type="text" name="ccnome"></td>
</tr>
<tr>
<td>Vencimento</td>
<td>
<select name="ccmval">
<option value="01">Janeiro</option>
<option value="02">Fevereiro</option>
<option value="03">Março</option>
<option value="04">Abril</option>
<option value="05">Maio</option>
<option value="06">Junho</option>
<option value="07">Julho</option>
<option value="08">Agosto</option>
<option value="09">Setembro</option>
<option value="10">Outubro</option>
<option value="11">Novembro</option>
<option value="12">Dezembro</option>
</select>
<select name="ccaval">
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
<option value="2021">2021</option>
</select>
</td>
</tr>
<tr>
<td>Código de Segurança</td>
<td><input type="text" name="ccccv" id="ccccv" size="3"
maxlength="3"></td>
</tr>
<tr>
<td>CPF / CNPJ</td>
<td><input type="text" name="nome"> </td>
</tr>
<tr>
<td>Valor</td>
<td><input type="text" name="valor" id="valor" value="1,00"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="recarregar" /></td>
</tr>
</table>
</form>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment