Ir para conteúdo
estilovirtual

Comunicação com webservice caixa boleto

Recommended Posts

Boa tarde pessoal, gostaria de tirar uma dúvida aqui, preciso implementar com PHP em um sistema o envio e leitura dos dados de um webservice, no caso da CAIXA para emissão de boletos, foi me passado os parametros que precisam ser enviados em SOAP/XML mas de qualquer forma que testo nao me retorna a resposta em XML como me foi mostrado através do software SOAP UI. 

 

Tentei também com CURL mas não obtive exito.

 

Estou testando com new soapclient do php enviando o xml como string e como anexo mas não funciona, tenho o endereço do servidor para testes.

 

Da forma que estou testando é a abaixo:

$mensagem = ".................";

 $curl = curl_init();
        if ( is_resource( $curl ) ){
                curl_setopt( $curl , CURLOPT_HEADER , 0 );
                curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER, 0);
                curl_setopt( $curl , CURLOPT_RETURNTRANSFER , 1 );
                curl_setopt( $curl , CURLOPT_FOLLOWLOCATION , 1 );
                curl_setopt( $curl , CURLOPT_URL , 'https://barramento.caixa.gov.br/sibar/ManutencaoCobrancaBancaria/Boleto/Externo?wsdl' );
                curl_setopt( $curl , CURLOPT_POST , 1 );
                curl_setopt( $curl , CURLOPT_POSTFIELDS , http_build_query( array( 'mensagem' => $mensagem ) ) );
                $xml = curl_exec( $curl ); $ern = curl_errno( $curl ); $err = curl_error( $curl );
                curl_close( $curl );
                if ( (bool) $ern ){
                                echo 'Opz, ocorreu um erro[' , $ern , ']: ' , $err;
                } else {
                                $DadosEnvio= simplexml_load_string($xml);
                                echo ($DadosEnvio->asXML())."<hr>";
                                
                        }
}

 

Editado por Gabriel Heming
adicionar marcação de código

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use diretamente a biblioteca SOAP do PHP.

 

20 horas atrás, estilovirtual disse:

Estou testando com new soapclient do php enviando o xml como string e como anexo mas não funciona, tenho o endereço do servidor para testes.

 

Quando você utiliza SoapClient, não deve se preocupar com o envio de XML (pois, ele nem deve ser enviado) e sim em enviar os parâmtros do web service.

 

Basicamente, se o XML possuir apenas um node, com um valor, você deve enviar esse valor diretamente.

<methodWS> <!-- nome do método -->
    <firstParameter xmlns="">  <!-- primeiro parâmetro -->
    </firstParameter> 
  
    <secondParameter xmlns="">  <!-- segundo parâmetro -->
    </secondParameter> 
</methodWS>

Uso:

$response = $cliente->methodWS("primeiro parâmetro" , "segundo parâmetro");

E, caso um nó possui um nó interno, pode-se utilizar um array, stdClass ou uma classe mapeada.

 

No link abaixo há um exemplo um pouco mais complexo.

 

 

Editado por Gabriel Heming
complementar resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Gabriel bom dia, obrigado pela resposta. Já me ajudou bastante, mas como não mexo muito com este tipo de integração, ainda estou com algumas dúvidas, fiz algumas pesquisas e veja se estou no caminho certo:

 

Baseado nisso que você falou se entendo corretamente, preciso passar os parametros como array correto?

 

Pesquisando aqui a respeito com soapclient, estava testando com o código abaixo:

 

<?php
require_once('lib/nusoap.php');
$proxyhost = isset($_POST['proxyhost']) ? $_POST['proxyhost'] : '';
$proxyport = isset($_POST['proxyport']) ? $_POST['proxyport'] : '';
$proxyusername = isset($_POST['proxyusername']) ? $_POST['proxyusername'] : '';
$proxypassword = isset($_POST['proxypassword']) ? $_POST['proxypassword'] : '';
$useCURL = isset($_POST['usecurl']) ? $_POST['usecurl'] : '0';
//$client = new nusoap_client("https://barramento.caixa.gov.br/sibar/ManutencaoCobrancaBancaria/Boleto/Externo", false,$proxyhost, $proxyport, $proxyusername, $proxypassword);
$client = new nusoap_client("https://barramento.caixa.gov.br/sibar/ManutencaoCobrancaBancaria/Boleto/Externo", false);
$err = $client->getError();
if ($err) {
	echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
	echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>';
	exit();
}
$client->setUseCurl($useCURL);
$client->soap_defencoding = 'UTF-8';

$params = array(
	'versao'=>'1.0',
	'autenticacao'=>'wIXyzrhD7HjlrpCP1xNnq8vFE7ggAGuz/srw1BOtxDY=',
	'operacao'=>'INCLUI_BOLETO',
	'sistema_origem'=>'SIGCB',
	'data_hora'=>'20171129080311'
);
$result = $client->call("INCLUI_BOLETO", $params, "urn:caixa", "urn:caixa");
if ($client->fault) {
	echo '<h2>Fault</h2><pre>'; print_r($result); echo '</pre>';
} else {
	$err = $client->getError();
	if ($err) {
		echo '<h2>Erro</h2><pre>' . $err . '</pre>';
	} else {
		echo '<h2>Resultado</h2><pre>'; print_r($result); echo '</pre>';
	}
}
echo '<h2>Request</h2><pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>';
?>

Neste exemplo, tem alguns parametros a respeito de proxy, ao meu ver nas pesquisas que fiz não precisaria enviar parametros de proxy correto? Então repliquei a linha e mantive uma abaixo sem os parametros de proxy.

 

Nos dados enviados coloquei apenas alguns que o WS pede para verificar a resposta que me é retornada, mas sempre vem erro de proxy.

 

Estou fazendo algo errado? Preciso mesmo passar os dados de proxy ou o WS que tem algum problema na resposta?

 

Alan

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não utilize nusoap, utilize Soap. Nusoap foi desenvolvido para o PHP 4, Soap faz parte do PHP 5.


Ao WS, essa é a chamada gerada através do SOAP UI:

Spoiler



