Comunidade

Ask a Question

Dúvida na autenticação para criar boleto

Bom dia. Estamos implementando a integração com o BTG para criação de boletos. Estou usando o processo do Authorization Code. Eu consegui obter o code e consegui obter o token, porem não consegui criar um boleto. Deu mensagem de não autorizado. (Utilizando o access-token). Obs. No retorno da api, veio o access-token mas não vieram o refresh-token e o id-token {"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCI6ImF… ","scope":null,"token_type":"Bearer","expires_in":86400} Eu vi numa outra postagem aqui na comunidade que poderia ser usado o refresh-token para esse processo de autenticação para criação de boletos, porem não consegui entender o por que de não ter retornado o refresh-token. Estou fazendo a chamada da sseguinte forma: using (var client1 = new HttpClient()) { client1.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes(credentials))); List\<KeyValuePair\<string, string>> requestData1 = new List\<KeyValuePair\<string, string>>(); requestData.Add(new KeyValuePair\<string, string>("grant_type", "client_credentials")); requestData.Add(new KeyValuePair\<string, string>("code", authorizationCode)); requestData.Add(new KeyValuePair\<string, string>("redirect_uri", redirectUri)); requestData.Add(new KeyValuePair\<string, string>("content-type", "application/x-www-form-urlencoded")); FormUrlEncodedContent requestBody1 = new FormUrlEncodedContent(requestData1); ```csharp HttpResponseMessage response1 = await client.PostAsync($"{parametroUrlToken}", requestBody1); string jsonstring1 = response.Content.ReadAsStringAsync().Result; AuthenticateApiBtgResponse resp1 = JsonConvert.DeserializeObject<AuthenticateApiBtgResponse>(jsonstring1); return resp.access_token; } ```

Erro ao gerar cobrança PIX

Fiquei com duvida o que passo no taxId ali do payer. Inicialmente imaginei que o taxId seria o CPF, porém, tem me retornado invalido para todo CPF que já tentei mandar. Como ele pede numero inteiro tbm perguntei se seria CPF visto que tem CPF que começa com 0 e não tem numero que começa com zero. Gostaria de saber o que seria esse taxId. BODY: { "expiresIn": 86400, "amount": { "original": 20, "allowCustomerChangeValue": false }, "payer": { "name": "Raphael Isaac Bandeira", "taxId": 10698085710 }, "pixKey": "23869433000183", "locationId": "b226b648-9410-42d3-88f3-497c23608a3d", "displayText": "Pix de Teste" } RESPONSE: { "errors": [ { "fieldName": "taxId", "message": "the taxId 10698085710 is Invalid the format must be a string with only numbers and a valid taxId", "codeError": "invalidTaxId" } ] }

TRANSFERENCIAS

Bom dia, estou iniciando uma transferência e ambiente de produção, com a aplicação autorizada, usei os scopes abaixo: empresas.btgpactual.com/accounts empresas.btgpactual.com/bank-slips empresas.btgpactual.com/payments empresas.btgpactual.com/pix-cash-in empresas.btgpactual.com/transfers openid { "debitParty":{ "branchCode":"50", "number":"CONTA DE ORIGEM" }, "creditParty":{ "pixKey":"CHAVE PIX DE DESTINO", "keyType":"EMAIL" }, "tags":{ "externalId":"rrt-12345678912458" }, "amount":1.0, "scheduledDate":"2023-04-28T10:33:00.000Z", "reason":"mensagem do comprovante" } Porém em retorna o erro 500 sem nenhum tipo de mensagem, como procedo nesse caso? Obrigado

Geração de boletos via api BTG

