Comunidade
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;
}
```
Posted by Luiz Acácio Da Silva Pereira 4 months ago
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"
}
]
}
Posted by Douglas Souza 7 months ago
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
Posted by Renato 7 months ago
PIX DICT KEY
Ao fazer um get na url <https://api.sandbox.empresas.btgpactual.com/v1/companies/{companyId}/pix/dict-keys/{pixKey}> o erro 404 e informado
Posted by JEAN CARLOS COELHO 8 months ago
Beneficiário final
Para gerar meus boletos preciso dos dados do beneficiário final na api e não achei na documentação essas entradas... como proceder?
Posted by Wanderson Niquini 8 months ago
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.
Posted by OBNER KNOENER MOZARINO 9 months ago
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"}}}%
```
Posted by Carla Brunelli 9 months ago
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.
Posted by Daniel Maycon Malinoski 9 months ago
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.
Posted by Leandro Diniz Silva 9 months ago
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.
Posted by Leandro Diniz Silva 10 months ago