github.com/mundipagg/boleto-api@v0.0.0-20230620145841-3f9ec742599f/caixa/request.go (about) 1 package caixa 2 3 const responseFromCaixa = ` 4 <?xml version="1.0" encoding="utf-8"?> 5 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 6 <soapenv:Body> 7 <manutencaocobrancabancaria:SERVICO_SAIDA xmlns:manutencaocobrancabancaria="http://caixa.gov.br/sibar/manutencao_cobranca_bancaria/boleto/externo" xmlns:sibar_base="http://caixa.gov.br/sibar"> 8 <sibar_base:HEADER> 9 <OPERACAO>{{operation}}</OPERACAO> 10 <DATA_HORA>{{datetime}}</DATA_HORA> 11 </sibar_base:HEADER> 12 <DADOS> 13 <CONTROLE_NEGOCIAL> 14 <ORIGEM_RETORNO>SIGCB</ORIGEM_RETORNO> 15 <COD_RETORNO>{{returnCode}}</COD_RETORNO> 16 <MENSAGENS> 17 <RETORNO>{{returnMessage}}</RETORNO> 18 </MENSAGENS> 19 </CONTROLE_NEGOCIAL> 20 <INCLUI_BOLETO> 21 <EXCECAO>{{exception}}</EXCECAO> 22 <CODIGO_BARRAS>{{barcodeNumber}}</CODIGO_BARRAS> 23 <LINHA_DIGITAVEL>{{digitableLine}}</LINHA_DIGITAVEL> 24 <NOSSO_NUMERO>{{ourNumber}}</NOSSO_NUMERO> 25 <URL>{{url}}</URL> 26 </INCLUI_BOLETO> 27 </DADOS> 28 </manutencaocobrancabancaria:SERVICO_SAIDA> 29 </soapenv:Body> 30 </soapenv:Envelope> 31 ` 32 33 const requestToCaixa = ` 34 35 ## SOAPAction:IncluiBoleto 36 ## Content-Type:text/xml 37 38 <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"> 39 <soapenv:Body> 40 <ext:SERVICO_ENTRADA > 41 <sib:HEADER> 42 <VERSAO>1.0</VERSAO> 43 <AUTENTICACAO>{{unscape .Authentication.AuthorizationToken}}</AUTENTICACAO> 44 <USUARIO_SERVICO>{{caixaEnv}}</USUARIO_SERVICO> 45 <OPERACAO>INCLUI_BOLETO</OPERACAO> 46 <SISTEMA_ORIGEM>SIGCB</SISTEMA_ORIGEM> 47 <UNIDADE>{{.Agreement.Agency}}</UNIDADE> 48 <DATA_HORA>{{fullDate today}}</DATA_HORA> 49 </sib:HEADER> 50 <DADOS> 51 <INCLUI_BOLETO> 52 <CODIGO_BENEFICIARIO>{{padLeft (toString .Agreement.AgreementNumber) "0" 7}}</CODIGO_BENEFICIARIO> 53 <TITULO> 54 <NOSSO_NUMERO>{{toString .Title.OurNumber}}</NOSSO_NUMERO> 55 <NUMERO_DOCUMENTO>{{truncateOnly .Title.DocumentNumber 11}}</NUMERO_DOCUMENTO> 56 <DATA_VENCIMENTO>{{enDate .Title.ExpireDateTime "-"}}</DATA_VENCIMENTO> 57 <VALOR>{{toFloatStr .Title.AmountInCents}}</VALOR> 58 <TIPO_ESPECIE>{{.Title.BoletoTypeCode}}</TIPO_ESPECIE> 59 <FLAG_ACEITE>S</FLAG_ACEITE> 60 <DATA_EMISSAO>{{enDate today "-"}}</DATA_EMISSAO> 61 <JUROS_MORA> 62 {{if .Title.Fees.HasInterest}} 63 {{if .Title.Fees.Interest.HasAmountPerDayInCents}} 64 <TIPO>VALOR_POR_DIA</TIPO> 65 <DATA>{{enDate (datePlusDays .Title.ExpireDateTime .Title.Fees.Interest.DaysAfterExpirationDate) "-"}}</DATA> 66 <VALOR>{{toFloatStr .Title.Fees.Interest.AmountPerDayInCents}}</VALOR> 67 {{else}} 68 <TIPO>TAXA_MENSAL</TIPO> 69 <DATA>{{enDate (datePlusDays .Title.ExpireDateTime .Title.Fees.Interest.DaysAfterExpirationDate) "-"}}</DATA> 70 <PERCENTUAL>{{float64ToString "%.2f" .Title.Fees.Interest.PercentagePerMonth}}</PERCENTUAL> 71 {{end}} 72 {{else}} 73 <TIPO>ISENTO</TIPO> 74 <VALOR>0</VALOR> 75 {{end}} 76 </JUROS_MORA> 77 <VALOR_ABATIMENTO>0</VALOR_ABATIMENTO> 78 <POS_VENCIMENTO> 79 <ACAO>DEVOLVER</ACAO> 80 {{if .Title.HasRules}} 81 <NUMERO_DIAS>{{.Title.Rules.MaxDaysToPayPastDue}}</NUMERO_DIAS> 82 {{else}} 83 <NUMERO_DIAS>0</NUMERO_DIAS> 84 {{end}} 85 </POS_VENCIMENTO> 86 <CODIGO_MOEDA>9</CODIGO_MOEDA> 87 <PAGADOR> 88 {{if eq .Buyer.Document.Type "CPF"}} 89 <CPF>{{.Buyer.Document.Number}}</CPF> 90 <NOME>{{truncateOnly (clearStringCaixa .Buyer.Name) 40}}</NOME> 91 {{else}} 92 <CNPJ>{{.Buyer.Document.Number}}</CNPJ> 93 <RAZAO_SOCIAL>{{truncateOnly (clearStringCaixa .Buyer.Name) 40}}</RAZAO_SOCIAL> 94 {{end}} 95 {{if .Buyer.HasAddress}} 96 <ENDERECO> 97 <LOGRADOURO>{{truncateOnly (joinSpace (clearStringCaixa .Buyer.Address.Street) (clearStringCaixa .Buyer.Address.Number) (clearStringCaixa .Buyer.Address.Complement)) 40}}</LOGRADOURO> 98 <BAIRRO>{{truncateOnly (clearStringCaixa .Buyer.Address.District) 15}}</BAIRRO> 99 <CIDADE>{{truncateOnly (clearStringCaixa .Buyer.Address.City) 15}}</CIDADE> 100 <UF>{{truncateOnly (clearStringCaixa .Buyer.Address.StateCode) 2}}</UF> 101 <CEP>{{truncateOnly (replace (clearStringCaixa .Buyer.Address.ZipCode) "-" "") 8}}</CEP> 102 </ENDERECO> 103 {{end}} 104 </PAGADOR> 105 {{if .HasPayeeGuarantor}} 106 <SACADOR_AVALISTA> 107 {{if eq .PayeeGuarantor.Document.Type "CPF"}} 108 <CPF>{{.PayeeGuarantor.Document.Number}}</CPF> 109 <NOME>{{truncateOnly (clearStringCaixa (.PayeeGuarantor.Name)) 40}}</NOME> 110 {{else}} 111 <CNPJ>{{.PayeeGuarantor.Document.Number}}</CNPJ> 112 <RAZAO_SOCIAL>{{truncateOnly (clearStringCaixa (.PayeeGuarantor.Name)) 40}}</RAZAO_SOCIAL> 113 {{end}} 114 </SACADOR_AVALISTA> 115 {{end}} 116 {{if .Title.Fees.HasFine}} 117 <MULTA> 118 <DATA>{{enDate (datePlusDaysConsideringZeroAsStart .Title.ExpireDateTime .Title.Fees.Fine.DaysAfterExpirationDate) "-"}}</DATA> 119 {{if .Title.Fees.Fine.HasAmountInCents}} 120 <VALOR>{{toFloatStr .Title.Fees.Fine.AmountInCents}}</VALOR> 121 {{else}} 122 <PERCENTUAL>{{float64ToString "%.2f" .Title.Fees.Fine.PercentageOnTotal}}</PERCENTUAL> 123 {{end}} 124 </MULTA> 125 {{end}} 126 <FICHA_COMPENSACAO> 127 <MENSAGENS> 128 <MENSAGEM>{{truncateOnly (clearStringCaixa .Title.Instructions) 40}}</MENSAGEM> 129 </MENSAGENS> 130 </FICHA_COMPENSACAO> 131 <RECIBO_PAGADOR> 132 <MENSAGENS> 133 <MENSAGEM>{{truncateOnly (clearStringCaixa .Title.Instructions) 40}}</MENSAGEM> 134 </MENSAGENS> 135 </RECIBO_PAGADOR> 136 {{if .Title.HasRules}} 137 <PAGAMENTO> 138 <QUANTIDADE_PERMITIDA>1</QUANTIDADE_PERMITIDA> 139 {{if .Title.Rules.AcceptDivergentAmount}} 140 <TIPO>ACEITA_QUALQUER_VALOR</TIPO> 141 {{else}} 142 <TIPO>NAO_ACEITA_VALOR_DIVERGENTE</TIPO> 143 {{end}} 144 <VALOR_MINIMO>0.00</VALOR_MINIMO> 145 <VALOR_MAXIMO>0.00</VALOR_MAXIMO> 146 </PAGAMENTO> 147 {{end}} 148 </TITULO> 149 </INCLUI_BOLETO> 150 </DADOS> 151 </ext:SERVICO_ENTRADA> 152 </soapenv:Body> 153 </soapenv:Envelope> 154 ` 155 156 func getRequestCaixa() string { 157 return requestToCaixa 158 } 159 160 func getResponseCaixa() string { 161 return responseFromCaixa 162 }