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

     1  package mock
     2  
     3  import (
     4  	"io/ioutil"
     5  	"net/http/httputil"
     6  
     7  	"github.com/gin-gonic/gin"
     8  
     9  	"strings"
    10  
    11  	"errors"
    12  )
    13  
    14  /*
    15  
    16  0 Ticket validado ok
    17  1 Erro, dados de entrada inválidos
    18  2 Erro interno de criptografia
    19  3 Erro, Ticket já utilizado anteriormente
    20  4 Erro, Ticket gerado para outro sistema
    21  5 Erro, Ticket expirado
    22  6 Erro interno (dados)
    23  7 Erro interno (timestamp)
    24  */
    25  func getTicket(c *gin.Context) {
    26  	const tok = `
    27  	<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    28  	<soapenv:Body> 
    29  	<dlwmin:createResponse xmlns:dlwmin="http://impl.webservice.dl.app.bsbr.altec.com/"> 
    30  	<TicketResponse> 
    31  	<retCode>0</retCode> 
    32  	<ticket>OK</ticket> 
    33  	</TicketResponse> 
    34  	</dlwmin:createResponse> 
    35  	</soapenv:Body> 
    36  	</soapenv:Envelope>
    37  	`
    38  
    39  	const tokErr = `
    40  	<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    41  	<soapenv:Body> 
    42  	<dlwmin:createResponse xmlns:dlwmin="http://impl.webservice.dl.app.bsbr.altec.com/"> 
    43  	<TicketResponse> 
    44  	<retCode>3</retCode> 
    45  	<ticket>NOK</ticket> 
    46  	</TicketResponse> 
    47  	</dlwmin:createResponse> 
    48  	</soapenv:Body> 
    49  	</soapenv:Envelope>
    50  	`
    51  	data, _ := httputil.DumpRequest(c.Request, true)
    52  	str := string(data)
    53  	if strings.Contains(str, "<value>3</value>") {
    54  		c.Data(200, "text/json", []byte(tokErr))
    55  	} else if strings.Contains(str, "<value>500</value>") {
    56  		c.AbortWithError(500, errors.New("internal error"))
    57  	} else {
    58  		c.Data(200, "text/json", []byte(tok))
    59  	}
    60  
    61  }
    62  
    63  func registerBoletoSantander(c *gin.Context) {
    64  	const tokErr = `
    65  	<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    66     <soapenv:Body>
    67        <dlwmin:registraTituloResponse xmlns:dlwmin="http://impl.webservice.ymb.app.bsbr.altec.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    68           <return xmlns:ns2="http://impl.webservice.ymb.app.bsbr.altec.com/">
    69              <codcede/>
    70              <convenio>
    71                 <codBanco/>
    72                 <codConv/>
    73              </convenio>
    74              <descricaoErro>erro santander</descricaoErro>
    75              <dtNsu>05082017</dtNsu>
    76              <estacao>?</estacao>
    77              <nsu>?</nsu>
    78              <pagador>
    79                 <bairro/>
    80                 <cep/>
    81                 <cidade/>
    82                 <ender/>
    83                 <nome/>
    84                 <numDoc/>
    85                 <tpDoc/>
    86                 <uf/>
    87              </pagador>
    88              <situacao>20</situacao>
    89              <titulo>
    90                 <aceito>N</aceito>
    91                 <cdBarra>23192839182391829382132131238219893123</cdBarra>
    92                 <dtEmissao/>
    93                 <dtEntr/>
    94                 <dtLimiDesc/>
    95                 <dtVencto/>
    96                 <especie/>
    97                 <linDig>21321312382198931232132131238219893123</linDig>
    98                 <mensagem/>
    99                 <nossoNumero>313123131231231</nossoNumero>
   100                 <pcJuro/>
   101                 <pcMulta/>
   102                 <qtDiasBaixa/>
   103                 <qtDiasMulta/>
   104                 <qtDiasProtesto/>
   105                 <seuNumero/>
   106                 <tpDesc/>
   107                 <tpProtesto/>
   108                 <vlAbatimento/>
   109                 <vlDesc/>
   110                 <vlNominal/>
   111              </titulo>
   112              <tpAmbiente>T</tpAmbiente>
   113           </return>
   114        </dlwmin:registraTituloResponse>
   115     </soapenv:Body>
   116  </soapenv:Envelope>
   117  	`
   118  
   119  	const tok = `
   120  	<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   121     <soapenv:Body>
   122        <dlwmin:registraTituloResponse xmlns:dlwmin="http://impl.webservice.ymb.app.bsbr.altec.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   123           <return xmlns:ns2="http://impl.webservice.ymb.app.bsbr.altec.com/">
   124              <codcede/>
   125              <convenio>
   126                 <codBanco/>
   127                 <codConv/>
   128              </convenio>
   129              <descricaoErro>00000 - Título registrado em cobrança</descricaoErro>
   130              <dtNsu>05082017</dtNsu>
   131              <estacao>?</estacao>
   132              <nsu>?</nsu>
   133              <pagador>
   134                 <bairro/>
   135                 <cep/>
   136                 <cidade/>
   137                 <ender/>
   138                 <nome/>
   139                 <numDoc/>
   140                 <tpDoc/>
   141                 <uf/>
   142              </pagador>
   143              <situacao>00</situacao>
   144              <titulo>
   145                 <aceito>N</aceito>
   146                 <cdBarra>23192839182391829382132131238219893123</cdBarra>
   147                 <dtEmissao/>
   148                 <dtEntr/>
   149                 <dtLimiDesc/>
   150                 <dtVencto/>
   151                 <especie/>
   152                 <linDig>21321312382198931232132131238219893123</linDig>
   153                 <mensagem/>
   154                 <nossoNumero>313123131231231</nossoNumero>
   155                 <pcJuro/>
   156                 <pcMulta/>
   157                 <qtDiasBaixa/>
   158                 <qtDiasMulta/>
   159                 <qtDiasProtesto/>
   160                 <seuNumero/>
   161                 <tpDesc/>
   162                 <tpProtesto/>
   163                 <vlAbatimento/>
   164                 <vlDesc/>
   165                 <vlNominal/>
   166              </titulo>
   167              <tpAmbiente>T</tpAmbiente>
   168           </return>
   169        </dlwmin:registraTituloResponse>
   170     </soapenv:Body>
   171  </soapenv:Envelope>
   172  	`
   173  
   174  	body, _ := ioutil.ReadAll(c.Request.Body)
   175  	str := string(body)
   176  	if strings.Contains(str, "<ticket>OK</ticket>") {
   177  		c.Data(200, "text/json", []byte(tok))
   178  	} else {
   179  		c.Data(200, "text/json", []byte(tokErr))
   180  	}
   181  
   182  }