github.com/mundipagg/boleto-api@v0.0.0-20230620145841-3f9ec742599f/mock/caixa.go (about)

     1  package mock
     2  
     3  import (
     4  	"errors"
     5  	"io/ioutil"
     6  	"strings"
     7  
     8  	"github.com/gin-gonic/gin"
     9  )
    10  
    11  func registerBoletoCaixa(c *gin.Context) {
    12  	sData := `
    13  <?xml version="1.0" encoding="UTF-8"?>
    14  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    15     <soapenv:Body>
    16        <manutencaocobrancabancaria:SERVICO_SAIDA xmlns:manutencaocobrancabancaria="http://caixa.gov.br/sibar/manutencao_cobranca_bancaria/boleto/externo" xmlns:sibar_base="http://caixa.gov.br/sibar">
    17           <sibar_base:HEADER>
    18              <VERSAO>1.0</VERSAO>
    19              <AUTENTICACAO>LvWr1op5Ayibn6jsCQ3/2bW4KwThVAlLK5ftxABlq20=</AUTENTICACAO>
    20              <USUARIO_SERVICO>SGCBS01D</USUARIO_SERVICO>
    21              <OPERACAO>INCLUI_BOLETO</OPERACAO>
    22              <SISTEMA_ORIGEM>SIGCB</SISTEMA_ORIGEM>
    23              <UNIDADE>1679</UNIDADE>
    24              <DATA_HORA>20170718150257</DATA_HORA>
    25           </sibar_base:HEADER>
    26           <COD_RETORNO>00</COD_RETORNO>
    27           <ORIGEM_RETORNO>MANUTENCAO_COBRANCA_BANCARIA</ORIGEM_RETORNO>
    28           <MSG_RETORNO />
    29           <DADOS>
    30              <CONTROLE_NEGOCIAL>
    31                 <ORIGEM_RETORNO>SIGCB</ORIGEM_RETORNO>
    32                 <COD_RETORNO>0</COD_RETORNO>
    33                 <MENSAGENS>
    34                    <RETORNO>(0) OPERACAO EFETUADA</RETORNO>
    35                 </MENSAGENS>
    36              </CONTROLE_NEGOCIAL>
    37              <INCLUI_BOLETO>
    38                 <CODIGO_BARRAS>10493726700000010002006561000100040992226984</CODIGO_BARRAS>
    39                 <LINHA_DIGITAVEL>10492006506100010004209922269841372670000001000</LINHA_DIGITAVEL>
    40                 <NOSSO_NUMERO>14000000099222698</NOSSO_NUMERO>
    41                 <URL>https://200.201.168.67:8010/ecobranca/SIGCB/imprimir/0200656/14000000099222698</URL>
    42              </INCLUI_BOLETO>
    43           </DADOS>
    44        </manutencaocobrancabancaria:SERVICO_SAIDA>
    45     </soapenv:Body>
    46  </soapenv:Envelope>
    47  	`
    48  
    49  	sDataErr := `
    50  <?xml version="1.0" encoding="utf-8"?>
    51  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    52      <soapenv:Body>
    53          <manutencaocobrancabancaria:SERVICO_SAIDA xmlns:manutencaocobrancabancaria="http://caixa.gov.br/sibar/manutencao_cobranca_bancaria/boleto/externo" xmlns:sibar_base="http://caixa.gov.br/sibar">
    54              <sibar_base:HEADER>
    55                  <VERSAO>1.0</VERSAO>
    56                  <AUTENTICACAO>LvWr1op5Ayibn6jsCQ3/2bW4KwThVAlLK5ftxABlq201=</AUTENTICACAO>
    57                  <USUARIO_SERVICO>SGCBS01D</USUARIO_SERVICO>
    58                  <OPERACAO>INCLUI_BOLETO</OPERACAO>
    59                  <SISTEMA_ORIGEM>SIGCB</SISTEMA_ORIGEM>
    60                  <UNIDADE>1679</UNIDADE>
    61                  <DATA_HORA>20170503102800</DATA_HORA>
    62              </sibar_base:HEADER>
    63              <COD_RETORNO>00</COD_RETORNO>
    64              <ORIGEM_RETORNO>MANUTENCAO_COBRANCA_BANCARIA</ORIGEM_RETORNO>
    65              <MSG_RETORNO></MSG_RETORNO>
    66              <DADOS>
    67                  <CONTROLE_NEGOCIAL>
    68                      <ORIGEM_RETORNO>SIGCB</ORIGEM_RETORNO>
    69                      <COD_RETORNO>1</COD_RETORNO>
    70                      <MENSAGENS>
    71                          <RETORNO>(54) OPERACAO NAO PERMITIDA - HASH DIVERGENTE</RETORNO>
    72                      </MENSAGENS>
    73                  </CONTROLE_NEGOCIAL>
    74              </DADOS>
    75          </manutencaocobrancabancaria:SERVICO_SAIDA>
    76      </soapenv:Body>
    77  </soapenv:Envelope>
    78  	`
    79  	d, _ := ioutil.ReadAll(c.Request.Body)
    80  	xml := string(d)
    81  	if strings.Contains(xml, "<VALOR>5.04</VALOR>") {
    82  		c.AbortWithError(504, errors.New("Teste de Erro"))
    83  	} else if strings.Contains(xml, "<VALOR>2.00</VALOR>") {
    84  		c.Data(200, "text/xml", []byte(sData))
    85  	} else {
    86  		c.Data(200, "text/xml", []byte(sDataErr))
    87  	}
    88  
    89  }