<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ext="http://caixa.gov.br/sibar/manutencao_cobranca_bancaria/boleto/externo" xmlns:sib="http://caixa.gov.br/sibar">
   <soapenv:Header/>
   <soapenv:Body>
      <ext:SERVICO_ENTRADA>
         <sib:HEADER>
            <VERSAO>?</VERSAO>
            <!--Optional:-->
            <AUTENTICACAO>?</AUTENTICACAO>
            <!--Optional:-->
            <USUARIO_SERVICO>?</USUARIO_SERVICO>
            <!--Optional:-->
            <USUARIO>?</USUARIO>
            <OPERACAO>?</OPERACAO>
            <!--Optional:-->
            <INDICE>?</INDICE>
            <!--Optional:-->
            <SISTEMA_ORIGEM>?</SISTEMA_ORIGEM>
            <!--Optional:-->
            <UNIDADE>?</UNIDADE>
            <!--Optional:-->
            <IDENTIFICADOR_ORIGEM>?</IDENTIFICADOR_ORIGEM>
            <DATA_HORA>?</DATA_HORA>
            <!--Optional:-->
            <ID_PROCESSO>?</ID_PROCESSO>
         </sib:HEADER>
         <DADOS>
            <!--You have a CHOICE of the next 3 items at this level-->
            <INCLUI_BOLETO>
               <CODIGO_BENEFICIARIO>?</CODIGO_BENEFICIARIO>
               <TITULO>
                  <!--Optional:-->
                  <NOSSO_NUMERO>?</NOSSO_NUMERO>
                  <NUMERO_DOCUMENTO>?</NUMERO_DOCUMENTO>
                  <DATA_VENCIMENTO>?</DATA_VENCIMENTO>
                  <VALOR>?</VALOR>
                  <TIPO_ESPECIE>?</TIPO_ESPECIE>
                  <FLAG_ACEITE>?</FLAG_ACEITE>
                  <!--Optional:-->
                  <DATA_EMISSAO>?</DATA_EMISSAO>
                  <JUROS_MORA>
                     <TIPO>?</TIPO>
                     <!--Optional:-->
                     <DATA>?</DATA>
                     <!--You have a CHOICE of the next 2 items at this level-->
                     <VALOR>?</VALOR>
                     <PERCENTUAL>?</PERCENTUAL>
                  </JUROS_MORA>
                  <!--Optional:-->
                  <VALOR_ABATIMENTO>?</VALOR_ABATIMENTO>
                  <POS_VENCIMENTO>
                     <ACAO>?</ACAO>
                     <NUMERO_DIAS>?</NUMERO_DIAS>
                  </POS_VENCIMENTO>
                  <CODIGO_MOEDA>?</CODIGO_MOEDA>
                  <PAGADOR>
                     <!--You have a CHOICE of the next 2 items at this level-->
                     <CPF>?</CPF>
                     <NOME>?</NOME>
                     <CNPJ>?</CNPJ>
                     <RAZAO_SOCIAL>?</RAZAO_SOCIAL>
                     <!--Optional:-->
                     <ENDERECO>
                        <LOGRADOURO>?</LOGRADOURO>
                        <BAIRRO>?</BAIRRO>
                        <CIDADE>?</CIDADE>
                        <UF>?</UF>
                        <CEP>?</CEP>
                     </ENDERECO>
                  </PAGADOR>
                  <!--Optional:-->
                  <SACADOR_AVALISTA>
                     <!--You have a CHOICE of the next 2 items at this level-->
                     <CPF>?</CPF>
                     <NOME>?</NOME>
                     <CNPJ>?</CNPJ>
                     <RAZAO_SOCIAL>?</RAZAO_SOCIAL>
                  </SACADOR_AVALISTA>
                  <!--Optional:-->
                  <MULTA>
                     <DATA>?</DATA>
                     <!--You have a CHOICE of the next 2 items at this level-->
                     <VALOR>?</VALOR>
                     <PERCENTUAL>?</PERCENTUAL>
                  </MULTA>
                  <!--Optional:-->
                  <DESCONTOS>
                     <!--1 to 3 repetitions:-->
                     <DESCONTO>
                        <DATA>?</DATA>
                        <!--You have a CHOICE of the next 2 items at this level-->
                        <VALOR>?</VALOR>
                        <PERCENTUAL>?</PERCENTUAL>
                     </DESCONTO>
                  </DESCONTOS>
                  <!--Optional:-->
                  <VALOR_IOF>?</VALOR_IOF>
                  <!--Optional:-->
                  <IDENTIFICACAO_EMPRESA>?</IDENTIFICACAO_EMPRESA>
                  <!--Optional:-->
                  <FICHA_COMPENSACAO>
                     <MENSAGENS>
                        <!--1 to 2 repetitions:-->
                        <MENSAGEM>?</MENSAGEM>
                     </MENSAGENS>
                  </FICHA_COMPENSACAO>
                  <!--Optional:-->
                  <RECIBO_PAGADOR>
                     <MENSAGENS>
                        <!--1 to 4 repetitions:-->
                        <MENSAGEM>?</MENSAGEM>
                     </MENSAGENS>
                  </RECIBO_PAGADOR>
                  <!--Optional:-->
                  <PAGAMENTO>
                     <QUANTIDADE_PERMITIDA>?</QUANTIDADE_PERMITIDA>
                     <TIPO>?</TIPO>
                     <!--You have a CHOICE of the next 2 items at this level-->
                     <VALOR_MINIMO>?</VALOR_MINIMO>
                     <VALOR_MAXIMO>?</VALOR_MAXIMO>
                     <PERCENTUAL_MINIMO>?</PERCENTUAL_MINIMO>
                     <PERCENTUAL_MAXIMO>?</PERCENTUAL_MAXIMO>
                  </PAGAMENTO>
               </TITULO>
            </INCLUI_BOLETO>
            <BAIXA_BOLETO>
               <CODIGO_BENEFICIARIO>?</CODIGO_BENEFICIARIO>
               <NOSSO_NUMERO>?</NOSSO_NUMERO>
            </BAIXA_BOLETO>
            <ALTERA_BOLETO>
               <CODIGO_BENEFICIARIO>?</CODIGO_BENEFICIARIO>
               <TITULO>
                  <NOSSO_NUMERO>?</NOSSO_NUMERO>
                  <!--Optional:-->
                  <NUMERO_DOCUMENTO>?</NUMERO_DOCUMENTO>
                  <!--Optional:-->
                  <DATA_VENCIMENTO>?</DATA_VENCIMENTO>
                  <!--Optional:-->
                  <VALOR>?</VALOR>
                  <!--Optional:-->
                  <TIPO_ESPECIE>?</TIPO_ESPECIE>
                  <!--Optional:-->
                  <FLAG_ACEITE>?</FLAG_ACEITE>
                  <!--Optional:-->
                  <JUROS_MORA>
                     <!--Optional:-->
                     <TIPO>?</TIPO>
                     <!--Optional:-->
                     <DATA>?</DATA>
                     <!--You have a CHOICE of the next 2 items at this level-->
                     <!--Optional:-->
                     <VALOR>?</VALOR>
                     <!--Optional:-->
                     <PERCENTUAL>?</PERCENTUAL>
                  </JUROS_MORA>
                  <!--Optional:-->
                  <VALOR_ABATIMENTO>?</VALOR_ABATIMENTO>
                  <!--Optional:-->
                  <POS_VENCIMENTO>
                     <!--Optional:-->
                     <ACAO>?</ACAO>
                     <!--Optional:-->
                     <NUMERO_DIAS>?</NUMERO_DIAS>
                  </POS_VENCIMENTO>
                  <!--Optional:-->
                  <PAGADOR>
                     <!--You have a CHOICE of the next 2 items at this level-->
                     <!--Optional:-->
                     <NOME>?</NOME>
                     <!--Optional:-->
                     <RAZAO_SOCIAL>?</RAZAO_SOCIAL>
                     <!--Optional:-->
                     <ENDERECO>
                        <!--Optional:-->
                        <LOGRADOURO>?</LOGRADOURO>
                        <!--Optional:-->
                        <BAIRRO>?</BAIRRO>
                        <!--Optional:-->
                        <CIDADE>?</CIDADE>
                        <!--Optional:-->
                        <UF>?</UF>
                        <!--Optional:-->
                        <CEP>?</CEP>
                     </ENDERECO>
                  </PAGADOR>
                  <!--Optional:-->
                  <SACADOR_AVALISTA>
                     <!--You have a CHOICE of the next 2 items at this level-->
                     <!--Optional:-->
                     <CPF>?</CPF>
                     <!--Optional:-->
                     <NOME>?</NOME>
                     <!--Optional:-->
                     <CNPJ>?</CNPJ>
                     <!--Optional:-->
                     <RAZAO_SOCIAL>?</RAZAO_SOCIAL>
                  </SACADOR_AVALISTA>
                  <!--Optional:-->
                  <MULTA>
                     <!--Optional:-->
                     <DATA>?</DATA>
                     <!--You have a CHOICE of the next 2 items at this level-->
                     <!--Optional:-->
                     <VALOR>?</VALOR>
                     <!--Optional:-->
                     <PERCENTUAL>?</PERCENTUAL>
                  </MULTA>
                  <!--Optional:-->
                  <DESCONTOS>
                     <!--1 to 3 repetitions:-->
                     <DESCONTO>
                        <!--Optional:-->
                        <DATA>?</DATA>
                        <!--You have a CHOICE of the next 2 items at this level-->
                        <!--Optional:-->
                        <VALOR>?</VALOR>
                        <!--Optional:-->
                        <PERCENTUAL>?</PERCENTUAL>
                     </DESCONTO>
                  </DESCONTOS>
                  <!--Optional:-->
                  <VALOR_IOF>?</VALOR_IOF>
                  <!--Optional:-->
                  <IDENTIFICACAO_EMPRESA>?</IDENTIFICACAO_EMPRESA>
                  <!--Optional:-->
                  <FICHA_COMPENSACAO>
                     <MENSAGENS>
                        <!--1 to 2 repetitions:-->
                        <MENSAGEM>?</MENSAGEM>
                     </MENSAGENS>
                  </FICHA_COMPENSACAO>
                  <!--Optional:-->
                  <RECIBO_PAGADOR>
                     <MENSAGENS>
                        <!--1 to 4 repetitions:-->
                        <MENSAGEM>?</MENSAGEM>
                     </MENSAGENS>
                  </RECIBO_PAGADOR>
                  <!--Optional:-->
                  <PAGAMENTO>
                     <!--Optional:-->
                     <QUANTIDADE_PERMITIDA>?</QUANTIDADE_PERMITIDA>
                     <!--Optional:-->
                     <TIPO>?</TIPO>
                     <!--You have a CHOICE of the next 2 items at this level-->
                     <!--Optional:-->
                     <VALOR_MINIMO>?</VALOR_MINIMO>
                     <!--Optional:-->
                     <VALOR_MAXIMO>?</VALOR_MAXIMO>
                     <!--Optional:-->
                     <PERCENTUAL_MINIMO>?</PERCENTUAL_MINIMO>
                     <!--Optional:-->
                     <PERCENTUAL_MAXIMO>?</PERCENTUAL_MAXIMO>
                  </PAGAMENTO>
               </TITULO>
            </ALTERA_BOLETO>
         </DADOS>
      </ext:SERVICO_ENTRADA>
   </soapenv:Body>
