Rafaelfpviana.com - Heroes, Lost, Fotos, biografia, blog, programação, PHP, seriados, humor, JavaScript, Filmes

Mostrando postagens com a tag cartaodecredito

[Programação] CodVer do Redecard em PHP


Alguns meses atrás eu estava desenvolvendo uma plataforma de pagamento com cartão de crédito da Redecard com PHP e em um certo momento fique de mãos atadas.

A Redecard fornece uma classe java para criar um código único válido para a transação a ser realizada, obtendo informações de hora e do IP do visitante. Pois é, parece fácil mas quem utiliza PHP sabe que para executar um aplicativo em Java por PHP não é tão fácil assim.

Lembro que eu havia tentado de tudo, cheguei conseguir executar o aplicativo via linha de comando através do shell do linux mas em algo que é muito comum em servidores compatilhados é o fato da execução de comandos via PHP não serem permitidos, resumindo, eu fiquei em um beco sem saída.

Neste momento eu busquei ajuda ao São Google, achei um blog interessante onde um rapaz havia feito uma engenharia inversa nesse aplicativo que a Redecard fornecia e através disso ele bolou uma versão do  que o aplicativo fazia porém em PHP, e o melhor disso foi que ele disponbilizou pra gente :D, muito legal esse cara.

Esses dias eu recebi um e-mail onde alguém leu nos comentários do blog desse rapaz que tinha dado uma limpada no código original dele e neste e-mail ele estava solicitando este meu código.

Resolvi não só atender ao pedido no e-mail mas também disponibilizar aqui para todos, sei que é complicado ficar sem solução e portanto acredito que colocando o código aqui todos poderão obter uma ajuda.

Aqui vai:


<?
        function _RedeCard_CodVer($n_filiacao,$total,$ip) {
                /**
                * By Renato Elias 2006 - renato.elias@gmail.com - blog.s2n.com.br
                **/

                $data = getdate();
                $segundosAgora = $data['seconds'];
                /*
                esta é uma tabelinha de codificação da própria redecard, onde eles
                embaralham os segundos.
                NÃO ALTERAR!
                */

                $_secCodificado = array(11,17,21,31,56,34,42,3,18,13,
                12,18,22,32,57,35,43,4,19,14,9,20,23,33,58,36,44,5,24,
                15,62,25,34,59,37,45,6,25,16,27,63,26,35,60,38,46,7,26,
                17,28,14,36,2,39,47,8,29,22,55,33);
               
                $segundosAgora = $_secCodificado[ $segundosAgora ];

                $pad = '';
                if ($segundosAgora < 10) {
                        $pad = "0";
                } else {
                        $pad = "";
                }
                $tamIP = strlen($ip);
                $total = intval($total);
                $numfil = intval($n_filiacao);
                $i5 = $total + $segundosAgora;
                $i6 = $segundosAgora + $tamIP;
                $i7 = $segundosAgora * $numfil;
                $i8 = strlen($i7);
                return "$i7$i5$i6-$i8$pad$segundosAgora";
        }
?>
 

© 2008 E-Registros
Chuck Norris pode te enforcar com um telefone sem fio