Estamos tentando implementar em nosso sistema a geração de boletos através da api do BTG, mas estamos tendo dificuldade para implementar a parte de autenticação/geração de token no BTG Id. Inicialmente implementamos o método de autenticação Client Credentials, mas ao tentar utilizar o token gerado por esse método de autenticação para gerar o boleto em: <https://api.sandbox.empresas.btgpactual.com/v1/bank-slips>, recebíamos o retorno de token inválido, ao verificar a documentação: <https://developers.empresas.btgpactual.com/reference/post_bank-slips> percebemos que o método de autenticação exigido por essa rota é o Authorization Code. A dúvidaé a seguinte, percebi que o método de autenticação Authorization Code utiliza a interação com o browser para informar as credenciais do cliente, mas nossa aplicação não utiliza interação com o cliente e a geração do boleto é feita por nossa api. Como devemos proceder nesse caso? Já que o método de autenticação Client Credentials que pela descrição na documentação seria o mais adequado para nosso tipo de aplicação, não funciona para a geração de boletos do BTG.

Duvidas, tenho um app cad. no sandbox: id da app: 67755519-95a4-4a69-b2f3-cc9d79e09ae6

Minha App vai rodar localmente em ambiente seguro: Consegui recuperar o token na url: <https://id.sandbox.btgpactual.com/oauth2/token> passando o cliendid e cliente_secret ``` { "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6ImF0K2p3dCIsImtpZCI6Im05TDBhUGZkdGdkVUNCMHkyaTJKTi1vWWNFVGFJNG1ROTNqMER3Wi1LOFEifQ.eyJzdWIiOm51bGwsImdyYW50X3R5cGUiOiJjbGllbnRfY3JlZGVudGlhbHMiLCJzY29wZSI6ImVtcHJlc2FzLmJ0Z3BhY3R1YWwuY29tL2FjY291bnRzIiwiaXNzIjoiaHR0cHM6Ly9pZC5zYW5kYm94LmJ0Z3BhY3R1YWwuY29tIiwiZXhwIjoxNjc4MzAwMzgxLCJpYXQiOjE2NzgyMTM5ODEsImNsaWVudF9pZCI6IjY3NzU1NTE5LTk1YTQtNGE2OS1iMmYzLWNjOWQ3OWUwOWFlNiIsImp0aSI6InFlbURUWHRzaFhLVENZOXVMY1BGZlBCUHNUNHlOVmZ1cXF3OGpQWEFMclEifQ.CQCshN210pwVx-ZPaf34-ny4zo32hdJT3w-NY-3Db8mWBE1vNSb3uwX101EBHziKE4R4hYIj_5dQOIjtMhnqR8HUw5xj0KYc8d1btiQy1da0Bp8ulTtCkPEwi7PD475Vpt9EeKg6tkMb2d_9TE6y08LBTRkn-vtaSGIxe6PnVLfA9r4d3FEcNq6nAd9TKOKE_d-v4T3F5yoFrADYoGzVmBvw-Yh25FvYnyhcLkhLLPa1Zcqtxls6C-79vKvR9ToKXurII8J79_4vy3CH-xe9djo_evXv0fXHhe0EEuSjsS8Eb2guVo-Jgwql2hoErcCrPudD2_bAMOn06dtbnMAGGQ", "scope": "empresas.btgpactual.com/accounts", "token_type": "Bearer", "expires_in": 86400 } ``` Tentei executar o codigo abaixo copiado de "[ https://developers.empresas.btgpactual.com/reference/post_companies-companyid-pix-cash-in-locations](https://developers.empresas.btgpactual.com/reference/post_companies-companyid-pix-cash-in-locations)" ``` curl --request POST \ --url https://api.sandbox.empresas.btgpactual.com/v1/companies/30306294000145/pix-cash-in/locations \ --header 'accept: application/json' \ --header 'authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6ImF0K2p3dCIsImtpZCI6Im05TDBhUGZkdGdkVUNCMHkyaTJKTi1vWWNFVGFJNG1ROTNqMER3Wi1LOFEifQ.eyJzdWIiOm51bGwsImdyYW50X3R5cGUiOiJjbGllbnRfY3JlZGVudGlhbHMiLCJzY29wZSI6ImVtcHJlc2FzLmJ0Z3BhY3R1YWwuY29tL2FjY291bnRzIiwiaXNzIjoiaHR0cHM6Ly9pZC5zYW5kYm94LmJ0Z3BhY3R1YWwuY29tIiwiZXhwIjoxNjc4MzAwMzgxLCJpYXQiOjE2NzgyMTM5ODEsImNsaWVudF9pZCI6IjY3NzU1NTE5LTk1YTQtNGE2OS1iMmYzLWNjOWQ3OWUwOWFlNiIsImp0aSI6InFlbURUWHRzaFhLVENZOXVMY1BGZlBCUHNUNHlOVmZ1cXF3OGpQWEFMclEifQ.CQCshN210pwVx-ZPaf34-ny4zo32hdJT3w-NY-3Db8mWBE1vNSb3uwX101EBHziKE4R4hYIj_5dQOIjtMhnqR8HUw5xj0KYc8d1btiQy1da0Bp8ulTtCkPEwi7PD475Vpt9EeKg6tkMb2d_9TE6y08LBTRkn-vtaSGIxe6PnVLfA9r4d3FEcNq6nAd9TKOKE_d-v4T3F5yoFrADYoGzVmBvw-Yh25FvYnyhcLkhLLPa1Zcqtxls6C-79vKvR9ToKXurII8J79_4vy3CH-xe9djo_evXv0fXHhe0EEuSjsS8Eb2guVo-Jgwql2hoErcCrPudD2_bAMOn06dtbnMAGGQ' \ --header 'content-type: application/json' \ --data ' { "type": "cob", "description": "descrição de exemplo" }' ``` Retornou a msg e no ambiente do api reference a mesma mensagem, o que está errado ? obs. com o cnpj da empresa inicial 09.296 ..... acontece a mesma coisa ```json json {"fault":{"faultstring":"Invalid token: policy(VerifyJWT)","detail":{"errorcode":"steps.jwt.InvalidToken"}}}% ``` Tentei executar a chamada somente para teste o mesmo problema ``` curl --request GET \ --url https://api.sandbox.empresas.btgpactual.com/v1/accounts \ --header 'accept: application/json' \ --header 'authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6ImF0K2p3dCIsImtpZCI6Im05TDBhUGZkdGdkVUNCMHkyaTJKTi1vWWNFVGFJNG1ROTNqMER3Wi1LOFEifQ.eyJzdWIiOm51bGwsImdyYW50X3R5cGUiOiJjbGllbnRfY3JlZGVudGlhbHMiLCJzY29wZSI6ImVtcHJlc2FzLmJ0Z3BhY3R1YWwuY29tL2FjY291bnRzIiwiaXNzIjoiaHR0cHM6Ly9pZC5zYW5kYm94LmJ0Z3BhY3R1YWwuY29tIiwiZXhwIjoxNjc4MzAwMzgxLCJpYXQiOjE2NzgyMTM5ODEsImNsaWVudF9pZCI6IjY3NzU1NTE5LTk1YTQtNGE2OS1iMmYzLWNjOWQ3OWUwOWFlNiIsImp0aSI6InFlbURUWHRzaFhLVENZOXVMY1BGZlBCUHNUNHlOVmZ1cXF3OGpQWEFMclEifQ.CQCshN210pwVx-ZPaf34-ny4zo32hdJT3w-NY-3Db8mWBE1vNSb3uwX101EBHziKE4R4hYIj_5dQOIjtMhnqR8HUw5xj0KYc8d1btiQy1da0Bp8ulTtCkPEwi7PD475Vpt9EeKg6tkMb2d_9TE6y08LBTRkn-vtaSGIxe6PnVLfA9r4d3FEcNq6nAd9TKOKE_d-v4T3F5yoFrADYoGzVmBvw-Yh25FvYnyhcLkhLLPa1Zcqtxls6C-79vKvR9ToKXurII8J79_4vy3CH-xe9djo_evXv0fXHhe0EEuSjsS8Eb2guVo-Jgwql2hoErcCrPudD2_bAMOn06dtbnMAGGQ' ``` ```json {"fault":{"faultstring":"Failed to Resolve Variable : policy(VerifyJWT) variable(null)","detail":{"errorcode":"steps.jwt.FailedToResolveVariable"}}}% ```