</soapenv:Envelope>


 

 

A seguinte parte do XML é padrão:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ext="http://caixa.gov.br/sibar/manutencao_cobranca_bancaria/boleto/externo" xmlns:sib="http://caixa.gov.br/sibar">
   <soapenv:Header/>
   <soapenv:Body>
      
   </soapenv:Body>
</soapenv:Envelope>

Logo em seguida existe o parâmetro único do método (SERVICO_ENTRADA) e não há menção ao nome do método. Isso é porque o WSDL é do estilo Document e Literal. Para saber um pouco mais: 

https://www.ibm.com/developerworks/library/ws-whichwsdl/

https://stackoverflow.com/questions/9062475/what-is-the-difference-between-document-style-and-rpc-style-communication

 

Dessa forma, você deve passar apenas um parâmetro seguindo a estrutura de atributos dele.

 

Spoiler

<ext:SERVICO_ENTRADA>
	 <sib:HEADER>
		<VERSAO>?</VERSAO>
		<!--Optional:-->
		<AUTENTICACAO>?</AUTENTICACAO>
		<!--Optional:-->
		<USUARIO_SERVICO>?</USUARIO_SERVICO>
		<!--Optional:-->
		<USUARIO>?</USUARIO>
		<OPERACAO>?</OPERACAO>
		<!--Optional:-->
		<INDICE>?</INDICE>
		<!--Optional:-->
		<SISTEMA_ORIGEM>?</SISTEMA_ORIGEM>
		<!--Optional:-->
		<UNIDADE>?</UNIDADE>
		<!--Optional:-->
		<IDENTIFICADOR_ORIGEM>?</IDENTIFICADOR_ORIGEM>
		<DATA_HORA>?</DATA_HORA>
		<!--Optional:-->
		<ID_PROCESSO>?</ID_PROCESSO>
	 </sib:HEADER>
	 <DADOS>
		<!--You have a CHOICE of the next 3 items at this level-->
		<INCLUI_BOLETO>
		   <CODIGO_BENEFICIARIO>?</CODIGO_BENEFICIARIO>
		   <TITULO>
			  <!--Optional:-->
			  <NOSSO_NUMERO>?</NOSSO_NUMERO>
			  <NUMERO_DOCUMENTO>?</NUMERO_DOCUMENTO>
			  <DATA_VENCIMENTO>?</DATA_VENCIMENTO>
			  <VALOR>?</VALOR>
			  <TIPO_ESPECIE>?</TIPO_ESPECIE>
			  <FLAG_ACEITE>?</FLAG_ACEITE>
			  <!--Optional:-->
			  <DATA_EMISSAO>?</DATA_EMISSAO>
			  <JUROS_MORA>
				 <TIPO>?</TIPO>
				 <!--Optional:-->
				 <DATA>?</DATA>
				 <!--You have a CHOICE of the next 2 items at this level-->
				 <VALOR>?</VALOR>
				 <PERCENTUAL>?</PERCENTUAL>
			  </JUROS_MORA>
			  <!--Optional:-->
			  <VALOR_ABATIMENTO>?</VALOR_ABATIMENTO>
			  <POS_VENCIMENTO>
				 <ACAO>?</ACAO>
				 <NUMERO_DIAS>?</NUMERO_DIAS>
			  </POS_VENCIMENTO>
			  <CODIGO_MOEDA>?</CODIGO_MOEDA>
			  <PAGADOR>
				 <!--You have a CHOICE of the next 2 items at this level-->
				 <CPF>?</CPF>
				 <NOME>?</NOME>
				 <CNPJ>?</CNPJ>
				 <RAZAO_SOCIAL>?</RAZAO_SOCIAL>
				 <!--Optional:-->
				 <ENDERECO>
					<LOGRADOURO>?</LOGRADOURO>
					<BAIRRO>?</BAIRRO>
					<CIDADE>?</CIDADE>
					<UF>?</UF>
					<CEP>?</CEP>
				 </ENDERECO>
			  </PAGADOR>
			  <!--Optional:-->
			  <SACADOR_AVALISTA>
				 <!--You have a CHOICE of the next 2 items at this level-->
				 <CPF>?</CPF>
				 <NOME>?</NOME>
				 <CNPJ>?</CNPJ>
				 <RAZAO_SOCIAL>?</RAZAO_SOCIAL>
			  </SACADOR_AVALISTA>
			  <!--Optional:-->
			  <MULTA>
				 <DATA>?</DATA>
				 <!--You have a CHOICE of the next 2 items at this level-->
				 <VALOR>?</VALOR>
				 <PERCENTUAL>?</PERCENTUAL>
			  </MULTA>
			  <!--Optional:-->
			  <DESCONTOS>
				 <!--1 to 3 repetitions:-->
				 <DESCONTO>
					<DATA>?</DATA>
					<!--You have a CHOICE of the next 2 items at this level-->
					<VALOR>?</VALOR>
					<PERCENTUAL>?</PERCENTUAL>
				 </DESCONTO>
			  </DESCONTOS>
			  <!--Optional:-->
			  <VALOR_IOF>?</VALOR_IOF>
			  <!--Optional:-->
			  <IDENTIFICACAO_EMPRESA>?</IDENTIFICACAO_EMPRESA>
			  <!--Optional:-->
			  <FICHA_COMPENSACAO>
				 <MENSAGENS>
					<!--1 to 2 repetitions:-->
					<MENSAGEM>?</MENSAGEM>
				 </MENSAGENS>
			  </FICHA_COMPENSACAO>
			  <!--Optional:-->
			  <RECIBO_PAGADOR>
				 <MENSAGENS>
					<!--1 to 4 repetitions:-->
					<MENSAGEM>?</MENSAGEM>
				 </MENSAGENS>
			  </RECIBO_PAGADOR>
			  <!--Optional:-->
			  <PAGAMENTO>
				 <QUANTIDADE_PERMITIDA>?</QUANTIDADE_PERMITIDA>
				 <TIPO>?</TIPO>
				 <!--You have a CHOICE of the next 2 items at this level-->
				 <VALOR_MINIMO>?</VALOR_MINIMO>
				 <VALOR_MAXIMO>?</VALOR_MAXIMO>
				 <PERCENTUAL_MINIMO>?</PERCENTUAL_MINIMO>
				 <PERCENTUAL_MAXIMO>?</PERCENTUAL_MAXIMO>
			  </PAGAMENTO>
		   </TITULO>
		</INCLUI_BOLETO>
		<BAIXA_BOLETO>
		   <CODIGO_BENEFICIARIO>?</CODIGO_BENEFICIARIO>
		   <NOSSO_NUMERO>?</NOSSO_NUMERO>
		</BAIXA_BOLETO>
		<ALTERA_BOLETO>
		   <CODIGO_BENEFICIARIO>?</CODIGO_BENEFICIARIO>
		   <TITULO>
			  <NOSSO_NUMERO>?</NOSSO_NUMERO>
			  <!--Optional:-->
			  <NUMERO_DOCUMENTO>?</NUMERO_DOCUMENTO>
			  <!--Optional:-->
			  <DATA_VENCIMENTO>?</DATA_VENCIMENTO>
			  <!--Optional:-->
			  <VALOR>?</VALOR>
			  <!--Optional:-->
			  <TIPO_ESPECIE>?</TIPO_ESPECIE>
			  <!--Optional:-->
			  <FLAG_ACEITE>?</FLAG_ACEITE>
			  <!--Optional:-->
			  <JUROS_MORA>
				 <!--Optional:-->
				 <TIPO>?</TIPO>
				 <!--Optional:-->
				 <DATA>?</DATA>
				 <!--You have a CHOICE of the next 2 items at this level-->
				 <!--Optional:-->
				 <VALOR>?</VALOR>
				 <!--Optional:-->
				 <PERCENTUAL>?</PERCENTUAL>
			  </JUROS_MORA>
			  <!--Optional:-->
			  <VALOR_ABATIMENTO>?</VALOR_ABATIMENTO>
			  <!--Optional:-->
			  <POS_VENCIMENTO>
				 <!--Optional:-->
				 <ACAO>?</ACAO>
				 <!--Optional:-->
				 <NUMERO_DIAS>?</NUMERO_DIAS>
			  </POS_VENCIMENTO>
			  <!--Optional:-->
			  <PAGADOR>
				 <!--You have a CHOICE of the next 2 items at this level-->
				 <!--Optional:-->
				 <NOME>?</NOME>
				 <!--Optional:-->
				 <RAZAO_SOCIAL>?</RAZAO_SOCIAL>
				 <!--Optional:-->
				 <ENDERECO>
					<!--Optional:-->
					<LOGRADOURO>?</LOGRADOURO>
					<!--Optional:-->
					<BAIRRO>?</BAIRRO>
					<!--Optional:-->
					<CIDADE>?</CIDADE>
					<!--Optional:-->
					<UF>?</UF>
					<!--Optional:-->
					<CEP>?</CEP>
				 </ENDERECO>
			  </PAGADOR>
			  <!--Optional:-->
			  <SACADOR_AVALISTA>
				 <!--You have a CHOICE of the next 2 items at this level-->
				 <!--Optional:-->
				 <CPF>?</CPF>
				 <!--Optional:-->
				 <NOME>?</NOME>
				 <!--Optional:-->
				 <CNPJ>?</CNPJ>
				 <!--Optional:-->
				 <RAZAO_SOCIAL>?</RAZAO_SOCIAL>
			  </SACADOR_AVALISTA>
			  <!--Optional:-->
			  <MULTA>
				 <!--Optional:-->
				 <DATA>?</DATA>
				 <!--You have a CHOICE of the next 2 items at this level-->
				 <!--Optional:-->
				 <VALOR>?</VALOR>
				 <!--Optional:-->
				 <PERCENTUAL>?</PERCENTUAL>
			  </MULTA>
			  <!--Optional:-->
			  <DESCONTOS>
				 <!--1 to 3 repetitions:-->
				 <DESCONTO>
					<!--Optional:-->
					<DATA>?</DATA>
					<!--You have a CHOICE of the next 2 items at this level-->
					<!--Optional:-->
					<VALOR>?</VALOR>
					<!--Optional:-->
					<PERCENTUAL>?</PERCENTUAL>
				 </DESCONTO>
			  </DESCONTOS>
			  <!--Optional:-->
			  <VALOR_IOF>?</VALOR_IOF>
			  <!--Optional:-->
			  <IDENTIFICACAO_EMPRESA>?</IDENTIFICACAO_EMPRESA>
			  <!--Optional:-->
			  <FICHA_COMPENSACAO>
				 <MENSAGENS>
					<!--1 to 2 repetitions:-->
					<MENSAGEM>?</MENSAGEM>
				 </MENSAGENS>
			  </FICHA_COMPENSACAO>
			  <!--Optional:-->
			  <RECIBO_PAGADOR>
				 <MENSAGENS>
					<!--1 to 4 repetitions:-->
					<MENSAGEM>?</MENSAGEM>
				 </MENSAGENS>
			  </RECIBO_PAGADOR>
			  <!--Optional:-->
			  <PAGAMENTO>
				 <!--Optional:-->
				 <QUANTIDADE_PERMITIDA>?</QUANTIDADE_PERMITIDA>
				 <!--Optional:-->
				 <TIPO>?</TIPO>
				 <!--You have a CHOICE of the next 2 items at this level-->
				 <!--Optional:-->
				 <VALOR_MINIMO>?</VALOR_MINIMO>
				 <!--Optional:-->
				 <VALOR_MAXIMO>?</VALOR_MAXIMO>
				 <!--Optional:-->
				 <PERCENTUAL_MINIMO>?</PERCENTUAL_MINIMO>
				 <!--Optional:-->
				 <PERCENTUAL_MAXIMO>?</PERCENTUAL_MAXIMO>
			  </PAGAMENTO>
		   </TITULO>
		</ALTERA_BOLETO>
	 </DADOS>
  </ext:SERVICO_ENTRADA>

 

 

 

