From a31916fcec00b6fcdbb5631262e4069f61b6c44a Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Tue, 16 Jul 2024 08:46:30 -0300 Subject: [PATCH 01/18] =?UTF-8?q?altera=20vers=C3=A3o=20do=20pix=20cobran?= =?UTF-8?q?=C3=A7a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bb_wrapper/wrapper/pix_cob.py | 2 +- tests/wrapper/test_pix_cob.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bb_wrapper/wrapper/pix_cob.py b/bb_wrapper/wrapper/pix_cob.py index f16b7d98..2f1d8fb2 100644 --- a/bb_wrapper/wrapper/pix_cob.py +++ b/bb_wrapper/wrapper/pix_cob.py @@ -11,7 +11,7 @@ class PIXCobBBWrapper(BaseBBWrapper): SCOPE = "cob.read cob.write pix.read pix.write" - BASE_DOMAIN = ".bb.com.br/pix/v1" + BASE_DOMAIN = ".bb.com.br/pix/v2" def listar_pix(self, inicio=None, fim=None, page=0): """ diff --git a/tests/wrapper/test_pix_cob.py b/tests/wrapper/test_pix_cob.py index 0e7bdfce..becc805e 100644 --- a/tests/wrapper/test_pix_cob.py +++ b/tests/wrapper/test_pix_cob.py @@ -172,7 +172,7 @@ def test_construct_url_1(self): """ result = PIXCobBBWrapper()._construct_url(end_bar=True) - expected = "https://api.sandbox.bb.com.br/pix/v1/?gw-dev-app-key=" + expected = "https://api.sandbox.bb.com.br/pix/v2/?gw-dev-app-key=" self.assertIn(expected, result) @@ -188,7 +188,7 @@ def test_construct_url_2(self): """ result = PIXCobBBWrapper()._construct_url(end_bar=False) - expected = "https://api.sandbox.bb.com.br/pix/v1?gw-dev-app-key=" + expected = "https://api.sandbox.bb.com.br/pix/v2?gw-dev-app-key=" self.assertIn(expected, result) From ef8768758194eba933264896f70111cbfc2fa8bf Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Tue, 16 Jul 2024 11:55:39 -0300 Subject: [PATCH 02/18] =?UTF-8?q?ajusta=20m=C3=A9tdo=20de=20criar=20cobran?= =?UTF-8?q?=C3=A7a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bb_wrapper/wrapper/pix_cob.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bb_wrapper/wrapper/pix_cob.py b/bb_wrapper/wrapper/pix_cob.py index 2f1d8fb2..73fd96a7 100644 --- a/bb_wrapper/wrapper/pix_cob.py +++ b/bb_wrapper/wrapper/pix_cob.py @@ -157,7 +157,7 @@ def criar_cobranca( url = self._construct_url("cob", end_bar=True) - response = self._put(url, data) + response = self._post(url, data) self._injeta_qrcode_data(response, nome_recebedor) From 7c35755098656468c0a584a504414e5dd1e79f9b Mon Sep 17 00:00:00 2001 From: Rodrigo Castro Date: Thu, 8 Aug 2024 17:28:39 -0300 Subject: [PATCH 03/18] atualiza url da API PIX --- bb_wrapper/wrapper/pagamento_lote.py | 2 +- bb_wrapper/wrapper/pix_cob.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bb_wrapper/wrapper/pagamento_lote.py b/bb_wrapper/wrapper/pagamento_lote.py index 845585f7..29a7ae7b 100644 --- a/bb_wrapper/wrapper/pagamento_lote.py +++ b/bb_wrapper/wrapper/pagamento_lote.py @@ -17,7 +17,7 @@ class PagamentoLoteBBWrapper(BaseBBWrapper): """ SCOPE = "pagamentos-lote.lotes-requisicao pagamentos-lote.transferencias-info pagamentos-lote.transferencias-requisicao pagamentos-lote.cancelar-requisicao pagamentos-lote.devolvidos-info pagamentos-lote.lotes-info pagamentos-lote.pagamentos-guias-sem-codigo-barras-info pagamentos-lote.pagamentos-info pagamentos-lote.pagamentos-guias-sem-codigo-barras-requisicao pagamentos-lote.pagamentos-codigo-barras-info pagamentos-lote.boletos-requisicao pagamentos-lote.guias-codigo-barras-info pagamentos-lote.guias-codigo-barras-requisicao pagamentos-lote.transferencias-pix-info pagamentos-lote.transferencias-pix-requisicao pagamentos-lote.pix-info pagamentos-lote.boletos-info" # noqa - BASE_PROD_ADDITION = "-ip" + BASE_SUBDOMAIN = "api-ip" BASE_DOMAIN = ".bb.com.br/pagamentos-lote/v1" def _valida_lote_data(self, model, **kwargs): diff --git a/bb_wrapper/wrapper/pix_cob.py b/bb_wrapper/wrapper/pix_cob.py index 73fd96a7..4116af86 100644 --- a/bb_wrapper/wrapper/pix_cob.py +++ b/bb_wrapper/wrapper/pix_cob.py @@ -10,7 +10,7 @@ class PIXCobBBWrapper(BaseBBWrapper): """ SCOPE = "cob.read cob.write pix.read pix.write" - + BASE_SUBDOMAIN = "api-pix" BASE_DOMAIN = ".bb.com.br/pix/v2" def listar_pix(self, inicio=None, fim=None, page=0): From 94427a2c6ef69da2217a1e5755a0c806935cd715 Mon Sep 17 00:00:00 2001 From: Rodrigo Castro Date: Thu, 8 Aug 2024 17:31:49 -0300 Subject: [PATCH 04/18] troca sandbox por hm no PIX --- bb_wrapper/wrapper/pix_cob.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bb_wrapper/wrapper/pix_cob.py b/bb_wrapper/wrapper/pix_cob.py index 4116af86..c2e8829f 100644 --- a/bb_wrapper/wrapper/pix_cob.py +++ b/bb_wrapper/wrapper/pix_cob.py @@ -12,6 +12,7 @@ class PIXCobBBWrapper(BaseBBWrapper): SCOPE = "cob.read cob.write pix.read pix.write" BASE_SUBDOMAIN = "api-pix" BASE_DOMAIN = ".bb.com.br/pix/v2" + BASE_SANDBOX_ADDITION = "hm" def listar_pix(self, inicio=None, fim=None, page=0): """ From 329e7c2f329592210f2e0248f1544f04374eb04f Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Mon, 12 Aug 2024 11:12:03 -0300 Subject: [PATCH 05/18] =?UTF-8?q?corre=C3=A7=C3=A3o=20de=20testes=20unit?= =?UTF-8?q?=C3=A1rios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/wrapper/test_pix_cob.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/wrapper/test_pix_cob.py b/tests/wrapper/test_pix_cob.py index becc805e..b67204ed 100644 --- a/tests/wrapper/test_pix_cob.py +++ b/tests/wrapper/test_pix_cob.py @@ -172,7 +172,7 @@ def test_construct_url_1(self): """ result = PIXCobBBWrapper()._construct_url(end_bar=True) - expected = "https://api.sandbox.bb.com.br/pix/v2/?gw-dev-app-key=" + expected = "https://api-pix.hm.bb.com.br/pix/v2/?gw-dev-app-key=" self.assertIn(expected, result) @@ -188,7 +188,7 @@ def test_construct_url_2(self): """ result = PIXCobBBWrapper()._construct_url(end_bar=False) - expected = "https://api.sandbox.bb.com.br/pix/v2?gw-dev-app-key=" + expected = "https://api-pix.hm.bb.com.br/pix/v2?gw-dev-app-key=" self.assertIn(expected, result) From 1d20b72cdb964fa1188e458bd672354f8802b420 Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Mon, 12 Aug 2024 11:21:15 -0300 Subject: [PATCH 06/18] =?UTF-8?q?corre=C3=A7=C3=A3o=20de=20testes=20unit?= =?UTF-8?q?=C3=A1rios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/wrapper/test_pagamentos.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/wrapper/test_pagamentos.py b/tests/wrapper/test_pagamentos.py index 8278fcb4..5ce5a260 100644 --- a/tests/wrapper/test_pagamentos.py +++ b/tests/wrapper/test_pagamentos.py @@ -31,7 +31,7 @@ def test_construct_url_1(self): result = PagamentoLoteBBWrapper()._construct_url(end_bar=True) expected = ( - f"https://api.sandbox.bb.com.br/pagamentos-lote/v1/" + f"https://api-ip.sandbox.bb.com.br/pagamentos-lote/v1/" f"?gw-dev-app-key={PagamentoLoteBBWrapper()._BaseBBWrapper__gw_app_key}" ) From 5d9c01b629884fc11211ac719c8aad33724c4d0a Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Mon, 12 Aug 2024 11:24:08 -0300 Subject: [PATCH 07/18] ajusta rota --- bb_wrapper/wrapper/pix_cob.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bb_wrapper/wrapper/pix_cob.py b/bb_wrapper/wrapper/pix_cob.py index c2e8829f..54164e97 100644 --- a/bb_wrapper/wrapper/pix_cob.py +++ b/bb_wrapper/wrapper/pix_cob.py @@ -10,7 +10,7 @@ class PIXCobBBWrapper(BaseBBWrapper): """ SCOPE = "cob.read cob.write pix.read pix.write" - BASE_SUBDOMAIN = "api-pix" + BASE_SUBDOMAIN = "api-pix." BASE_DOMAIN = ".bb.com.br/pix/v2" BASE_SANDBOX_ADDITION = "hm" From 1177c1a2637f85f003149b0975581a7bc1657182 Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Mon, 12 Aug 2024 11:25:15 -0300 Subject: [PATCH 08/18] adiciona certificados em examples --- examples/lotes_pagamento/cadastrar_pagamento_boleto.py | 2 +- examples/pix_cob/consultar_cobranca.py | 2 +- examples/pix_cob/consultar_devolucao_pix.py | 3 ++- "examples/pix_cob/criar_cobran\303\247a_cnpj.py" | 2 +- "examples/pix_cob/criar_cobran\303\247a_qrcode.py" | 3 ++- examples/pix_cob/listar_pix.py | 2 +- 6 files changed, 8 insertions(+), 6 deletions(-) diff --git a/examples/lotes_pagamento/cadastrar_pagamento_boleto.py b/examples/lotes_pagamento/cadastrar_pagamento_boleto.py index f08d4af5..647bec81 100644 --- a/examples/lotes_pagamento/cadastrar_pagamento_boleto.py +++ b/examples/lotes_pagamento/cadastrar_pagamento_boleto.py @@ -12,7 +12,7 @@ bb_fmt = "%d%m%Y" lote_data = { - "n_requisicao": 579145, + "n_requisicao": 529279, "agencia": 1607, "conta": 99738672, "dv_conta": "X", diff --git a/examples/pix_cob/consultar_cobranca.py b/examples/pix_cob/consultar_cobranca.py index 963f8a43..074cc96b 100644 --- a/examples/pix_cob/consultar_cobranca.py +++ b/examples/pix_cob/consultar_cobranca.py @@ -4,7 +4,7 @@ from bb_wrapper.wrapper import PIXCobBBWrapper -c = PIXCobBBWrapper() +c = PIXCobBBWrapper(cert=("./certs/cert.pem", "./certs/key.pem")) txid = "HUAY0i0XMbuq6W3EcGapjsGCp5V19ToaRNR" diff --git a/examples/pix_cob/consultar_devolucao_pix.py b/examples/pix_cob/consultar_devolucao_pix.py index 9296dddb..d9072d9e 100644 --- a/examples/pix_cob/consultar_devolucao_pix.py +++ b/examples/pix_cob/consultar_devolucao_pix.py @@ -4,7 +4,8 @@ from bb_wrapper.wrapper import PIXCobBBWrapper -c = PIXCobBBWrapper() +c = PIXCobBBWrapper(cert=("./certs/cert.pem", "./certs/key.pem")) + end_to_end_id = "E000000002021012216250Q5N2JSL8RB" devolucao_id = "9fc76d58bbda3a0cdd5f1b92b6490216" diff --git "a/examples/pix_cob/criar_cobran\303\247a_cnpj.py" "b/examples/pix_cob/criar_cobran\303\247a_cnpj.py" index d54cff39..c8958d39 100644 --- "a/examples/pix_cob/criar_cobran\303\247a_cnpj.py" +++ "b/examples/pix_cob/criar_cobran\303\247a_cnpj.py" @@ -12,7 +12,7 @@ "nome_devedor": "ÉṔçà`s Francisco da Silva Francisco da Silva Francisco da Silva Francisco da Silva Francisco da Silva", # noqa: E501 "valor": 130.44, "nome_recebedor": "Imobanco", - "chave": "7f6844d0-de89-47e5-9ef7-e0a35a681615", + "chave": "9e881f18-cc66-4fc7-8f2c-a795dbb2bfc1", "descricao": "Cobrança dos serviços prestados.", "info": [{"nome": "Sacado", "valor": "Nome do sacado aqui"}], } diff --git "a/examples/pix_cob/criar_cobran\303\247a_qrcode.py" "b/examples/pix_cob/criar_cobran\303\247a_qrcode.py" index 701aaa5e..cf46806a 100644 --- "a/examples/pix_cob/criar_cobran\303\247a_qrcode.py" +++ "b/examples/pix_cob/criar_cobran\303\247a_qrcode.py" @@ -4,7 +4,8 @@ from bb_wrapper.wrapper import PIXCobBBWrapper -c = PIXCobBBWrapper() +c = PIXCobBBWrapper(cert=("./certs/cert.pem", "./certs/key.pem")) + data = { "expiracao": 60 * 60, # 60 segundos = 1 minuto. 60 minutos = 1h diff --git a/examples/pix_cob/listar_pix.py b/examples/pix_cob/listar_pix.py index 0f356d41..687a5af9 100644 --- a/examples/pix_cob/listar_pix.py +++ b/examples/pix_cob/listar_pix.py @@ -4,7 +4,7 @@ from bb_wrapper.wrapper import PIXCobBBWrapper -c = PIXCobBBWrapper() +c = PIXCobBBWrapper(cert=("./certs/cert.pem", "./certs/key.pem")) response = c.listar_pix(page=0) From c47baf5b8a823f02509f4037b2493d7d8aad5e84 Mon Sep 17 00:00:00 2001 From: Pedro Fonseca <32584628+peidrao@users.noreply.github.com> Date: Mon, 12 Aug 2024 16:47:19 -0300 Subject: [PATCH 09/18] Update tests/wrapper/test_pagamentos.py Co-authored-by: Rodrigo Castro --- tests/wrapper/test_pagamentos.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/wrapper/test_pagamentos.py b/tests/wrapper/test_pagamentos.py index 5ce5a260..8278fcb4 100644 --- a/tests/wrapper/test_pagamentos.py +++ b/tests/wrapper/test_pagamentos.py @@ -31,7 +31,7 @@ def test_construct_url_1(self): result = PagamentoLoteBBWrapper()._construct_url(end_bar=True) expected = ( - f"https://api-ip.sandbox.bb.com.br/pagamentos-lote/v1/" + f"https://api.sandbox.bb.com.br/pagamentos-lote/v1/" f"?gw-dev-app-key={PagamentoLoteBBWrapper()._BaseBBWrapper__gw_app_key}" ) From 6c6f61df0222223a072937cdcf642b7b338a5706 Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Mon, 12 Aug 2024 18:30:44 -0300 Subject: [PATCH 10/18] ajustes --- bb_wrapper/wrapper/bb.py | 14 ++++++++++++++ bb_wrapper/wrapper/pagamento_lote.py | 2 +- bb_wrapper/wrapper/pix_cob.py | 24 +++++++++++++++++++++--- tests/wrapper/test_pix_cob.py | 3 +-- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/bb_wrapper/wrapper/bb.py b/bb_wrapper/wrapper/bb.py index 52614aaa..02d6753c 100644 --- a/bb_wrapper/wrapper/bb.py +++ b/bb_wrapper/wrapper/bb.py @@ -16,6 +16,8 @@ class BaseBBWrapper(RequestsWrapper): BASE_SANDBOX_ADDITION = ".sandbox" BASE_PROD_ADDITION = "" BASE_DOMAIN = ".bb.com.br" + SANDBOX_BASE_URL = 'https://api-pix.hm.bb.com.br/pix/v2/' + BASE_URL = 'https://api-pix.bb.com.br/pix/v2/' SCOPE = "" @@ -51,6 +53,11 @@ def __init__( if self.__basic_token == "" or self.__gw_app_key == "": raise ValueError("Configure o basic_token/gw_app_key do BB!") + if self._is_sandbox: + self.base_url = self.SANDBOX_BASE_URL + else: + self.base_url = self.BASE_URL + base_url = self._construct_base_url() super().__init__( @@ -205,6 +212,13 @@ def __oauth_url(self): f"/oauth/token" ) + @property + def gw_app_key(self): + """ + Propriedade para acessar o app key de forma controlada. + """ + return self.__gw_app_key + def __authenticate(self): """ https://forum.developers.bb.com.br/t/status-code-415-unsupported-media-type-somente-em-producao/1123 diff --git a/bb_wrapper/wrapper/pagamento_lote.py b/bb_wrapper/wrapper/pagamento_lote.py index d148c173..599bd577 100644 --- a/bb_wrapper/wrapper/pagamento_lote.py +++ b/bb_wrapper/wrapper/pagamento_lote.py @@ -17,7 +17,7 @@ class PagamentoLoteBBWrapper(BaseBBWrapper): """ SCOPE = "pagamentos-lote.lotes-requisicao pagamentos-lote.transferencias-info pagamentos-lote.transferencias-requisicao pagamentos-lote.cancelar-requisicao pagamentos-lote.devolvidos-info pagamentos-lote.lotes-info pagamentos-lote.pagamentos-guias-sem-codigo-barras-info pagamentos-lote.pagamentos-info pagamentos-lote.pagamentos-guias-sem-codigo-barras-requisicao pagamentos-lote.pagamentos-codigo-barras-info pagamentos-lote.boletos-requisicao pagamentos-lote.guias-codigo-barras-info pagamentos-lote.guias-codigo-barras-requisicao pagamentos-lote.transferencias-pix-info pagamentos-lote.transferencias-pix-requisicao pagamentos-lote.pix-info pagamentos-lote.boletos-info" # noqa - BASE_SUBDOMAIN = "api-ip" + BASE_PROD_ADDITION = "-ip" BASE_DOMAIN = ".bb.com.br/pagamentos-lote/v1" def _valida_lote_data(self, model, **kwargs): diff --git a/bb_wrapper/wrapper/pix_cob.py b/bb_wrapper/wrapper/pix_cob.py index 54164e97..6c25b909 100644 --- a/bb_wrapper/wrapper/pix_cob.py +++ b/bb_wrapper/wrapper/pix_cob.py @@ -1,6 +1,7 @@ from .bb import BaseBBWrapper from ..models.perfis import TipoInscricaoEnum from ..models.pix_cob import CobrancaPix +from ..constants import GW_APP_KEY from ..services.pixcode import PixCodeService @@ -10,9 +11,26 @@ class PIXCobBBWrapper(BaseBBWrapper): """ SCOPE = "cob.read cob.write pix.read pix.write" - BASE_SUBDOMAIN = "api-pix." - BASE_DOMAIN = ".bb.com.br/pix/v2" - BASE_SANDBOX_ADDITION = "hm" + + SANDBOX_BASE_URL = 'https://api-pix.hm.bb.com.br/pix/v2/' + BASE_URL = 'https://api-pix.bb.com.br/pix/v2/' + + def __init__(self, basic_token=None, is_sandbox=None, gw_app_key=None, verify_https=True, cert=None): + super().__init__( + basic_token=basic_token, + is_sandbox=is_sandbox, + gw_app_key=gw_app_key, + verify_https=verify_https, + cert=cert + ) + self.base_url = self.SANDBOX_BASE_URL if self._is_sandbox else self.BASE_URL + + def _construct_url(self, *args, **kwargs): + url = self.base_url + gw_dev_app_key = f"?gw-dev-app-key={self.gw_app_key}" + + url += f'{gw_dev_app_key}' + return url def listar_pix(self, inicio=None, fim=None, page=0): """ diff --git a/tests/wrapper/test_pix_cob.py b/tests/wrapper/test_pix_cob.py index b67204ed..7bdb8217 100644 --- a/tests/wrapper/test_pix_cob.py +++ b/tests/wrapper/test_pix_cob.py @@ -172,7 +172,7 @@ def test_construct_url_1(self): """ result = PIXCobBBWrapper()._construct_url(end_bar=True) - expected = "https://api-pix.hm.bb.com.br/pix/v2/?gw-dev-app-key=" + expected = "https://api-pix.hm.bb.com.br/pix/v2?gw-dev-app-key=" self.assertIn(expected, result) @@ -189,7 +189,6 @@ def test_construct_url_2(self): result = PIXCobBBWrapper()._construct_url(end_bar=False) expected = "https://api-pix.hm.bb.com.br/pix/v2?gw-dev-app-key=" - self.assertIn(expected, result) def test_consultar_cobranca_content_bizarro(self): From dc4d3eba86c1e6970eb4576e99f11b5a18fbb782 Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Mon, 12 Aug 2024 18:32:35 -0300 Subject: [PATCH 11/18] fmt --- bb_wrapper/wrapper/bb.py | 4 ++-- bb_wrapper/wrapper/pix_cob.py | 17 ++++++++++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/bb_wrapper/wrapper/bb.py b/bb_wrapper/wrapper/bb.py index 02d6753c..b20b52fa 100644 --- a/bb_wrapper/wrapper/bb.py +++ b/bb_wrapper/wrapper/bb.py @@ -16,8 +16,8 @@ class BaseBBWrapper(RequestsWrapper): BASE_SANDBOX_ADDITION = ".sandbox" BASE_PROD_ADDITION = "" BASE_DOMAIN = ".bb.com.br" - SANDBOX_BASE_URL = 'https://api-pix.hm.bb.com.br/pix/v2/' - BASE_URL = 'https://api-pix.bb.com.br/pix/v2/' + SANDBOX_BASE_URL = "https://api-pix.hm.bb.com.br/pix/v2/" + BASE_URL = "https://api-pix.bb.com.br/pix/v2/" SCOPE = "" diff --git a/bb_wrapper/wrapper/pix_cob.py b/bb_wrapper/wrapper/pix_cob.py index 6c25b909..84bf5e11 100644 --- a/bb_wrapper/wrapper/pix_cob.py +++ b/bb_wrapper/wrapper/pix_cob.py @@ -12,16 +12,23 @@ class PIXCobBBWrapper(BaseBBWrapper): SCOPE = "cob.read cob.write pix.read pix.write" - SANDBOX_BASE_URL = 'https://api-pix.hm.bb.com.br/pix/v2/' - BASE_URL = 'https://api-pix.bb.com.br/pix/v2/' + SANDBOX_BASE_URL = "https://api-pix.hm.bb.com.br/pix/v2/" + BASE_URL = "https://api-pix.bb.com.br/pix/v2/" - def __init__(self, basic_token=None, is_sandbox=None, gw_app_key=None, verify_https=True, cert=None): + def __init__( + self, + basic_token=None, + is_sandbox=None, + gw_app_key=None, + verify_https=True, + cert=None, + ): super().__init__( basic_token=basic_token, is_sandbox=is_sandbox, gw_app_key=gw_app_key, verify_https=verify_https, - cert=cert + cert=cert, ) self.base_url = self.SANDBOX_BASE_URL if self._is_sandbox else self.BASE_URL @@ -29,7 +36,7 @@ def _construct_url(self, *args, **kwargs): url = self.base_url gw_dev_app_key = f"?gw-dev-app-key={self.gw_app_key}" - url += f'{gw_dev_app_key}' + url += f"{gw_dev_app_key}" return url def listar_pix(self, inicio=None, fim=None, page=0): From 0ba7a37aeccf15a6c48cfbfe64ccfbc938218bce Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Tue, 13 Aug 2024 12:41:43 -0300 Subject: [PATCH 12/18] =?UTF-8?q?flexibiliza=20adi=C3=A7=C3=A3o=20de=20URL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bb_wrapper/wrapper/bb.py | 27 ++++++--------------------- bb_wrapper/wrapper/cobrancas.py | 3 ++- bb_wrapper/wrapper/pagamento_lote.py | 6 ++++-- 3 files changed, 12 insertions(+), 24 deletions(-) diff --git a/bb_wrapper/wrapper/bb.py b/bb_wrapper/wrapper/bb.py index b20b52fa..9965cba2 100644 --- a/bb_wrapper/wrapper/bb.py +++ b/bb_wrapper/wrapper/bb.py @@ -12,12 +12,12 @@ class BaseBBWrapper(RequestsWrapper): """ BASE_SCHEMA = "https://" - BASE_SUBDOMAIN = "api" - BASE_SANDBOX_ADDITION = ".sandbox" + # BASE_SUBDOMAIN = "api" + # BASE_SANDBOX_ADDITION = ".sandbox" BASE_PROD_ADDITION = "" BASE_DOMAIN = ".bb.com.br" - SANDBOX_BASE_URL = "https://api-pix.hm.bb.com.br/pix/v2/" - BASE_URL = "https://api-pix.bb.com.br/pix/v2/" + SANDBOX_BASE_URL = "" + BASE_URL = "" SCOPE = "" @@ -54,11 +54,9 @@ def __init__( raise ValueError("Configure o basic_token/gw_app_key do BB!") if self._is_sandbox: - self.base_url = self.SANDBOX_BASE_URL + base_url = self.SANDBOX_BASE_URL else: - self.base_url = self.BASE_URL - - base_url = self._construct_base_url() + base_url = self.BASE_URL super().__init__( *args, @@ -120,19 +118,6 @@ def _data(self): """ return getattr(self, f"_{self.__class__.__name__}__data", None) - def _construct_base_url(self): - if self._is_sandbox: - addition = self.BASE_SANDBOX_ADDITION - else: - addition = self.BASE_PROD_ADDITION - base_url = ( - f"{self.BASE_SCHEMA}" - f"{self.BASE_SUBDOMAIN}" - f"{addition}" - f"{self.BASE_DOMAIN}" - ) - return base_url - def _construct_url(self, *args, **kwargs): url = super()._construct_url(*args, **kwargs) diff --git a/bb_wrapper/wrapper/cobrancas.py b/bb_wrapper/wrapper/cobrancas.py index 778e08b3..0c189b22 100644 --- a/bb_wrapper/wrapper/cobrancas.py +++ b/bb_wrapper/wrapper/cobrancas.py @@ -7,7 +7,8 @@ class CobrancasBBWrapper(BaseBBWrapper): SCOPE = "cobrancas.boletos-info cobrancas.boletos-requisicao" - BASE_DOMAIN = ".bb.com.br/cobrancas/v2/boletos" + SANDBOX_BASE_URL = "https://api.sandbox.bb.com.br/cobrancas/v2/boletos" + BASE_URL = "https://api.bb.com.br/cobrancas/v2/boletos" def __init__( self, diff --git a/bb_wrapper/wrapper/pagamento_lote.py b/bb_wrapper/wrapper/pagamento_lote.py index 599bd577..313e471c 100644 --- a/bb_wrapper/wrapper/pagamento_lote.py +++ b/bb_wrapper/wrapper/pagamento_lote.py @@ -17,8 +17,10 @@ class PagamentoLoteBBWrapper(BaseBBWrapper): """ SCOPE = "pagamentos-lote.lotes-requisicao pagamentos-lote.transferencias-info pagamentos-lote.transferencias-requisicao pagamentos-lote.cancelar-requisicao pagamentos-lote.devolvidos-info pagamentos-lote.lotes-info pagamentos-lote.pagamentos-guias-sem-codigo-barras-info pagamentos-lote.pagamentos-info pagamentos-lote.pagamentos-guias-sem-codigo-barras-requisicao pagamentos-lote.pagamentos-codigo-barras-info pagamentos-lote.boletos-requisicao pagamentos-lote.guias-codigo-barras-info pagamentos-lote.guias-codigo-barras-requisicao pagamentos-lote.transferencias-pix-info pagamentos-lote.transferencias-pix-requisicao pagamentos-lote.pix-info pagamentos-lote.boletos-info" # noqa - BASE_PROD_ADDITION = "-ip" - BASE_DOMAIN = ".bb.com.br/pagamentos-lote/v1" + # BASE_PROD_ADDITION = "-ip" + # BASE_DOMAIN = ".bb.com.br/pagamentos-lote/v1" + SANDBOX_BASE_URL = "https://api.sandbox.bb.com.br/pagamentos-lote/v1" + BASE_URL = "https://api-ip.bb.com.br/pagamentos-lote/v1" def _valida_lote_data(self, model, **kwargs): try: From 6146e5d3ad6f461b62b97a16737e6e50b7ec7d3c Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Tue, 13 Aug 2024 12:41:52 -0300 Subject: [PATCH 13/18] =?UTF-8?q?flexibiliza=20adi=C3=A7=C3=A3o=20de=20URL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bb_wrapper/wrapper/pix_cob.py | 29 ++--------------------------- 1 file changed, 2 insertions(+), 27 deletions(-) diff --git a/bb_wrapper/wrapper/pix_cob.py b/bb_wrapper/wrapper/pix_cob.py index 84bf5e11..982172d0 100644 --- a/bb_wrapper/wrapper/pix_cob.py +++ b/bb_wrapper/wrapper/pix_cob.py @@ -1,7 +1,6 @@ from .bb import BaseBBWrapper from ..models.perfis import TipoInscricaoEnum from ..models.pix_cob import CobrancaPix -from ..constants import GW_APP_KEY from ..services.pixcode import PixCodeService @@ -12,32 +11,8 @@ class PIXCobBBWrapper(BaseBBWrapper): SCOPE = "cob.read cob.write pix.read pix.write" - SANDBOX_BASE_URL = "https://api-pix.hm.bb.com.br/pix/v2/" - BASE_URL = "https://api-pix.bb.com.br/pix/v2/" - - def __init__( - self, - basic_token=None, - is_sandbox=None, - gw_app_key=None, - verify_https=True, - cert=None, - ): - super().__init__( - basic_token=basic_token, - is_sandbox=is_sandbox, - gw_app_key=gw_app_key, - verify_https=verify_https, - cert=cert, - ) - self.base_url = self.SANDBOX_BASE_URL if self._is_sandbox else self.BASE_URL - - def _construct_url(self, *args, **kwargs): - url = self.base_url - gw_dev_app_key = f"?gw-dev-app-key={self.gw_app_key}" - - url += f"{gw_dev_app_key}" - return url + SANDBOX_BASE_URL = "https://api-pix.hm.bb.com.br/pix/v2" + BASE_URL = "https://api-pix.bb.com.br/pix/v2" def listar_pix(self, inicio=None, fim=None, page=0): """ From c206ebb4ebcdcb4dd7d0a5ea998dd2e7079f09c0 Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Tue, 13 Aug 2024 12:42:01 -0300 Subject: [PATCH 14/18] =?UTF-8?q?corrige=20testes=20unit=C3=A1rios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/wrapper/test_cobrancas.py | 2 +- tests/wrapper/test_pix_cob.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/wrapper/test_cobrancas.py b/tests/wrapper/test_cobrancas.py index 183d5c07..b7100ee7 100644 --- a/tests/wrapper/test_cobrancas.py +++ b/tests/wrapper/test_cobrancas.py @@ -295,6 +295,6 @@ def test_construct_url_1(self): """ result = CobrancasBBWrapper()._construct_url(end_bar=True) - expected = "https://api.sandbox.bb.com.br/cobrancas/v2/boletos/?gw-dev-app-key=" + expected = "https://api.sandbox.bb.com.br/cobrancas/v2/boletos/?gw-dev-app-key=KEY" self.assertIn(expected, result) diff --git a/tests/wrapper/test_pix_cob.py b/tests/wrapper/test_pix_cob.py index 7bdb8217..feebde6b 100644 --- a/tests/wrapper/test_pix_cob.py +++ b/tests/wrapper/test_pix_cob.py @@ -168,11 +168,11 @@ def test_construct_url_1(self): - for chamado PIXCobBBWrapper()._construct_url(end_bar=True, search=None) Então: - o resultado deve ter pelo menos o texto - 'https://api.hm.bb.com.br/pix/v1/?gw-dev-app-key=' + 'https://api-pix.hm.bb.com.br/pix/v2/?gw-dev-app-key=KEY' """ result = PIXCobBBWrapper()._construct_url(end_bar=True) - expected = "https://api-pix.hm.bb.com.br/pix/v2?gw-dev-app-key=" + expected = "https://api-pix.hm.bb.com.br/pix/v2/?gw-dev-app-key=KEY" self.assertIn(expected, result) @@ -184,7 +184,7 @@ def test_construct_url_2(self): - for chamado PIXCobBBWrapper()._construct_url(end_bar=False) Então: - o resultado deve ter pelo menos o texto - 'https://api.hm.bb.com.br/pix/v1?gw-dev-app-key=' + 'https://api-pix.hm.bb.com.br/pix/v2?gw-dev-app-key=' """ result = PIXCobBBWrapper()._construct_url(end_bar=False) From 85042ed273439d7cbeaddb8194ad4783926c757b Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Tue, 13 Aug 2024 12:42:25 -0300 Subject: [PATCH 15/18] fmt --- tests/wrapper/test_cobrancas.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/wrapper/test_cobrancas.py b/tests/wrapper/test_cobrancas.py index b7100ee7..ad662192 100644 --- a/tests/wrapper/test_cobrancas.py +++ b/tests/wrapper/test_cobrancas.py @@ -295,6 +295,8 @@ def test_construct_url_1(self): """ result = CobrancasBBWrapper()._construct_url(end_bar=True) - expected = "https://api.sandbox.bb.com.br/cobrancas/v2/boletos/?gw-dev-app-key=KEY" + expected = ( + "https://api.sandbox.bb.com.br/cobrancas/v2/boletos/?gw-dev-app-key=KEY" + ) self.assertIn(expected, result) From ffae78a36670b74a5b4ed8baf02eda33f8180519 Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Wed, 14 Aug 2024 12:42:16 -0300 Subject: [PATCH 16/18] =?UTF-8?q?remove=20m=C3=A9todo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bb_wrapper/wrapper/bb.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/bb_wrapper/wrapper/bb.py b/bb_wrapper/wrapper/bb.py index 9965cba2..8fddc7b7 100644 --- a/bb_wrapper/wrapper/bb.py +++ b/bb_wrapper/wrapper/bb.py @@ -197,13 +197,6 @@ def __oauth_url(self): f"/oauth/token" ) - @property - def gw_app_key(self): - """ - Propriedade para acessar o app key de forma controlada. - """ - return self.__gw_app_key - def __authenticate(self): """ https://forum.developers.bb.com.br/t/status-code-415-unsupported-media-type-somente-em-producao/1123 From c8a7c90d41bab12c0ffb7337d150947298036772 Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Wed, 14 Aug 2024 15:06:32 -0300 Subject: [PATCH 17/18] =?UTF-8?q?remove=20c=C3=B3digo=20comentado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bb_wrapper/wrapper/bb.py | 2 -- bb_wrapper/wrapper/pagamento_lote.py | 2 -- 2 files changed, 4 deletions(-) diff --git a/bb_wrapper/wrapper/bb.py b/bb_wrapper/wrapper/bb.py index 8fddc7b7..d2f84993 100644 --- a/bb_wrapper/wrapper/bb.py +++ b/bb_wrapper/wrapper/bb.py @@ -12,8 +12,6 @@ class BaseBBWrapper(RequestsWrapper): """ BASE_SCHEMA = "https://" - # BASE_SUBDOMAIN = "api" - # BASE_SANDBOX_ADDITION = ".sandbox" BASE_PROD_ADDITION = "" BASE_DOMAIN = ".bb.com.br" SANDBOX_BASE_URL = "" diff --git a/bb_wrapper/wrapper/pagamento_lote.py b/bb_wrapper/wrapper/pagamento_lote.py index 313e471c..580357c9 100644 --- a/bb_wrapper/wrapper/pagamento_lote.py +++ b/bb_wrapper/wrapper/pagamento_lote.py @@ -17,8 +17,6 @@ class PagamentoLoteBBWrapper(BaseBBWrapper): """ SCOPE = "pagamentos-lote.lotes-requisicao pagamentos-lote.transferencias-info pagamentos-lote.transferencias-requisicao pagamentos-lote.cancelar-requisicao pagamentos-lote.devolvidos-info pagamentos-lote.lotes-info pagamentos-lote.pagamentos-guias-sem-codigo-barras-info pagamentos-lote.pagamentos-info pagamentos-lote.pagamentos-guias-sem-codigo-barras-requisicao pagamentos-lote.pagamentos-codigo-barras-info pagamentos-lote.boletos-requisicao pagamentos-lote.guias-codigo-barras-info pagamentos-lote.guias-codigo-barras-requisicao pagamentos-lote.transferencias-pix-info pagamentos-lote.transferencias-pix-requisicao pagamentos-lote.pix-info pagamentos-lote.boletos-info" # noqa - # BASE_PROD_ADDITION = "-ip" - # BASE_DOMAIN = ".bb.com.br/pagamentos-lote/v1" SANDBOX_BASE_URL = "https://api.sandbox.bb.com.br/pagamentos-lote/v1" BASE_URL = "https://api-ip.bb.com.br/pagamentos-lote/v1" From a0d631a3f68dad14795c6f7f70949bb8ae909022 Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Wed, 14 Aug 2024 17:10:17 -0300 Subject: [PATCH 18/18] =?UTF-8?q?remove=20vari=C3=A1veis?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bb_wrapper/wrapper/bb.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/bb_wrapper/wrapper/bb.py b/bb_wrapper/wrapper/bb.py index d2f84993..ac02df1a 100644 --- a/bb_wrapper/wrapper/bb.py +++ b/bb_wrapper/wrapper/bb.py @@ -11,9 +11,6 @@ class BaseBBWrapper(RequestsWrapper): wrapper base do BB (Banco do Brasil) """ - BASE_SCHEMA = "https://" - BASE_PROD_ADDITION = "" - BASE_DOMAIN = ".bb.com.br" SANDBOX_BASE_URL = "" BASE_URL = "" @@ -187,13 +184,10 @@ def __should_authenticate(self): return is_token_missing or is_token_expired def __oauth_url(self): - return ( - f"{BaseBBWrapper.BASE_SCHEMA}" - f"oauth" - f'{".sandbox" if self._is_sandbox else ""}' - f"{BaseBBWrapper.BASE_DOMAIN}" - f"/oauth/token" - ) + if self._is_sandbox: + return "https://oauth.sandbox.bb.com.br/oauth/token" + else: + return "https://oauth.bb.com.br/oauth/token" def __authenticate(self): """