Ticket Registration WebService Box SOAP WSDL PHP

1

Friends, I've never worked with WS, but now, as a result of the new changes, I need to register tickets that I generate on a site. I received a CEF document but so far I have not been able to make it work.

Here are the instructions:

URL: link

Every call to the Web Service must be made through secure communication (SSL / HTTPS) and in POST method. We recommend using the XSD and WSDL messages provided by CAIXA to construct the solution, with the correct ordering of the fields.

Below, the Box itself gives you an idea of what the xml output should look like: The example below demonstrates the sending of data generated by the client to the CAIXA, referring to the entry of a title registration request.

<ns3:SERVICO_ENTRADA  xmlns:ns2="http://caixa.gov.br/sibar" xmlns:ns4="http://caixa.gov.br/sibar/manutencao_cobranca_bancaria/boleto/externo"> <ns2:HEADER> <VERSAO>1.0</VERSAO> <AUTENTICACAO>wIXyzrhD7HjlrpCP1xNnq8vFE7ggAGuz/srw1BOtxDY=</AUTENTICACAO> <OPERACAO>INCLUI_BOLETO</OPERACAO> <SISTEMA_ORIGEM>SIGCB</SISTEMA_ORIGEM> <DATA_HORA>20170221110643</DATA_HORA> </ns2:HEADER> <DADOS> <INCLUI_BOLETO> <CODIGO_BENEFICIARIO>537588</CODIGO_BENEFICIARIO> <TITULO> <NOSSO_NUMERO>14000000091946802</NOSSO_NUMERO> <NUMERO_DOCUMENTO>NF123456</NUMERO_DOCUMENTO> <DATA_VENCIMENTO>2017-02-21</DATA_VENCIMENTO> <VALOR>1.00</VALOR> <TIPO_ESPECIE>99</TIPO_ESPECIE> <FLAG_ACEITE>S</FLAG_ACEITE> <DATA_EMISSAO>2017-02-21</DATA_EMISSAO> <JUROS_MORA> <TIPO>ISENTO</TIPO> <DATA>2017-02-21</DATA> <VALOR>0</VALOR> </JUROS_MORA> <VALOR_ABATIMENTO>0</VALOR_ABATIMENTO> <POS_VENCIMENTO> <ACAO>DEVOLVER</ACAO> <NUMERO_DIAS>0</NUMERO_DIAS> </POS_VENCIMENTO> <CODIGO_MOEDA>9</CODIGO_MOEDA> <PAGADOR> <CPF>00000000191</CPF> <NOME>EXEMPLO DE NOME DO PAGADOR</NOME> <ENDERECO> <LOGRADOURO>SAUS QUADRA 3</LOGRADOURO> <BAIRRO>BRASILIA</BAIRRO> <CIDADE>BRASILIA</CIDADE> <UF>DF</UF> <CEP>70070030</CEP> </ENDERECO> </PAGADOR> 38.239 v002 micro     26 
LEIAUTE DE ARQUIVO ELETRÔNICO - WEBSERVICE XML COBRANÇA BANCÁRIA CAIXA 
<SACADOR_AVALISTA> <CNPJ>00360305000104</CNPJ> <RAZAO_SOCIAL>EXEMPLO DE NOME DO SACADOR AVALISTA</RAZAO_SOCIAL> </SACADOR_AVALISTA> <PAGAMENTO> <QUANTIDADE_PERMITIDA>1</QUANTIDADE_PERMITIDA> <TIPO>NAO_ACEITA_VALOR_DIVERGENTE</TIPO> <VALOR_MINIMO>0.00</VALOR_MINIMO> <VALOR_MAXIMO>0.00</VALOR_MAXIMO> </PAGAMENTO> </TITULO> </INCLUI_BOLETO> </DADOS> </ns3:SERVICO_ENTRADA> 

Could anyone help me set up the connection parameters for sending and handling the return?

    
asked by anonymous 23.08.2017 / 02:05

2 answers

2

I wrote a library prototype following the example below. It is available here .

Here is an example for adding tickets using NuSOAP and XmlDomConstruct . You will have to change the constants in the middle of this code to the variables applicable to your environment and the company agreement.