Dessa forma, você deve criar nós (nodes) conforme os atributos. Isso você pode verificar no link que eu deixei em anexo:

 

De qualquer forma, seria algo do tipo:

$param = new stdClass();

$header = new stdClass();
$header->VERSAO = "1.0";
$header->AUTENTICACAO = "senha";
$header->USUARIO_SERVICO = "usuario";
/** 
demais atributos do header 
**/

//Adiciona os parâmetros de HEADER
$param->HEADER = $header

$dados = new stdClass();

$inclui_boleto = new stdClass();
/** 
dados do atributo INCLUI_BOLETO 
**/

//Adiciona os parâmetros de INCLUI_BOLETO
$dados->INCLUI_BOLETO = $inclui_boleto;

E assim você deve ir criando, cada nó da chamada do XML.

 

Algo que fica evidente, é esta estrutura:

<DADOS>
    <!--You have a CHOICE of the next 3 items at this level-->
    <INCLUI_BOLETO>
        /** atributos **/
    </INCLUI_BOLETO>

    <BAIXA_BOLETO>
        /** atributos **/
    </BAIXA_BOLETO>

    <ALTERA_BOLETO>
        /** atributos **/
    </ALTERA_BOLETO>
</DADOS>

Não importa qual método você utilize, ele terá a estrutura similar, utilizando atributos diferentes para cada método.

 

No final, basta criar o client e realizar a chamada:

$client = new SoapClient("https://barramento.caixa.gov.br/sibar/ManutencaoCobrancaBancaria/Boleto/Externo?wsdl" , ['trace' => 1]);
$compra = $client->INCLUI_BOLETO($params);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Gabriel boa tarde, obrigado pelas respostas, acredito que com sua ajuda estou progredindo aqui, desculpe toda pertubação.

 

Pesquisando e lendo os tópicos indicados se estou correto, montei da seguinte forma:

 

<?php

$ip = $_SERVER["REMOTE_ADDR"];
$data_hora = date("YmdHms");
$autenticacao = "0000000000000000000000000000000000000000000000000000000";
$autenticacao = base64_encode($autenticacao);
$data_vencimento= date("Ymd");
$data_emissao= date("Ymd");
$data_juros= date("Ymd");

$param = new stdClass();

$servico_entrada = new stdClass();

$header = new stdClass();
$header->VERSAO = "1.0";
$header->AUTENTICACAO = $autenticacao;
$header->USUARIO_SERVICO = "SGCBS02P";
$header->OPERACAO = "INCLUI_BOLETO";
$header->SISTEMA_ORIGEM ="SIGCB";
$header->UNIDADE = "0017";
$header->IDENTIFICADOR_ORIGEM = $ip;
$header->DATA_HORA = $data_hora;
$header->ID_PROCESSO = "0000000";

