Boleto Api do Siccob

91 views
Skip to first unread message

Marcelo Antonio Lázzaro Carli

unread,
Mar 5, 2024, 7:20:48 AM3/5/24
to Harbour Minigui

Bom dia cliente pediu para usar a api do sicoob, Fiz esta rotina, mas não está autorizando, mesma usando as credenciais fornecidas pelo banco. Olhando na net parece que precisa do certificado digital, mas não sei como usar antes da rotina abaixo. Se alguém tem dicas, agradeço e bfds.

/*****************************************************************************

* SISTEMA  : ROTINA EVENTUAL                                                *

* PROGRAMA : DEMO.PRG                                                         *

* OBJETIVO : Boleto por Api - Sicoob                                        *

* AUTOR    : Marcelo Antonio Lázzaro Carli                                  *

* DATA     : 23.02.2024                                                     *

* ULT. ALT.: 27.02.2024                                                     *

*****************************************************************************/

#include 'minigui.ch'

 

Function Main()

   REQUEST HB_LANG_PT

  REQUEST HB_CODEPAGE_PTISO

   REQUEST HB_CODEPAGE_PT850

   HB_LangSelect([PT])

   Set Navigation Extended

 

   DEFINE WINDOW f_BoletosApi AT 165 , 299 WIDTH 650 HEIGHT 300 TITLE "Boleto por Api - Sicoob" MAIN

 

     DEFINE BUTTON Button_1

            ROW    210

            COL    20

            WIDTH  110

            HEIGHT 28

            ACTION {|| fEnvia(1)}

            CAPTION "Enviar Boletos"

            FONTNAME 'Arial'

     END BUTTON

 

     DEFINE BUTTON Button_2

            ROW    210

            COL    210

            WIDTH  110

            HEIGHT 28

            ACTION {|| fEnvia(2)}

            CAPTION "Consultar Boleto"

            FONTNAME 'Arial'

     END BUTTON

 

     DEFINE BUTTON Button_3

            ROW    210

            COL    480

            WIDTH  110

            HEIGHT 28

            ACTION {|| f_BoletosApi.Release}

            CAPTION "Sair"

            FONTNAME 'Arial'

     END BUTTON

 

   END WINDOW

 

   f_BoletosApi.Center

   f_BoletosApi.Activate

Return (Nil)

 

Static Procedure fEnvia(nTipo)

   Local oSoap, cUrl:= cRetorno:= cChave:= cBoleto:= cCliente:= [], cMetodo:= [POST], nAmbiente:= 1 // 1 Produção 2 - testes

 

   HB_SETCODEPAGE([PTISO])

 

   If nTipo == 1 // emitir boleto

      If nAmbiente == 1  // Produção

         cUrl   := [https://api.sicoob.com.br/cobranca-bancaria/v2/boletos]

      Else

         cUrl   := [https://sandbox.sicoob.com.br/sicoob/sandbox/cobranca-bancaria/v2/boletos]

      Endif

   Else          // consultar boleto

      cMetodo:= [GET]

      If nAmbiente == 1  // Produção

         cUrl   := [https://api.sicoob.com.br/cobranca-bancaria/v2/boletos]

 

*linhaDigitavel

*         cUrl   := [https://api.sicoob.com.br/cobranca-bancaria/v2/boletos?numeroContrato=153672&modalidade=1&nossoNumero=10264]

*        cUrl   := [https://api.sicoob.com.br/cobranca-bancaria/v2/boletos?numeroContrato={{153672}}&modalidade=1&nossoNumero=102642]

      Else

         cUrl   := [https://sandbox.sicoob.com.br/sicoob/sandbox/cobranca-bancaria/v2/boletos?numeroContrato={{numContrato}}&modalidade=1&nossoNumero=integer]

      Endif

   Endif

 

   cChave  := [Bearer 946700d1-6a91-4b6a-845e-475721514e33] // chave sicoob

   cCliente:= [946700d1-6a91-4b6a-845e-475721514e33]

 

 

   BEGIN SEQUENCE WITH __BreakBlock()

      oSoap:= Win_OleCreateObject([MSXML2.ServerXMLHTTP.6.0])

      oSoap:SetTimeouts(30000, 30000, 30000, 30000)

      oSoap:Open(cMetodo, cUrl, .F.)

      oSoap:SetRequestHeader([Authorization], [Bearer ] + cCliente)

      oSoap:SetRequestHeader([accept], [application/json])

      oSoap:SetRequestHeader([client_id], cCliente)

    *  oSoap:SetRequestHeader([Content-Type], [application/json; charset=utf-8])

     * oSoap:SetRequestHeader([cache-control], [no-cache])

 

      cBoleto:=  '{"numeroContrato": 153672,"modalidade": 1,"linhaDigitavel": 75691.44111 01015.367202 01026.420016 5 96410000123344}'

 

 

 

      oSoap:Send(cBoleto)

 

      cRetorno:= oSoap:Responsetext()

   END SEQUENCE

 

*   aReturn := {=>}

*   cteste:= hb_jsondecode(cRetorno, @aReturn)

 

   hb_MemoWrit([retorno.txt], cRetorno)

 

   If hb_At([resultado], cRetorno) # 0

      MsgInfo([Sucesso: ] + cRetorno)

   Else

      MsgExclamation([Aconteceu um erro: ] + hb_OsNewLine() + cRetorno, [Entre em contato com o Suporte])

   Endif

   HB_SETCODEPAGE([PT850])

Return (Nil)

 

 

 

 

 

 


Att.

Marcelo A. L. Carli
Marília/SP
Capital Nacional do Alimento ®
https://malc-informatica.ueniweb.com
Insta: @malcarli25
Email / Skype: 
marcelo...@gmail.com


Não contém vírus.www.avast.com
Reply all
Reply to author
Forward
0 new messages