include(LIB_DIR . '/nusoap/lib/nusoap.php');
include(LIB_DIR . '/XmlDomConstruct/XmlDomConstruct.php');

// Hash de autenticação
$raw = preg_replace('/[^A-Za-z0-9]/', '',
    '0' . CODIGO_BENEFICIARIO .
    NOSSO_NUMERO .
    strftime('%d%m%Y', strtotime(DATA_VENCIMENTO))) .
    sprintf('%015d', preg_replace('/[^0-9]/', '', VALOR)) .
    sprintf('%014d', CNPJ));
$autenticacao = base64_encode(hash('sha256', $raw, true));

    $xml_array = array(
        'sibar_base:HEADER' => array(
            'VERSAO' => '1.0',
            'AUTENTICACAO' => $autenticacao,
            'USUARIO_SERVICO' => 'SGCBS02P',
            'OPERACAO' => 'INCLUI_BOLETO',
            'SISTEMA_ORIGEM' => 'SIGCB',
            'UNIDADE' => UNIDADE,
            'IDENTIFICADOR_ORIGEM' => OUT_IP,
            'DATA_HORA' => date('YmdHis'),
            'ID_PROCESSO' => ID_PROCESSO,
        ),
        'DADOS' => array(
            'INCLUI_BOLETO' => array(
                'CODIGO_BENEFICIARIO' => CODIGO_BENEFICIARIO,
                'TITULO' => array(
                    'NOSSO_NUMERO' => NOSSO_NUMERO,
                    'NUMERO_DOCUMENTO' => NUMERO_DOCUMENTO,
                    'DATA_VENCIMENTO' => DATA_VENCIMENTO,
                    'VALOR' => VALOR,
                    'TIPO_ESPECIE' => '99',
                    'FLAG_ACEITE' => 'S',
                    'DATA_EMISSAO' => DATA_EMISSAO,
                    'JUROS_MORA' => array(
                        'TIPO' => 'ISENTO',
                        'VALOR' => '0',
                    ),
                    'VALOR_ABATIMENTO' => '0',
                    'POS_VENCIMENTO' => array(
                        'ACAO' => 'DEVOLVER',
                        'NUMERO_DIAS' => NUMERO_DIAS,
                    ),
                    'CODIGO_MOEDA' => '09',
                    'PAGADOR' => array(
                        'CPF' => sprintf('%014d', CPF),
                        'NOME' => NOME,
                        'ENDERECO' => array(
                            'LOGRADOURO' => LOGRADOURO,
                            'BAIRRO' => BAIRRO,
                            'CIDADE' => CIDADE,
                            'UF' => UF,
                            'CEP' => CEP
                        )
                    )
                )
            )
        );

    // Geração do XML
    $xml_root = 'manutencaocobrancabancaria:SERVICO_ENTRADA';
    $xml = new XmlDomConstruct('1.0', 'iso-8859-1');
    $xml->preserveWhiteSpace = false;
    $xml->formatOutput = true;
    $xml->fromMixed(array($xml_root => $args));
    $xml_root_item = $xml->getElementsByTagName($xml_root)->item(0);
    $xml_root_item->setAttribute('xmlns:manutencaocobrancabancaria',
        'http://caixa.gov.br/sibar/manutencao_cobranca_bancaria/boleto/externo');
    $xml_root_item->setAttribute('xmlns:sibar_base',
        'http://caixa.gov.br/sibar');
    $xml_string = preg_replace('/^<\?.*\?>/', '', $xml->saveXML());

    // Consulta ao webservice
    $client = new nusoap_client(ENDERECO_WSDL, $wsdl = true, $timeout = TIMEOUT);
    $response = $client->call('INCLUI_BOLETO', $xml_string);
    $err = $client->getError();
    if (!$client->fault && !$err)
        echo $err; // inclusão falhou

    print_r($response) // inclusão feita com sucesso
    
05.09.2017 / 13:24
-1

You can use the Guzzle library, the best option for working with HTTP requests in PHP. cURL is also an option, but I prefer Guzzle.

Guzzle

    
25.08.2017 / 00:39