/**
demais atributos do header
**/

//Adiciona os parâmetros de HEADER
$param->HEADER = $header;

$dados = new stdClass();
$inclui_boleto = new stdClass();
$inclui_boleto->CODIGO_BENEFICIARIO= "0000000";

$inclui_boleto->titulo= new stdClass();

$inclui_boleto->titulo->NOSSO_NUMERO= "00000000000000000";
$inclui_boleto->titulo->NUMERO_DOCUMENTO= "12345678901";
$inclui_boleto->titulo->DATA_VENCIMENTO= $data_vencimento;
$inclui_boleto->titulo->VALOR= "0000000000035.50";
$inclui_boleto->titulo->TITULO_ESPECIE= "99";
$inclui_boleto->titulo->FLAG_ACEITE= "A";
$inclui_boleto->titulo->DATA_EMISSAO= $data_emissao;

$inclui_boleto->titulo->juros_mora = new stdClass();
$inclui_boleto->titulo->juros_mora->TIPO= "VALOR_POR_DIA";
$inclui_boleto->titulo->juros_mora->DATA= $data_juros;
$inclui_boleto->titulo->juros_mora->VALOR= "0000000000001.50";

$inclui_boleto->VALOR_ABATIMENTO= "0000000000000.00";

$inclui_boleto->titulo->pos_vencimento = new stdClass();
$inclui_boleto->titulo->pos_vencimento->ACAO= "PROTESTAR";
$inclui_boleto->titulo->pos_vencimento->NUMERO_DIAS= "30";

$inclui_boleto->CODIGO_MOEDA= "09";

$inclui_boleto->titulo->pagador = new stdClass();
$inclui_boleto->titulo->pagador->CPF= "12345678901";
$inclui_boleto->titulo->pagador->NOME= "NOME DO COMPRADOR";

$inclui_boleto->titulo->pagador->endereco = new stdClass();
$inclui_boleto->titulo->pagador->endereco->LOGRADOURO= "ENDERECO";
$inclui_boleto->titulo->pagador->endereco->BAIRRO= "BAIRRO";
$inclui_boleto->titulo->pagador->endereco->CIDADE= "SAO PAULO";
$inclui_boleto->titulo->pagador->endereco->UF= "SP";
$inclui_boleto->titulo->pagador->endereco->CEP= "01447777";

$inclui_boleto->titulo->sacador = new stdClass();
$inclui_boleto->titulo->sacador->CNPJ= "12345678901111";
$inclui_boleto->titulo->sacador->RAZAO_SOCIAL= "NOME DA EMPRESA";

$inclui_boleto->titulo->pagamento = new stdClass();
$inclui_boleto->titulo->pagamento->QUANTIDADE_PERMITIDA= "1";
$inclui_boleto->titulo->pagamento->TIPO= "NAO_ACEITA_VALOR_DIVERGENTE";
$inclui_boleto->titulo->pagamento->VALOR_MINIMO= "0000000000000.00";
$inclui_boleto->titulo->pagamento->VALOR_MAXIMO= "0000000000000.00";

/**
dados do atributo INCLUI_BOLETO
**/

//Adiciona os parâmetros de INCLUI_BOLETO
$dados->INCLUI_BOLETO = $inclui_boleto;

//AQUI TENTEI ENVIAR COM O PARAMETRO TRACE QUE VOCE DEIXOU MAS NÃO DEU CERTO, TENTEI DE ALGUMAS FORMAS E NAO CONSEGUI RESOLVER, AI RETIREI.

//$client = new SoapClient("https://barramento.caixa.gov.br/sibar/ManutencaoCobrancaBancaria/Boleto/Externo?wsdl" , ['trace' => 1]);
$client = new SoapClient("https://barramento.caixa.gov.br/sibar/ManutencaoCobrancaBancaria/Boleto/Externo?wsdl");
$compra = $client->INCLUI_BOLETO($params);

echo var_dump($compra);

?>

 

Estou colocando alguns dados com zeros mas tenho os dados, apenas de exemplo.

 

Me vem o retorno:

 

object(stdClass)#14 (5) { ["HEADER"]=> object(stdClass)#15 (3) { ["VERSAO"]=> string(3) "1.0" ["OPERACAO"]=> string(12) "SEM_OPERACAO" ["DATA_HORA"]=> string(14) "20171201121704" } ["COD_RETORNO"]=> string(2) "X5" ["ORIGEM_RETORNO"]=> string(15) "BROKER-SPPFCJD2" ["MSG_RETORNO"]=> string(38) "(BK76) ERRO NA FORMATACAO DA MENSAGEM." ["DADOS"]=> object(stdClass)#16 (1) { ["EXCECAO"]=> string(1403) "EXCECAO NO BAR_MANUTENCAO_COBRANCA_BANCARIA_WS.SOAPInput_Empresas_Externas. DETALHES: ParserException(1) - Funcao: ImbDataFlowNode::createExceptionList, Texto Excecao: Node throwing exception, Texto de Insercao(1) - BAR_MANUTENCAO_COBRANCA_BANCARIA_WS.SOAPInput_Empresas_Externas.ParserException(2) - Funcao: ImbSOAPInputNode::validateData, Texto Excecao: Error occurred in ImbSOAPInputHelper::validateSOAPInput(), Texto de Insercao(1) - BAR_MANUTENCAO_COBRANCA_BANCARIA_WS.SOAPInput_Empresas_Externas.ParserException(3) - Funcao: ImbRootParser::parseNextItem, Texto Excecao: Exception whilst parsing.ParserException(4) - Funcao: ImbSOAPParser::createSoapShapedTree, Texto Excecao: problem creating SOAP tree from bitstream.ParserException(5) - Funcao: ImbXMLNSCParser::parseLastChild, Texto Excecao: XML Parsing Errors have occurred.ParserException(6) - Funcao: ImbXMLNSCDocHandler::handleParseErrors, Texto Excecao: A schema validation error has occurred while parsing the XML document, Texto de Insercao(1) - 5010, Texto de Insercao(2) - 2, Texto de Insercao(3) - 2, Texto de Insercao(4) - 198, Texto de Insercao(5) - cvc-complex-type.2.4.g: The content of element "SERVICO_ENTRADA" is not complete. Empty tag is not expected since the content type is not 'empty'., Texto de Insercao(6) - /XMLNSC/{http://schemas.xmlsoap.org/soap/envelope/}:Envelope/{http://schemas.xmlsoap.org/soap/envelope/}:Body." } }

 

Estou pesquisando uma forma de quebrar isso para ficar de uma forma melhor de leitura, mas ainda não consegui. Mas olhando os dados o que entendi é:

 

The content of element SERVICO_ENTRADA is not complete. Empty tag is not expected since the content type is not empty ---- e tambem a mensagem de erro na formatação da mensagem.

 

Estou tentando algumas alternativas para descobrir o meu erro aqui.

 

 

Alan

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente é porquê você terá que adicionar os demais nodes (BAIXA_BOLETO e ALTERA_BOLETO), pois, eles não estão marcados como opcionais (OPTIONAL).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde, estava ainda fazendo alguns testes ao inves do metodo INCLUI_BOLETO o metodo CONSULTA_BOLETO que leva menos dados e não da certo, e notei aqui um detalhe:

 

$compra = $client->INCLUI_BOLETO($params);

Não temos esta variavel params no código. Temos param, mas se mando como param me retorna erro:

object has no DADOS property

 

Acredito que deva ser algo simples, mas estou tentando aqui mas não estou conseguindo resolver....

 

Alan

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como falei anteriormente, não importa qual método você utilize, o objeto é o mesmo. Ou seja, terá que ter todas as propriedades do WSDL que não estejam marcadas como OPTIONAL.

 

7 minutos atrás, estilovirtual disse:

Não temos esta variavel params no código. Temos param, mas se mando como param me retorna erro:

object has no DADOS property

 

