示例#1
0
文件: Parser.php 项目: realejo/ofx
 /**
  * @param string $content
  *
  * @return \Realejo\Ofx\Ofx
  */
 public static function createFromString($content)
 {
     $content = explode('<OFX>', $content);
     // Cria o objeto Ofx
     $ofx = new Ofx();
     // Define os headers do OFX
     $ofx->setHeaders(self::parseHeaders(trim($content[0])));
     // Verifica se há mais coisda além do header
     if (!isset($content[1])) {
         return $ofx;
     }
     // Define o conteúdo SGML do OFX
     $xmlContent = '<OFX>' . $content[1];
     // Fix encoding
     $currentEncoding = $ofx->getHeader('ENCODING');
     if ($currentEncoding == 'USASCII') {
         $currentEncoding = 'ASCII';
     }
     if (!empty($currentEncoding) && $currentEncoding !== 'UTF-8') {
         $xmlContent = mb_convert_encoding($xmlContent, 'UTF-8', $currentEncoding);
     }
     // Cria o XML
     $xml = self::makeXML($xmlContent);
     $parse = SignOn::parse($xml);
     if (!empty($parse)) {
         $ofx->setSignOn($parse);
     }
     //$ofx->setSignup($this->parseSignup());
     $parse = BankingParser::parse($xml);
     if (!empty($parse)) {
         $ofx->setBanking($parse);
     }
     //$ofx->setInvestment($this->parseInvestment());
     //$ofx->setInterbank($this->parseInterbank());
     //$ofx->setWireFundsTransfers($this->parseWireFundsTransfers());
     //$ofx->setPayments($this->parsePayments());
     //$ofx->setGeneralEmail($this->parseGeneralEmail());
     //$ofx->setInvestmentSecurity($this->parseInvestmentSecurity());
     //$ofx->setFIProfile($this->parseFIProfile());
     return $ofx;
 }
示例#2
0
    /**
     * Tests Parser->parse()
     */
    public function testCreditcardResponseParse()
    {
        $creditcard = '
<CREDITCARDMSGSRSV1>
<CCSTMTTRNRS>
<TRNUID>1</TRNUID>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<CCSTMTRS>
<CURDEF>BRL</CURDEF>
<CCACCTFROM><ACCTID>
9753648514651548
</ACCTID></CCACCTFROM>
<BANKTRANLIST>
<DTSTART>20140307</DTSTART>
<DTEND>20141110</DTEND>
<STMTTRN>
<TRNTYPE>PAYMENT</TRNTYPE>
<DTPOSTED>20141027</DTPOSTED>
<TRNAMT>1234.56</TRNAMT>
<FITID>2014102749845371082027410000000000</FITID>
<MEMO>PGTO DEBITO CONTA 666 000007108  200</MEMO>
</STMTTRN>
<STMTTRN>
<TRNTYPE>PAYMENT</TRNTYPE>
<DTPOSTED>20141017</DTPOSTED>
<TRNAMT>54.50</TRNAMT>
<FITID>2014101749845371082027410000000001</FITID>
<MEMO>Bla bla bla</MEMO>
</STMTTRN>
<STMTTRN>
<TRNTYPE>PAYMENT</TRNTYPE>
<DTPOSTED>20141019</DTPOSTED>
<TRNAMT>-89.80</TRNAMT>
<FITID>2014101949845371082027410000000002</FITID>
<MEMO>Outro Bla bla bla</MEMO>
</STMTTRN>
<STMTTRN>
<TRNTYPE>PAYMENT</TRNTYPE>
<DTPOSTED>20141026</DTPOSTED>
<TRNAMT>-34.30</TRNAMT>
<FITID>2014102649845371082027410000000008</FITID>
<MEMO>Mais um bla bla bla</MEMO>
</STMTTRN>
<STMTTRN>
<TRNTYPE>PAYMENT</TRNTYPE>
<DTPOSTED>20141025</DTPOSTED>
<TRNAMT>-55.91</TRNAMT>
<FITID>2014102549845371082027410000000013</FITID>
<MEMO>E mais um bla bla bla</MEMO>
</STMTTRN>
</BANKTRANLIST>
<LEDGERBAL>
<BALAMT>-1225.47</BALAMT>
<DTASOF>20141125</DTASOF>
</LEDGERBAL>
</CCSTMTRS>
</CCSTMTTRNRS>
</CREDITCARDMSGSRSV1>
';
        $creditcard = $this->Parser->parse($creditcard);
        $this->assertInstanceOf('Realejo\\Ofx\\Banking\\Banking', $creditcard);
        $this->assertInstanceOf('Realejo\\Ofx\\Banking\\Statement', $creditcard->getStatement());
        $response = $creditcard->getStatement()->getResponse();
        $this->assertInstanceOf('Realejo\\Ofx\\Banking\\Statement\\Response', $response);
        $this->assertEquals('BRL', $response->currency);
        $this->assertNull($response->getBankAccount(), 'não é banco');
        $creditcardAccount = $response->getCreditcardAccount();
        $this->assertInstanceOf('Realejo\\Ofx\\Banking\\CreditcardAccount', $creditcardAccount);
        $this->assertEquals('9753648514651548', $creditcardAccount->accountId);
        $this->assertNull($creditcardAccount->accountKey);
        $transactionList = $response->getTransactionList();
        $this->assertInstanceOf('Realejo\\Ofx\\Banking\\TransactionList', $transactionList);
        $this->assertEquals('2014-03-07', $transactionList->dateStart->format('Y-m-d'));
        $this->assertEquals('2014-11-10', $transactionList->dateEnd->format('Y-m-d'));
        $this->assertCount(5, $transactionList);
        $transaction = $transactionList[0];
        $this->assertEquals('PAYMENT', $transaction->type);
        $this->assertEquals('2014-10-27', $transaction->datePosted->format('Y-m-d'));
        $this->assertEquals(1234.56, $transaction->amount);
        $this->assertEquals('2014102749845371082027410000000000', $transaction->fitId);
        $this->assertNull($transaction->checkNumber);
        $this->assertNull($transaction->referenceNumber);
        $this->assertEquals('PGTO DEBITO CONTA 666 000007108  200', $transaction->memo);
        $transaction = $transactionList[4];
        $this->assertEquals('PAYMENT', $transaction->type);
        $this->assertEquals('2014-10-25', $transaction->datePosted->format('Y-m-d'));
        $this->assertEquals(-55.91, $transaction->amount);
        $this->assertEquals('2014102549845371082027410000000013', $transaction->fitId);
        $this->assertNull($transaction->checkNumber);
        $this->assertNull($transaction->referenceNumber);
        $this->assertEquals('E mais um bla bla bla', $transaction->memo);
        $ledger = $response->getLedgerBalance();
        $this->assertInstanceOf('Realejo\\Ofx\\Banking\\Balance', $ledger);
        $this->assertEquals('-1225.47', $ledger->amount);
        $this->assertEquals(-1225.47, $ledger->amount);
        $this->assertEquals('2014-11-25', $ledger->dateAsOf->format('Y-m-d'));
        $this->assertNull($response->getAvailableBalance());
    }