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 }