O nome da variável que eu coloquei é apenas um exemplo, o qual eu não testei previamente, você sempre deve adequar ao seu código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia. Desculpe foi falha minha não ter visto esta variavel, não quis dizer o contrário não. Continuo aqui quebrando a cabeça, fiz algumas modificações, não sei se melhorou ou piorou, estou tendo um outro retorno aqui:

 

Expecting element with local name "HEADER" but saw "HEADER"

 

Dei um var_dump na variavel $param para verificar o que estava sendo enviado e o parametro HEADER esta sendo enviado normalmente.

 

object(stdClass)#1 (2) { ["HEADER"]=> object(stdClass)#3 (9) { ["VERSAO"]=> string(3) "1.0" ["AUTENTICACAO"]=> string(84) "MDU3NDU2NjAwMDAwMDAwMDAwMDAwMDAwMTUxMjIwMTcwMDAwMDAwMDAwMDM1NDcyMTI5NTkwMTAwMDEyOA==" ["USUARIO_SERVICO"]=> string(8) "SGCBS02P" ["OPERACAO"]=> string(13) "INCLUI_BOLETO" ["SISTEMA_ORIGEM"]=> string(5) "SIGCB" ["UNIDADE"]=> string(4) "0017" ["IDENTIFICADOR_ORIGEM"]=> string(13) "179.54.186.62" ["DATA_HORA"]=> string(14) "20171205081254" ["ID_PROCESSO"]=> string(6) "574566" } ["DADOS"]=> object(stdClass)#4 (1) { ["inclui_boleto"]=> object(stdClass)#5 (6) { ["CODIGO_BENEFICIARIO"]=> string(6) "1234567" ["titulo"]=> object(stdClass)#6 (16) { ["NOSSO_NUMERO"]=> string(17) "00000000000000000" ["NUMERO_DOCUMENTO"]=> string(11) "12345678901" ["DATA_VENCIMENTO"]=> string(8) "20171205" ["VALOR"]=> string(16) "0000000000035.50" ["TIPO_ESPECIE"]=> string(2) "99" ["FLAG_ACEITE"]=> string(1) "A" ["DATA_EMISSAO"]=> string(8) "20171205" ["juros_mora"]=> object(stdClass)#7 (3) { ["TIPO"]=> string(13) "VALOR_POR_DIA" ["DATA"]=> string(8) "20171205" ["VALOR"]=> string(16) "0000000000001.50" } ["pos_vencimento"]=> object(stdClass)#8 (2) { ["ACAO"]=> string(9) "PROTESTAR" ["NUMERO_DIAS"]=> string(2) "30" } ["pagador"]=> object(stdClass)#9 (5) { ["CPF"]=> string(11) "12345678901" ["NOME"]=> string(23) "NOME DO ALUNO COMPRADOR" ["CNPJ"]=> string(0) "" ["RAZAO_SOCIAL"]=> string(0) "" ["endereco"]=> object(stdClass)#10 (5) { ["LOGRADOURO"]=> string(17) "ENDERECO NUMERO 01" ["BAIRRO"]=> string(10) "BAIRRO" ["CIDADE"]=> string(9) "SAO PAULO" ["UF"]=> string(2) "SP" ["CEP"]=> string(8) "01777888" } } ["sacador_avalista"]=> object(stdClass)#11 (4) { ["CPF"]=> string(0) "" ["NOME"]=> string(0) "" ["CNPJ"]=> string(14) "05281025000111" ["RAZAO_SOCIAL"]=> string(19) "NOME DA EMPRESA" } ["multa"]=> object(stdClass)#12 (2) { ["DATA"]=> string(8) "20171205" ["VALOR"]=> string(16) "0000000000014.15" } ["descontos"]=> object(stdClass)#13 (1) { ["desconto"]=> object(stdClass)#14 (2) { ["DATA"]=> string(8) "20171205" ["VALOR"]=> string(16) "0000000000005.14" } } ["ficha_compensacao"]=> object(stdClass)#15 (1) { ["mensagens"]=> object(stdClass)#16 (1) { ["MENSAGEM"]=> string(0) "" } } ["recibo_pagador"]=> object(stdClass)#17 (1) { ["mensagens"]=> object(stdClass)#18 (1) { ["MENSAGEM"]=> string(0) "" } } ["pagamento"]=> object(stdClass)#19 (4) { ["QUANTIDADE_PERMITIDA"]=> string(1) "1" ["TIPO"]=> string(27) "NAO_ACEITA_VALOR_DIVERGENTE" ["VALOR_MINIMO"]=> string(16) "0000000000000.00" ["VALOR_MAXIMO"]=> string(16) "0000000000000.00" } } ["VALOR_ABATIMENTO"]=> string(16) "0000000000000.00" ["CODIGO_MOEDA"]=> string(2) "09" ["VALOR_IOF"]=> string(0) "" ["IDENTIFICACAO_EMPRESA"]=> string(0) "" } } } 

 

Alan

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adicione seu código completo, para verificar se está faltando algo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Gabriel, boa tarde, segue abaixo o código completo:

 

$ip = $_SERVER["REMOTE_ADDR"];
$data_hora = date("YmdHms");
$autenticacao = "0587447000000000000000001512201700000000000354707478520000100";
$autenticacao = base64_encode($autenticacao);
$data_vencimento= date("Ymd");
$data_emissao= date("Ymd");
$data_juros= date("Ymd");
$data_multa= date("Ymd");

$param = new stdClass();

$servico_entrada = new stdClass();

$header = new stdClass();
$header->VERSAO = "1.0";
$header->AUTENTICACAO = $autenticacao;
$header->USUARIO_SERVICO = "SGCBS02P";
$header->OPERACAO = "INCLUI_BOLETO";
$header->SISTEMA_ORIGEM ="SIGCB";
$header->UNIDADE = "0017";
$header->IDENTIFICADOR_ORIGEM = $ip;
$header->DATA_HORA = $data_hora;
$header->ID_PROCESSO = "574566";

$param->HEADER = $header;

$dados = new stdClass();
$dados->inclui_boleto = new stdClass();
$dados->inclui_boleto->CODIGO_BENEFICIARIO= "574566";

$dados->inclui_boleto->titulo= new stdClass();
$dados->inclui_boleto->titulo->NOSSO_NUMERO= "00000000000000000";
$dados->inclui_boleto->titulo->NUMERO_DOCUMENTO= "12345678901";
$dados->inclui_boleto->titulo->DATA_VENCIMENTO= $data_vencimento;
$dados->inclui_boleto->titulo->VALOR= "0000000000035.50";
$dados->inclui_boleto->titulo->TIPO_ESPECIE= "99";
$dados->inclui_boleto->titulo->FLAG_ACEITE= "A";
$dados->inclui_boleto->titulo->DATA_EMISSAO= $data_emissao;

$dados->inclui_boleto->titulo->juros_mora = new stdClass();
$dados->inclui_boleto->titulo->juros_mora->TIPO= "VALOR_POR_DIA";
$dados->inclui_boleto->titulo->juros_mora->DATA= $data_juros;
$dados->inclui_boleto->titulo->juros_mora->VALOR= "0000000000001.50";

$dados->inclui_boleto->VALOR_ABATIMENTO= "0000000000000.00";

$dados->inclui_boleto->titulo->pos_vencimento = new stdClass();
$dados->inclui_boleto->titulo->pos_vencimento->ACAO= "PROTESTAR";
$dados->inclui_boleto->titulo->pos_vencimento->NUMERO_DIAS= "30";

$dados->inclui_boleto->CODIGO_MOEDA= "09";

$dados->inclui_boleto->titulo->pagador = new stdClass();
$dados->inclui_boleto->titulo->pagador->CPF= "12345678901";
$dados->inclui_boleto->titulo->pagador->NOME= "NOME DO ALUNO COMPRADOR";
$dados->inclui_boleto->titulo->pagador->CNPJ= "";
$dados->inclui_boleto->titulo->pagador->RAZAO_SOCIAL= "";

