Ir para conteúdo

Emerson Rodrigo

Members
  • Total de itens

    19
  • Registro em

  • Última visita

Reputação

4 Comum

2 Seguidores

Sobre Emerson Rodrigo

  • Classificação
    Analista Desenvolvedor PHP
  • Data de Nascimento 01/09/1989

Informações Pessoais

  • Sexo
    Masculino

Contato

  • Site Pessoal
    http://www.webagille.com.br

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

  1. Emerson Rodrigo

    Leitura de Arquivos OFX com PHP

    Pra quem está tento problemas com a codificação do arquivo OFX altere a linha $content = file_get_contents($this->ofxFile); para: $content = utf8_decode(file_get_contents($this->ofxFile)); isso deve resolver
  2. Emerson Rodrigo

    Leitura de Arquivos OFX com PHP

    Fala pessoal! Hoje precisei criar uma rotina para importação de arquivos OFX, aqueles que são usados para fazer integração bancária. Esse arquivos nada mais são do que o extrato bancário em um formato universal para integração com vários tipos de sistemas e linguagens de programação. Como não é uma coisa que se acha fácil por ai, resolvi postar e deixar disponível para quem precisar. Código do arquivo Ofx.php <?phpclass Ofx { private $ofxFile; public function __construct($ofxFile) { $this->ofxFile = $ofxFile; } /* * Converte o arquivo OFX para XML */ public function getOfxAsXML() { $content = file_get_contents($this->ofxFile); $line = strpos($content, "<OFX>"); $ofx = substr($content, $line - 1); $buffer = $ofx; $count = 0; while ($pos = strpos($buffer, '<')) { $count++; $pos2 = strpos($buffer, '>'); $element = substr($buffer, $pos + 1, $pos2 - $pos - 1); if (substr($element, 0, 1) == '/') $sla[] = substr($element, 1); else $als[] = $element; $buffer = substr($buffer, $pos2 + 1); } $adif = array_diff($als, $sla); $adif = array_unique($adif); $ofxy = $ofx; foreach ($adif as $dif) { $dpos = 0; while ($dpos = strpos($ofxy, $dif, $dpos + 1)) { $npos = strpos($ofxy, '<', $dpos + 1); $ofxy = substr_replace($ofxy, "</$dif>\n<", $npos, 1); $dpos = $npos + strlen($element) + 3; } } $ofxy = str_replace('&', '&', $ofxy); return $ofxy; } /* * Retorna o Saldo da conta na data de exportação do extrato */ public function getBalance() { $xml = new SimpleXMLElement($this->getOfxAsXML()); $balance = $xml->BANKMSGSRSV1->STMTTRNRS->STMTRS->LEDGERBAL->BALAMT; $dateOfBalance = $xml->BANKMSGSRSV1->STMTTRNRS->STMTRS->LEDGERBAL->DTASOF; $date = strtotime(substr($dateOfBalance, 0, 8)); $dateToReturn = date('Y-m-d', $date); return Array('date' => $dateToReturn, 'balance' => $balance); } /* * Retora um array de objetos com as transações * * DTPOSTED => Data da Transação * TRNAMT => Valor da Transação * TRNTYPE => Tipo da Transação (Débito ou Crédito) * MEMO => Descrição da transação */ public function getTransactions() { $xml = new SimpleXMLElement($this->getOfxAsXML()); $transactions = $xml->BANKMSGSRSV1->STMTTRNRS->STMTRS->BANKTRANLIST->STMTTRN; return $transactions; }} Exemplo de utilização: <?phprequire_once 'Ofx.php';$ofx = new Ofx('extrato.ofx');$saldo = $ofx->getBalance();?><html> <head> <title>Transações</title> </head> <body> <h1>Seu saldo em <?php echo date("d/m/Y", strtotime($saldo['date'])); ?> é de R$ <?echo $saldo['balance']; ?></h1> <h2>Transações</h2> <table border="1" cellpadding="3" cellspacing="0"> <thead> <tr> <th>Data</th> <th>Descrição</th> <th>Tipo</th> <th>Valor</th> </tr> </thead> <tbody> <?php foreach ($ofx->getTransactions() as $transaction) : ?> <tr> <td><?php echo date("Y-m-d", strtotime(substr($transaction->DTPOSTED, 0, 8))); ?></td> <td><?php echo $transaction->MEMO; ?></td> <td><?php echo $transaction->TRNTYPE; ?></td> <td><?php echo $transaction->TRNAMT; ?></td> </tr> <?php endforeach; ?> </tbody> </table> </body></html> É isso ai, espero que seja útil!
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.