/** * @param string|SimpleXMLElement $content * * @return \Realejo\Ofx\SignOn */ public static function parse($content) { // Verifica se é um string if (is_string($content)) { $content = \Realejo\Ofx\Parser::makeXML($content); } $SignOn = new SignOn(); // Verifica se existe o bloco de SignOn $SIGNONMSGSRSV1 = $content->xpath('//SIGNONMSGSRSV1'); if (count($SIGNONMSGSRSV1) == 1) { // Verifica se exite a seção do request Signon $SONRQ = $content->xpath('//SIGNONMSGSRSV1/SONRQ'); if (count($SONRQ) == 1) { throw new \Exception('Signon request not implemented'); } // Verifica se exite a seção do response Signon $SONRS = $content->xpath('//SIGNONMSGSRSV1/SONRS'); if (count($SONRS) == 1) { $SONRS = $SONRS[0]; $response = new SignOnResponse(); $response->statusCode = (int) $SONRS->STATUS->CODE; $response->statusSeverity = $SONRS->STATUS->SEVERITY; $response->date = \Realejo\Ofx\Parser::parseDate($SONRS->DTSERVER); $response->language = $SONRS->LANGUAGE; $response->fiOrganization = $SONRS->FI->ORG; $response->fiUniqueId = $SONRS->FI->FID; $SignOn->setResponse($response); } // end if (count($SONRS) == 1) } //end if (count($SIGNONMSGSRSV1) == 1) return $SignOn; }
/** * @param string|SimpleXMLElement $content * * @return \Realejo\Ofx\Banking\Statement */ public static function parse($content) { // Verifica se é um string if (is_string($content)) { $content = \Realejo\Ofx\Parser::makeXML($content); } $Statement = new Statement(); // Verifica se exite a seção do Signon $request = $content->xpath('//SIGNONMSGSRSV1/SONRQ'); $SONRS = $content->xpath('//SIGNONMSGSRSV1/SONRS'); if (count($SONRS) == 1) { $SONRS = $SONRS[0]; $response = new StatementResponse(); $response->statusCode = (int) $SONRS->STATUS->CODE; $response->statusSeverity = $SONRS->STATUS->SEVERITY; $response->date = \Realejo\Ofx\Parser::parseDate($SONRS->DTSERVER); $response->language = $SONRS->LANGUAGE; $response->fiOrganization = \Realejo\Ofx\Parser::parseDate($SONRS->FI->ORG); $response->fiUniqueId = \Realejo\Ofx\Parser::parseDate($SONRS->FI->FID); $Statement->setResponse($response); } return $Statement; }
public function testParseXml() { $parsed = $this->Parser->makeXML('<TAG>complete</TAG>'); $this->assertInstanceOf('\\SimpleXMLElement', $parsed); $this->assertEquals('complete', $parsed->TAG); $parsed = $this->Parser->makeXML('<TAG> complete </TAG>'); $this->assertInstanceOf('\\SimpleXMLElement', $parsed); $this->assertEquals('complete', $parsed->TAG); $parsed = $this->Parser->makeXML(' <TAG>complete</TAG> '); $this->assertInstanceOf('\\SimpleXMLElement', $parsed); $this->assertEquals('complete', $parsed->TAG); $parsed = $this->Parser->makeXML(' <TAG> complete </TAG> '); $this->assertInstanceOf('\\SimpleXMLElement', $parsed); $this->assertEquals('complete', $parsed->TAG); $parsed = $this->Parser->makeXML('<TAG>complete</TAG>'); $this->assertInstanceOf('\\SimpleXMLElement', $parsed); $this->assertEquals('complete', $parsed->TAG); $parsed = $this->Parser->makeXML('<TAG>incomplete'); $this->assertInstanceOf('\\SimpleXMLElement', $parsed); $this->assertEquals('incomplete', $parsed->TAG); }
/** * * @param string|SimpleXMLElement $content * * @return \Realejo\Ofx\Banking\Balance */ public static function parseAvailableBalance($content) { // Verifica se é um string if (is_string($content)) { $content = \Realejo\Ofx\Parser::makeXML($content); } $balance = new Balance(); $AVAILBAL = $content->xpath('//AVAILBAL'); if (count($AVAILBAL) > 0) { $AVAILBAL = $AVAILBAL[0]; $balance->amount = isset($AVAILBAL->BALAMT) ? (double) $AVAILBAL->BALAMT : null; $balance->dateAsOf = isset($AVAILBAL->DTASOF) ? OfxParser::parseDate($AVAILBAL->DTASOF) : null; } // end if (count($AVAILBAL) == 1) return $balance; }
/** * Tests SignOn::parse() */ public function testParseResponse() { $xml = '<OFX> <SIGNONMSGSRSV1> <SONRS> <STATUS> <CODE>0</CODE> <SEVERITY>INFO</SEVERITY> </STATUS> <DTSERVER>20141230120000[-3:BRT]</DTSERVER> <LANGUAGE>POR</LANGUAGE> <FI> <ORG>Banco do Brasil</ORG> <FID>1</FID> </FI> </SONRS> </SIGNONMSGSRSV1> </OFX>'; $signon = SignOn::parse($xml); $this->assertInstanceOf('\\Realejo\\Ofx\\SignOn', $signon); $this->assertInstanceOf('\\Realejo\\Ofx\\SignOn\\Response', $signon->getResponse()); $this->assertNull($signon->getRequest()); $this->assertNotNull($signon->getResponse()->statusCode); $this->assertEquals(0, $signon->getResponse()->statusCode); $this->assertEquals('INFO', $signon->getResponse()->statusSeverity); $this->assertEquals('2014-12-30', $signon->getResponse()->date->format('Y-m-d')); $this->assertEquals('POR', $signon->getResponse()->language); $this->assertEquals('Banco do Brasil', $signon->getResponse()->fiOrganization); $this->assertEquals('1', $signon->getResponse()->fiUniqueId); $xml = \Realejo\Ofx\Parser::makeXML($xml); // Os mesmos testes acima $signon = SignOn::parse($xml); $this->assertInstanceOf('\\Realejo\\Ofx\\SignOn', $signon); $this->assertInstanceOf('\\Realejo\\Ofx\\SignOn\\Response', $signon->getResponse()); $this->assertNull($signon->getRequest()); $this->assertNotNull($signon->getResponse()->statusCode); $this->assertEquals(0, $signon->getResponse()->statusCode); $this->assertEquals('INFO', $signon->getResponse()->statusSeverity); $this->assertEquals('2014-12-30', $signon->getResponse()->date->format('Y-m-d')); $this->assertEquals('POR', $signon->getResponse()->language); $this->assertEquals('Banco do Brasil', $signon->getResponse()->fiOrganization); $this->assertEquals('1', $signon->getResponse()->fiUniqueId); // Testes com XML invalido // SEM OFX $xml = ' <SIGNONMSGSRSV1> <SONRS> <STATUS> <CODE>0</CODE> <SEVERITY>INFO</SEVERITY> </STATUS> <DTSERVER>20141230120000[-3:BRT]</DTSERVER> <LANGUAGE>POR</LANGUAGE> <FI> <ORG>Banco do Brasil</ORG> <FID>1</FID> </FI> </SONRS> </SIGNONMSGSRSV1> '; $signon = SignOn::parse($xml); $this->assertInstanceOf('\\Realejo\\Ofx\\SignOn', $signon); $this->assertInstanceOf('\\Realejo\\Ofx\\SignOn\\Response', $signon->getResponse()); $this->assertNull($signon->getRequest()); // Testes com XML invalido // SEM OFX e SIGNONMSGSRSV1 $xml = ' <SONRS> <STATUS> <CODE>0</CODE> <SEVERITY>INFO</SEVERITY> </STATUS> <DTSERVER>20141230120000[-3:BRT]</DTSERVER> <LANGUAGE>POR</LANGUAGE> <FI> <ORG>Banco do Brasil</ORG> <FID>1</FID> </FI> </SONRS> '; $signon = SignOn::parse($xml); $this->assertInstanceOf('\\Realejo\\Ofx\\SignOn', $signon); $this->assertNull($signon->getResponse()); $this->assertNull($signon->getRequest()); // Testes com XML invalido // SEM SIGNONMSGSRSV1 $xml = '<OFX> <SONRS> <STATUS> <CODE>0</CODE> <SEVERITY>INFO</SEVERITY> </STATUS> <DTSERVER>20141230120000[-3:BRT]</DTSERVER> <LANGUAGE>POR</LANGUAGE> <FI> <ORG>Banco do Brasil</ORG> <FID>1</FID> </FI> </SONRS> </OFX> '; $signon = SignOn::parse($xml); $this->assertInstanceOf('\\Realejo\\Ofx\\SignOn', $signon); $this->assertNull($signon->getResponse()); $this->assertNull($signon->getRequest()); }