$dados->inclui_boleto->titulo->pagador->endereco = new stdClass();
$dados->inclui_boleto->titulo->pagador->endereco->LOGRADOURO= "ENDERECO - NUMERO";
$dados->inclui_boleto->titulo->pagador->endereco->BAIRRO= "BAIRRO";
$dados->inclui_boleto->titulo->pagador->endereco->CIDADE= "SAO PAULO";
$dados->inclui_boleto->titulo->pagador->endereco->UF= "SP";
$dados->inclui_boleto->titulo->pagador->endereco->CEP= "08445210";

$dados->inclui_boleto->titulo->sacador_avalista = new stdClass();
$dados->inclui_boleto->titulo->sacador_avalista->CPF= "";
$dados->inclui_boleto->titulo->sacador_avalista->NOME= "";
$dados->inclui_boleto->titulo->sacador_avalista->CNPJ= "07458410000155";
$dados->inclui_boleto->titulo->sacador_avalista->RAZAO_SOCIAL= "NOME DA EMPRESA";

$dados->inclui_boleto->titulo->multa= new stdClass();
$dados->inclui_boleto->titulo->multa->DATA= $data_multa;
$dados->inclui_boleto->titulo->multa->VALOR= "0000000000014.15";

$dados->inclui_boleto->titulo->descontos= new stdClass();
$dados->inclui_boleto->titulo->descontos->desconto= new stdClass();
$dados->inclui_boleto->titulo->descontos->desconto->DATA= $data_multa;
$dados->inclui_boleto->titulo->descontos->desconto->VALOR= "0000000000005.14";


$dados->inclui_boleto->titulo->ficha_compensacao = new stdClass();
$dados->inclui_boleto->titulo->ficha_compensacao->mensagens = new stdClass();
$dados->inclui_boleto->titulo->ficha_compensacao->mensagens->MENSAGEM= "";

$dados->inclui_boleto->titulo->recibo_pagador= new stdClass();
$dados->inclui_boleto->titulo->recibo_pagador->mensagens= new stdClass();
$dados->inclui_boleto->titulo->recibo_pagador->mensagens->MENSAGEM= "";

$dados->inclui_boleto->titulo->pagamento = new stdClass();
$dados->inclui_boleto->titulo->pagamento->QUANTIDADE_PERMITIDA= "1";
$dados->inclui_boleto->titulo->pagamento->TIPO= "NAO_ACEITA_VALOR_DIVERGENTE";
$dados->inclui_boleto->titulo->pagamento->VALOR_MINIMO= "0000000000000.00";
$dados->inclui_boleto->titulo->pagamento->VALOR_MAXIMO= "0000000000000.00";

$param->DADOS = $dados;

$client = new SoapClient("https://barramento.caixa.gov.br/sibar/ManutencaoCobrancaBancaria/Boleto/Externo?wsdl");
$compra = $client->INCLUI_BOLETO($param);

echo "<BR><BR>Resultado<BR><BR><hr>";

echo var_dump($compra);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
On 12/5/2017 at 8:34 AM, estilovirtual said:

Bom dia. Desculpe foi falha minha não ter visto esta variavel, não quis dizer o contrário não. Continuo aqui quebrando a cabeça, fiz algumas modificações, não sei se melhorou ou piorou, estou tendo um outro retorno aqui:

 

Expecting element with local name "HEADER" but saw "HEADER"

 

Dei um var_dump na variavel $param para verificar o que estava sendo enviado e o parametro HEADER esta sendo enviado normalmente.

 


object(stdClass)#1 (2) { ["HEADER"]=> object(stdClass)#3 (9) { ["VERSAO"]=> string(3) "1.0" ["AUTENTICACAO"]=> string(84) "MDU3NDU2NjAwMDAwMDAwMDAwMDAwMDAwMTUxMjIwMTcwMDAwMDAwMDAwMDM1NDcyMTI5NTkwMTAwMDEyOA==" ["USUARIO_SERVICO"]=> string(8) "SGCBS02P" ["OPERACAO"]=> string(13) "INCLUI_BOLETO" ["SISTEMA_ORIGEM"]=> string(5) "SIGCB" ["UNIDADE"]=> string(4) "0017" ["IDENTIFICADOR_ORIGEM"]=> string(13) "179.54.186.62" ["DATA_HORA"]=> string(14) "20171205081254" ["ID_PROCESSO"]=> string(6) "574566" } ["DADOS"]=> object(stdClass)#4 (1) { ["inclui_boleto"]=> object(stdClass)#5 (6) { ["CODIGO_BENEFICIARIO"]=> string(6) "1234567" ["titulo"]=> object(stdClass)#6 (16) { ["NOSSO_NUMERO"]=> string(17) "00000000000000000" ["NUMERO_DOCUMENTO"]=> string(11) "12345678901" ["DATA_VENCIMENTO"]=> string(8) "20171205" ["VALOR"]=> string(16) "0000000000035.50" ["TIPO_ESPECIE"]=> string(2) "99" ["FLAG_ACEITE"]=> string(1) "A" ["DATA_EMISSAO"]=> string(8) "20171205" ["juros_mora"]=> object(stdClass)#7 (3) { ["TIPO"]=> string(13) "VALOR_POR_DIA" ["DATA"]=> string(8) "20171205" ["VALOR"]=> string(16) "0000000000001.50" } ["pos_vencimento"]=> object(stdClass)#8 (2) { ["ACAO"]=> string(9) "PROTESTAR" ["NUMERO_DIAS"]=> string(2) "30" } ["pagador"]=> object(stdClass)#9 (5) { ["CPF"]=> string(11) "12345678901" ["NOME"]=> string(23) "NOME DO ALUNO COMPRADOR" ["CNPJ"]=> string(0) "" ["RAZAO_SOCIAL"]=> string(0) "" ["endereco"]=> object(stdClass)#10 (5) { ["LOGRADOURO"]=> string(17) "ENDERECO NUMERO 01" ["BAIRRO"]=> string(10) "BAIRRO" ["CIDADE"]=> string(9) "SAO PAULO" ["UF"]=> string(2) "SP" ["CEP"]=> string(8) "01777888" } } ["sacador_avalista"]=> object(stdClass)#11 (4) { ["CPF"]=> string(0) "" ["NOME"]=> string(0) "" ["CNPJ"]=> string(14) "05281025000111" ["RAZAO_SOCIAL"]=> string(19) "NOME DA EMPRESA" } ["multa"]=> object(stdClass)#12 (2) { ["DATA"]=> string(8) "20171205" ["VALOR"]=> string(16) "0000000000014.15" } ["descontos"]=> object(stdClass)#13 (1) { ["desconto"]=> object(stdClass)#14 (2) { ["DATA"]=> string(8) "20171205" ["VALOR"]=> string(16) "0000000000005.14" } } ["ficha_compensacao"]=> object(stdClass)#15 (1) { ["mensagens"]=> object(stdClass)#16 (1) { ["MENSAGEM"]=> string(0) "" } } ["recibo_pagador"]=> object(stdClass)#17 (1) { ["mensagens"]=> object(stdClass)#18 (1) { ["MENSAGEM"]=> string(0) "" } } ["pagamento"]=> object(stdClass)#19 (4) { ["QUANTIDADE_PERMITIDA"]=> string(1) "1" ["TIPO"]=> string(27) "NAO_ACEITA_VALOR_DIVERGENTE" ["VALOR_MINIMO"]=> string(16) "0000000000000.00" ["VALOR_MAXIMO"]=> string(16) "0000000000000.00" } } ["VALOR_ABATIMENTO"]=> string(16) "0000000000000.00" ["CODIGO_MOEDA"]=> string(2) "09" ["VALOR_IOF"]=> string(0) "" ["IDENTIFICACAO_EMPRESA"]=> string(0) "" } } } 

 

Alan

 

Bom dia,

 

Resolvi esse erro da seguinte forma:

