
mhfferreira
Membros-
Total de itens
6 -
Registro em
-
Última visita
Sobre mhfferreira

Perfil
-
Gender
Female
mhfferreira's Achievements
0
Reputação
-
obrigada.. mas já consegui... mexendo num manual aqui noutro ali, consegui a comunicação...
-
olá pessoal... estou desenvolvendo um site (e-commerce) e estou apanhando um monte com a integração dos cartões... gostaria de uma luz de como faço esta integração... já sou filiada à redecard.. até consegui um CodVer em php da redecard, mas não faço a mínima idéia de como vou implementar isso... se alguém tiver algum manual, exemplo ou algo parecido e puder me passar eu agradeço também estou cogitando a idéia de se alguém tiver este módulo já pronto e quiser me fornecer, entra em contato pra acertarmos preço ou algo assim... Obrigada
-
olá pessoal... estou ficando quase louca aqui... depois de muito quebrar a cabeça, localizei um artigo na net ótimo que converte a DLL que o itaú fornece pra integração de sites com o shopline... graças ao CAIO.... meu site tá comunicando com o itaú... até gerou boletos em minha conta... td ok... ele me dá o retorno, só que meu problema está aí... esse retorno vem criptografado e eu não estou conseguindo decriptá-lo... o função que tenho não está funcionando... pelo - comigo... Alguém que já desenvolveu essa integração pode me ajudar? existe a DLL ou a CLASS... mas não consegui usá-las ... o que melhor funcionou foi mesmo a em php.... além de que meu SO é Windows... e do servidor onde a página é hospedada é Linux... e DLL não funciona em Linux.... Obrigada.... abaixo estou postando o código que o Caio me passou... (ah... já pedi ajuda pra ele, mas acredito que não está lendo o forum onde o encontrei pois não me respondeu ainda....) essa é a minha classe_iatu.php <?php class Itaucripto { public $codEmp; public $pedido; public $valor; public $observacao; public $nomeSacado; public $codigoInscricao; public $numeroInscricao; public $enderecoSacado; public $bairroSacado; public $cepSacado; public $cidadeSacado; public $estadoSacado; public $dataVencimento; public $urlRetorna; public $obsAd1; public $obsAd2; public $obsAd3; private $CHAVE_ITAU = 'SEGUNDA12345ITAU'; private $TAM_COD_EMP = 26; private $TAM_CHAVE = 16; private $sbox; private $key; private function Algoritmo($s, $s1) { $k = 0; $l = 0; $r = ''; $this->Inicializa($s1); for($j = 1; $j <= strlen($s); $j++) { $k = ($k + 1) % 256; $l = ($l + $this->sbox[$k]) % 256; $i = $this->sbox[$k]; $this->sbox[$k] = $this->sbox[$l]; $this->sbox[$l] = $i; $i1 = $this->sbox[($this->sbox[$k] + $this->sbox[$l]) % 256]; $j1 = ord(substr($s, $j - 1, 1)) ^ $i1; $r = $r.chr($j1); } // for return $r; } // function Algoritmo private function Inicializa($s) { $len = strlen($s); for ($j = 0; $j <= 255; $j++) { $this->key[$j] = ord(substr($s, $j % $len, 1)); $this->sbox[$j] = $j; } // for $l = 0; for ($k = 0; $k <= 255; $k++) { $l = ($l + $this->sbox[$k] + $this->key[$k]) % 256; $i = $this->sbox[$k]; $this->sbox[$k] = $this->sbox[$l]; $this->sbox[$l] = $i; } // for } // function Inicializa private function Converte($s) { for($i = 0, $r = chr(rand(65, 90)); $i < strlen($s); $i++) { $r = $r.ord(strval(substr($s, $i, 1))).chr(rand(65, 90)); } // for return $r; } // function Converte private function Desconverte($s) { return join(array_map('chr', split('[A-Z]', substr(substr($s, 1), 0, strlen($s) - 2)))); } // function Desconverte private function Corta($str, $n) { return str_pad(substr($str, 0, $n), $n, ' ', STR_PAD_RIGHT); } // function Corta public function geraDados($codEmp,$pedido,$valor,$obs,$chave,$nomeSacado,$codigoInscricao,$numeroInscricao, $enderecoSacado,$bairroSacado,$cepSacado,$cidadeSacado,$estadoSacado,$dataVencimento,$urlRetorna,$obsAd1,$obsAd2, $obsAd3) { if (strlen($codEmp) != $this->TAM_COD_EMP) { throw new Exception('Tamanho do código da empresa diferente de 26 posições'); } // if if (strlen($chave) != $this->TAM_CHAVE) { throw new Exception('Tamanho da chave diferente de 16 posições'); } // if if ((int) $pedido == 0 || (int) $pedido > 99999999) { throw new Exception('Número do pedido inválido'); } // if if (!preg_match('!^\d{2,8}\,\d{2}$!', $valor)) { throw new Exception('Valor da compra inválido. Formato [000000]00,00'); } // if if ((int) $codigoInscricao < 1 || (int) $codigoInscricao > 2) { throw new Exception('Código de inscrição inválido'); } // if if (($numeroInscricao = preg_replace('!\D!', '', $numeroInscricao)) && strlen($numeroInscricao) > 14) { throw new Exception('Número de inscrição inválido'); } // if if (($cepSacado = preg_replace('!\D!', '', $cepSacado)) && strlen($cepSacado) < 8) { throw new Exception('CEP inválido'); } // if if (strlen($estadoSacado) < 2 || strlen($estadoSacado) > 2) { throw new Exception('O estado deve ser uma sigla de no máximo 2 caracteres (UF)'); } // if if (!preg_match('!^(3[0-1]|0[1-9]|[1-2][0-9])(0[1-9]|1[0-2])2[0-9]{3}$!', $dataVencimento)) { throw new Exception('Data de vencimento inválida'); } // if if (strlen($obsAd1) > 60) { throw new Exception('Observação opcional #1 inválida'); } // if if (strlen($obsAd2) > 60) { throw new Exception('Observação opcional #2 inválida'); } // if if (strlen($obsAd3) > 60) { throw new Exception('Observação opcional #3 inválida'); } // if $codEmp = strtoupper($codEmp); $valor = substr($valor, 0, strlen($valor) - 3).substr($valor, -2); $valor = str_pad($valor, 10, '0', STR_PAD_LEFT); $pedido = str_pad($pedido, 8, '0', STR_PAD_LEFT); $obs = $this->Corta($obs, 40); $nomeSacado = $this->Corta($nomeSacado, 30); $codigoInscricao = $this->Corta($codigoInscricao, 2); $numeroInscricao = $this->Corta($numeroInscricao, 14); $enderecoSacado = $this->Corta($enderecoSacado, 40); $bairroSacado = $this->Corta($bairroSacado, 15); $cepSacado = $this->Corta($cepSacado, 8); $cidadeSacado = $this->Corta($cidadeSacado, 15); $estadoSacado = $this->Corta($estadoSacado, 2); $dataVencimento = $this->Corta($dataVencimento, 29); $urlRetorna = $this->Corta($urlRetorna, 60); $obsAd1 = $this->Corta($obsAd1, 60); $obsAd2 = $this->Corta($obsAd2, 60); $obsAd3 = $this->Corta($obsAd3, 60); $chave = strtoupper($chave); $ret_DC = $pedido . $valor . $obs . $nomeSacado . $codigoInscricao . $numeroInscricao . $enderecoSacado . $bairroSacado . $cepSacado . $cidadeSacado . $estadoSacado . $dataVencimento . $urlRetorna . $obsAd1 . $obsAd2 . $obsAd3; $ret_DC = $this->Algoritmo($ret_DC, $chave); $ret_DC = $this->Algoritmo($codEmp.$ret_DC, $this->CHAVE_ITAU); return $this->Converte($ret_DC); } // function geraDados private function decripto($ret_DC, $chave) { $s = $this->Desconverte($ret_DC); $s = $this->Algoritmo($s, $this->CHAVE_ITAU); $this->codEmp = substr($s, 0, 26); $s = $this->Algoritmo(substr($s, 26), $chave); $this->pedido = substr($s, 0, 8); $this->valor = substr($s, 8, 10); $this->observacao = substr($s, 18, 40); $this->nomeSacado = substr($s, 58, 30); $this->codigoInscricao = substr($s, 88, 2); $this->numeroInscricao = substr($s, 90, 14); $this->enderecoSacado = substr($s, 104, 40); $this->bairroSacado = substr($s, 144, 15); $this->cepSacado = substr($s, 159, 8); $this->cidadeSacado = substr($s, 167, 15); $this->estadoSacado = substr($s, 182, 2); $this->dataVencimento = substr($s, 184, 29); $this->urlRetorna = substr($s, 213, 60); $this->obsAd1 = substr($s, 273, 60); $this->obsAd2 = substr($s, 333, 60); $this->obsAd3 = substr($s, 393, 60); $this->valor = number_format((int) $this->valor / 100, 2, ',', '.'); } // function decripto } // class Itaucripto ?> essa é a minha classe_iatu.php <?php include('../ecommerce/classe_itau.php'); $cripto = new Itaucripto; $codEmp = "XXXXXXXXXXXXXXXXXXXXXXXXXX"; $pedido = $_SESSION['CONSUMIDOR']['PEDIDO']; $valor = "01,00"; $observacao = ""; $chave = "XXXXXXXXXXXXXXXX"; $nomeSacado = "Maria Helena"; $codigoInscricao = ""; $numeroInscricao = ""; $enderecoSacado = "meu endereco"; $bairroSacado = "meu bairro"; $cepSacado = "80000000"; $cidadeSacado = "Curitiba"; $estadoSacado = "PR"; $dataVencimento = date('dmY', strtotime('+1 day')); $urlRetorna = "/ecommerce/ret_itau.php"; $obsAd1 = ""; $obsAd2 = ""; $obsAd3 = ""; $dados = $cripto->geraDados($codEmp,$pedido,$valor,$observacao,$chave,$nomeSacado,$codigoInscricao,$numeroInscricao,$enderecoSacado,$bairroSacado,$cepSacado,$cidadeSacado,$estadoSacado,$dataVencimento,$urlRetorna,$obsAd1,$obsAd2,$obsAd3); //echo "<form name='form_pgto_itau' id='form_pgto_itau' action='https://shopline.itau.com.br/shopline/shopline.asp' method='post' onsubmit=pg_itau() target='SHOPLINE'> echo "<form name='form_pgto_itau' id='form_pgto_itau' action='https://shopline.itau.com.br/shopline/emissao_teste.asp' method='post' onsubmit=pg_itau() target='SHOPLINE'> <input type='hidden' name='DC' value='".$dados."'> <input type='submit' name='Shopline' value='Itaú Shopline'> </form>"; ?> meu ret_itau.php <?php include('../ecommerce/classe_itau.php'); $dados = ''; $chave = "XXXXXXXXXXXXXXXX"; $codEmp = ''; $pedido = ''; $tipPag = ''; $retorno = $_POST['DC']; $cripto = new Itaucripto; $dados = $cripto->decripto($retorno,$chave); $codEmp = $cripto->retornaCodEmp; $pedido = $cripto->retornaPedido; $tipPag = $cripto->retornaTipPag; echo 'ret '.$retorno.'<br>dados '.$dados.'<br>cod ' .$codEmp.'<br>ped '.$pedido.'<br>pag '.$tipPag; ?> <html> <head> <title> Retorno Online </title> </head> <body> <h1>Dados recebidos</h1> <br> </body> </html> desculpem... o nome correto do 1º código é classe_itau.php e o segundo código é a minha chamada a tela do shopline do itau
-
é, eles não aceitam tal configuração... valeu pessoal...
-
tá, valeu.. isso eu já tenho... eu só não sei qual o nome do campo q eu passo pro itaú... não tem no manuais deles...
-
Boa noite... estou desenvolvendo um e-commerce (meu primeiro) em php e estou fazendo a integração do site com o shopline do itaú... beleza.. consegui comunicar... enviar os dados e tudo mais... minha dúvida é a seguinte: alguém sabe como enviar ao shopline o tipo de pagamento já pré definido... se eu quero boleto ou débito em conta? obrigada