Erro ao gerar pix cobrança

Quando tento gerar o pix de cobrança seguindo a /documentação da própria BTG recebo erro 500 com as seguintes informações. ``` { "fault": { "faultstring": "steps.flowcallout.FCVariableResolutionFailed", "detail": { "errorcode": "steps.flowcallout.FCVariableResolutionFailed" } } } ``` os parâmetros q estou passando são ``` $response = Http::withHeaders([ 'Content-Type' => 'application/json', 'Authorization' => 'Bearer ' . $this->getAccessToken() ])->post("{$this->base_url}/companies/{$this->company_id}/pix-cash-in/instant-collections", [ 'pixKey' => $this->pix_key, 'amount' => [ 'original' => $data['amount'], 'allowCustomerChangeValue' => false, ], 'displayText' => $data['description'], 'payer' => [ 'name' => $data['payer']['name'], 'taxId' => $data['payer']['taxId'] ], 'tags' => [ 'internalId' => $data['internal_id'] ] ]); ``` Aguardo um retorno mais breve possível sobre o erro.

API PIX - Erro 500

Ao realizar uma requisição como mostrada na [documentação](https://developers.empresas.btgpactual.com/reference/post_companies-companyid-pix-cash-in-instant-collections) da API de PIX, como mostrada no link abaixo. Eu recebo erro 500, seguido de sua descrição. { "fault": { "faultstring": "steps.flowcallout.FCVariableResolutionFailed", "detail": { "errorcode": "steps.flowcallout.FCVariableResolutionFailed" } } } Meu código para requisição usando o guzzle como recomendado na documentação. onde $client é uma instância da classe do guzzle. ```Text php $response = $client->request('POST', $this->config->get('pix_endpoint_base_route') . '/v1/companies/' . $this->config->get('pix_company_id') . '/pix-cash-in/instant-collections', [ 'form_params' => [ "expiresIn" => 1800, "amount" => [ "original" => (float) $total, "allowCustomerChangeValue" => (bool) false ], "payer" => [ "name" => (string) $customer_name, "taxId" => (string) $customer_cpf ], "pixKey" => (string) $kik_pix_key, "locationId" => (string) $location_id, "displayText"=> "Pix" ], 'headers' => [ 'accept' => 'application/json', 'authorization' => 'Bearer ' . $this->config->get('pix_access_token'), 'content-type' => 'application/json', ], ]); ``` E ao testar na propria página da [documentação](https://developers.empresas.btgpactual.com/reference/post_companies-companyid-pix-cash-in-instant-collections) onde é possível realizar um teste colocando informações básicas o mesmo erro é retornado.

Gerar Pagamento PIX pela API

Estou tentando gerar um pagamento por PIX pela API do BTG usando a seguinte requisição POST: <https://api.sandbox.empresas.btgpactual.com/v1/companies/{meuCompanyId}/pix-cash-in/instant-collections> Header ``` 'Accept' => 'application/json', 'Authorization' => 'Bearer {Meu Token} ', 'Content-Type' => 'application/json', ``` Body (Esta como um array, mas na requisição é convertida para JSON) ``` "expiresIn" => 1800, "amount" => [ "original" => 10.00, "allowCustomerChangeValue" => False ], // Object "payer" => [ "name" => "Fulano de Tal", "taxId" => 11111111111 ], //Object "pixKey" => "MinhaChave", "locationId" => "LocationIdExemplo", "displayText" => "Pix de Teste" ``` E ao fazer a requisição gera o seguinte erro: {"fault":{"faultstring":"Failed to Resolve Variable : policy(VerifyJWT) variable(null)","detail":{"errorcode":"steps.jwt.FailedToResolveVariable"}}} Esse problema acontece quando executo a requisição pelo CURL da linguagem PHP, quando executo pelo POSTMAN (Software de Terceiros) o retorno da API não encontra nenhum erro e retorna os dados corretos da geração do pedido de pagamento PIX.