$authentication = new stdClass();
$authentication->VERSAO = '1.0';
...
$header = new SoapVar($authentication, SOAP_ENC_OBJECT, null, null, 'HEADER', 'http://caixa.gov.br/sibar');
$dados->HEADER = $header;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por avelar.avelar
      Boa tarde turma,
       
      Estou com um problema grave aqui, o meu sistema esta gerando boletos e o webservice esta pegando muitos boletos e não esta registrando, da erro e nao, passa, e outros boletos passa normal, ele consegue registrar, já verifiquei cadastro dos clientes e esta tudo normal, todos os campos preenchidos corretamente, alguem poderias me ajudar !!!!
       
       
      Avelar
    • Por RafaelKleimpaul
      Então, estou batendo cabeça com o seguinte desafio: Eu preciso pegar uma NF que está em um web service por sua chave dela e exporta-la no formato XML para uma pasta na máquina. Tenho o seguinte método: getNFe(TOKEN_DE_ACESSO, CHAVE_NFE).
       
      Como posso fazer para pelo token e a chave dessa NF eu conseguir extrai-la e armazena-la?
       
      Obrigado!
    • Por ugiov
      Bom dia.
       
      Estou iniciando o desenvolvimento de um software para controle e emissão de NF-e para a SEFAZ. A princípio, estou começando pelo básico, onde busco consultar se o serviço selecionado está online, ou não. De maneira simplificada:
      Private Sub VerificaStatus() Dim servicoNFe As ServicosNFe Dim retornoStatus As RetornoNfeStatusServico Dim retornoBasico As retConsStatServ servicoNFe = New ServicosNFe(NFeConfig.CfgServico) retornoStatus = servicoNFe.NfeStatusServico() retornoBasico = retornoStatus.Retorno End Sub  
      Ele gera o XML para consulta, valida, salva uma cópia no computador, e tudo.... Mas quando vou na função NfeStatusServico:
      Public Function NfeStatusServico() As RetornoNfeStatusServico Dim versaoServico = ServicoNFe.NfeStatusServico.VersaoServicoParaString(_cFgServico.VersaoNfeStatusServico) Dim ws = CriarServico(ServicoNFe.NfeStatusServico) If _cFgServico.VersaoNfeStatusServico <> NFe.Classes.Servicos.Tipos.VersaoServico.ve400 Then ws.nfeCabecMsg = New nfeCabecMsg ws.nfeCabecMsg.cUF = _cFgServico.cUF ws.nfeCabecMsg.versaoDados = versaoServico End If Dim pedStatus = New consStatServ With { .cUF = _cFgServico.cUF, .tpAmb = _cFgServico.tpAmb, .versao = versaoServico } Dim xmlStatus = pedStatus.ObterXmlString() Validador.Valida(ServicoNFe.NfeStatusServico, _cFgServico.VersaoNfeStatusServico, xmlStatus, cfgServico:=_cFgServico) Dim dadosStatus = New XmlDocument() dadosStatus.LoadXml(xmlStatus) SalvarArquivoXml(DateTime.Now.ParaDataHoraString() & "-ped-sta.xml", xmlStatus) Dim retorno As XmlNode Try retorno = ws.Execute(dadosStatus) '<<< Aqui ocorre um erro! Catch ex As WebException Throw FabricaComunicacaoException.ObterException(ServicoNFe.NfeStatusServico, ex) End Try Dim retornoXmlString = retorno.OuterXml Dim retConsStatServ = New retConsStatServ().CarregarDeXmlString(retornoXmlString) SalvarArquivoXml(DateTime.Now.ParaDataHoraString() & "-sta.xml", retornoXmlString) Return New RetornoNfeStatusServico(pedStatus.ObterXmlString(), retConsStatServ.ObterXmlString(), retornoXmlString, retConsStatServ) End Function  
      A função ws.Execute(dadosStatus) gera um erro:
      Namespace NFe.Wsdl.Status <WebServiceBinding(Name:="NFeStatusServico4Service", Namespace:="http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4")> Public Class NfeStatusServico4 Inherits SoapHttpClientProtocol Implements INfeServico Public Sub New(ByVal url As String, ByVal certificado As X509Certificate, ByVal timeOut As Integer) SoapVersion = SoapProtocolVersion.Soap12 Me.Url = url Me.Timeout = timeOut ClientCertificates.Add(certificado) End Sub <Obsolete("Não utilizar na nfe 4.0")> Public Property nfeCabecMsg As nfeCabecMsg Private Property INfeServico_nfeCabecMsg As nfeCabecMsg Implements INfeServico.nfeCabecMsg Get Throw New NotImplementedException() End Get Set(value As nfeCabecMsg) Throw New NotImplementedException() End Set End Property <WebMethod(MessageName:="nfeStatusServicoNF"), SoapDocumentMethod("http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4/nfeStatusServicoNF", Use:=SoapBindingUse.Literal, ParameterStyle:=SoapParameterStyle.Bare)> Private Function Execute(<XmlElement(Namespace:="http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4")> nfeDadosMsg As XmlNode) As <XmlElement("nfeResultMsg", Namespace:="http://www.portalfiscal.inf.br/nfe/wsdl/NFeStatusServico4")> XmlNode Implements INfeServico.Execute Dim results = Me.Invoke("nfeStatusServicoNF", New Object() {nfeDadosMsg}) '<<<< Aqui nesta linha ocorre o erro Return CType((results(0)), XmlNode) End Function End Class End Namespace  
      A seguinte mensagem, é então exibida:
      "O método nfeStatusServicoNF do serviço da Web é inválido". <Imagem Anexo>
       
       
      Esse erro eu não estou conseguindo corrigir.
      Alguém poderia me ajudar com o mesmo?

    • Por DZ22
      Estou aprendendo WebService no meu curso de programação, e criamos agora um arquivo PHP com umas 4 variáveis q vão armazenar os dados de conexão com o Banco de Dados q é o MySQL ($HostName, $HostUser, $HostPass, $DatabaseName). Mas eu preciso testar as informações que eu vou botar nessas variáveis pra ver se estão certas. Como eu as testo?
    • Por markhosbh
      Salve galera,
      Estou iniciando no mundo WebService e já me deparo com o seguinte problema.
      O Servidor da TOTVS via rest, me retorna exatamente da seguinte forma:
         
      $resposta = enviaConteudoParaAPI($cabecalho, $conteudo, $url, $tpRequisicao);     print_r($resposta); Resultado:
          {"CAMPOS":"[\"\"A1_COD\",\"A1_NOME\",\"TIPO\"]","DADOS":"[[\"00932221\",\"PEDRO GONCALVES\",\"TITULAR\"][\"00164577\",\"JORGE ARAGAO\",\"TITULAR\"]]"}
          
          //TRATADO
         
      $array = json_decode($resposta, true);         $campos = $array['CAMPOS'];         $dados = $array['DADOS'];         print_r($array); Resultado :
         
      Array ( [CAMPOS] => [""A1_COD","A1_NOME","TIPO"] [DADOS] => [["00932221","PEDRO GONCALVES","TITULAR"]["00164577","JORGE ARAGAO","TITULAR"]] ) 
      Acontece que preciso atribuir cada conteúdo a uma variável, ou seja, preciso trabalhar com cada valor de forma distinta:
             
      $A1_COD = ['$A1_COD'];         $A1_NOME = ['A1_NOME'];         $TIPO = ['TIPO'];     echo "Codigo: $A1_COD, Nome: $A1_NOME, Tipo: $TIPO"; Onde eu preciso do seguinte resultado:
          Codigo: 00932221 , Nome: PEDRO GONCALVES, Tipo: TITULAR     Codigo: 00164577 , Nome: JORGE ARAGAO,       Tipo: TITULAR    
      Em outras palavras, preciso transformar este array:
         
       Array ([["00932221","PEDRO GONÇALVES","TITULAR"]["00164577","JORGE ARAGAO","TITULAR"]]) Neste array:
          Array ( [A1_COD] => 00932221 [A1_NOME] => PEDRO GONÇALVES [TIPO] => TITULAR )      Array ( [A1_COD] => 00164577 [A1_NOME] => JORGE ARAGAO [TIPO] => TITULAR )
       
×

Informação importante

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