Histórico de mensagens sobre js em dúvidas

EXIBINDO CONVERSAS RECENTES:

Texto: js
Canal: dúvidas
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Bom dia, @matheusramos., tudo bem?
Para configurar o webhook em uma chave Pix você pode utilizar os seguintes exemplos de nosso SDK de Java:
JSON
map

Avatar discord do usuario lessaapolinario

lessaapolinario

Estou usando nodejs

Avatar discord do usuario matheusramos.

matheusramos.

Por sinal ao testar a requisição recebo o seguinte JSON {
"mapType": "java.util.HashMap",
"empty": false
}

Avatar discord do usuario matheusramos.

matheusramos.

Ver Respostas

Boa tarde, estou com dificuldades em integrar a api pix no Spring Boot, configurei o projeto com os certificados e os IDs porem toda vez que testo recebo esse erro java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext)
imagem enviada na mensagem pelo usuario matheusramos.

Avatar discord do usuario lessaapolinario

lessaapolinario

Ver Respostas

Boa tarde, estou tentando configurar uma url de webhook pix, mas diz que meu webhookUrl está inválido. Tenho uma api nodejs que está hospedada num servidor e rodando em https. Ao acessar a rota GET /configPix do meu backend que usa o método pixConfigWebhook da classe EfiPay do pacote sdk-node-apis-efi do npm. A url do webhook é a url do meu servidor https + /webhookPix, no meu backend tenho uma rota post /webhookPix/pix, tentei de tudo, mas não tive sucesso. Abaixo é mostrada a mensagem de erro:

{
nome: 'webhook_invalido',
mensagem: 'A URL informada respondeu com o código HTTP 404'
}

Avatar discord do usuario slinkp01

slinkp01

Ver Respostas

Segue:

import requests

# Configurações da API do Efi Bank
CLIENT_ID = "xxxxxxxx"
CLIENT_SECRET = "xxxxxxxxxx"

# URL para obter o token
TOKEN_URL = "https://cobrancas-h.api.efipay.com.br/v1/authorize"
# URL para buscar a lista de boletos
BOLETOS_URL = "https://cobrancas.api.efipay.com.br"

# Passo 1: Autenticação para obter o token de acesso
auth_data = {
"grant_type": "client_credentials",
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET
}

token_response = requests.post(TOKEN_URL, data=auth_data)
token_json = token_response.json()

if "access_token" in token_json:
access_token = token_json["access_token"]

# Passo 2: Buscar todos os boletos
headers = {"Authorization": f"Bearer {access_token}"}

params = {"limit": 100} # Define a quantidade de boletos por requisição (máximo permitido pela API)

boleto_response = requests.get(BOLETOS_URL, headers=headers, params=params)

if boleto_response.status_code == 200:
boletos = boleto_response.json()["boletos"] # Lista de boletos retornados

# Exibir status de cada boleto
for boleto in boletos:
print(f"Boleto ID: {boleto['id']} - Status: {boleto['status']} - Cliente: {boleto['cliente']['nome']}")
else:
print("Erro ao buscar boletos:", boleto_response.json())
else:
print("Erro ao obter token de acesso:", token_json)

Avatar discord do usuario slinkp01

slinkp01

Ver Respostas

Bom dia

Não consigo verificar o status dos boletos através dessa api, podem me ajudar?

import requests

# Configurações da API do Efi Bank
CLIENT_ID = "seu_client_id"
CLIENT_SECRET = "seu_client_secret"

# URL para obter o token
TOKEN_URL = "https://api.efi.bank/open-banking/oauth/token"
# URL para buscar a lista de boletos
BOLETOS_URL = "https://api.efi.bank/open-banking/boleto/v1/boletos"

# Passo 1: Autenticação para obter o token de acesso
auth_data = {
"grant_type": "client_credentials",
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET
}

token_response = requests.post(TOKEN_URL, data=auth_data)
token_json = token_response.json()

if "access_token" in token_json:
access_token = token_json["access_token"]

# Passo 2: Buscar todos os boletos
headers = {"Authorization": f"Bearer {access_token}"}

params = {"limit": 100} # Define a quantidade de boletos por requisição (máximo permitido pela API)

boleto_response = requests.get(BOLETOS_URL, headers=headers, params=params)

if boleto_response.status_code == 200:
boletos = boleto_response.json()["boletos"] # Lista de boletos retornados

# Exibir status de cada boleto
for boleto in boletos:
print(f"Boleto ID: {boleto['id']} - Status: {boleto['status']} - Cliente: {boleto['cliente']['nome']}")
else:
print("Erro ao buscar boletos:", boleto_response.json())
else:
print("Erro ao obter token de acesso:", token_json)

Avatar discord do usuario thagmrs

thagmrs

Ver Respostas

Bom dia! Estou com um problema na chamada da api /v1/charges pra listar todos os tipos de cobrança de carnet q eu tenho. Eu tento passar os parâmetros necessários conforme doc e ele fala q o charge_type é obrigatório, mas eu estou passando. Inclusive no payload cheguei a deixar só o charge_type pra ver e nem assim ele reconhece. Queria saber se precisa passar o json em outro padrão, pois a documentação nessa parte não está tão clara
imagem enviada na mensagem pelo usuario thagmrs

Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Na nova API ao consultar o token você vai ter acesso ao JSON com as informações da cobrança.
No link enviado temos exemplos.
A estrutura muda completamente ao se comparar com o Fortunus

Avatar discord do usuario marcelo_efi

marcelo_efi

Ver Respostas

Em nosso repositório, você encontra exemplos de como consumir a biblioteca.

Para carregar o JavaScript em uma WebView, recomendo consultar a documentação do Flutter.

Avatar discord do usuario higorvergara

higorvergara

Fala rapaziada, beleza!?
Bem queria saber se o pacote Flutter EfiPay gera o payment_token, se não gera qual a melhor forma para quem não usa NODE.js ?
Grato!

Avatar discord do usuario guilhermesouzar

guilhermesouzar

Ver Respostas

Apenas retornando aqui a minha solução...
Caso o destinatario do repasse for um cnpj é preciso trocar o atributo no corpo do json. Ao invés de 'cpf: 0123456789789' é necessário mudar para 'cnpj: 0123456789789'. @jessica_efi Seria interessante esta informação na documentação. Obrigado pelo rápido suporte.

Avatar discord do usuario gabriel_efi

gabriel_efi

Ver Respostas

Como forma de mitigar o seu problema enquanto trabalha em uma solução ou que verifiquemos do nosso lado uma atualização, @allefrodrigo, você pode substituir no arquivo endpoints.js linha 89 o seguinte código:

js
if (!this.auth || this.isExpired()) {
this.authError = await this.authenticate()
}

por

js
this.authError = await this.authenticate()

Ou seja, removendo a verificação de expiração que atualizaria o token a cada 1 hora para a mesma API. Desse modo, o token será atualizado em toda requisição (o que pode gerar um pequeno atraso na carga do seu serviço), mas que corrigiria por ora o erro que está enfrentando.

Avatar discord do usuario allefrodrigo

allefrodrigo

sdk do node-js no caso

Avatar discord do usuario brandao0702

brandao0702

Ver Respostas

obrigado pelo retorno, talvez nao tenha me expressado corretamente, mas quero perguntar se esses eventos não ocorrem similar a esse trecho aqui:

try {
$api = new EfiPay($options);
$pay_charge = $api->createOneStepCharge($params = [], $body);
echo json_encode($pay_charge);
} catch (EfiException $e) {
print_r($e->code);
print_r($e->error);
print_r($e->errorDescription);
} catch (Exception $e) {
print_r($e->getMessage());
}

Avatar discord do usuario bgeneto

bgeneto

Ver Respostas

Olá! Já estão marcados mas ainda recebo:

json
{
"error": "insufficient_scope",
"error_description": "Access token has insufficient scope"
}

imagem enviada na mensagem pelo usuario bgeneto

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Olá, @gabrielkaka123. Bom dia! Tudo bem e com você?

A forma ideal de verificar os pagamentos de cobranças Pix é usando um webhook. Para isso, você configura através do endpoint PUT /v2/webhook/:chave, uma URL do seu site associada à chave Pix usada nas cobranças. Assim, quando uma cobrança for paga, a API do Efí envia automaticamente uma notificação para sua URL com um JSON contendo as informações do Pix.

Entre essas informações estará o txid (identificador do Pix que você emitiu). Com isso, você poderá fazer a conciliação e realizar processos como o envio do e-mail que deseja.

Se tiver qualquer outra dúvida, conte com a gente!

Avatar discord do usuario flockgamerr

flockgamerr

js
{
"nome": "documento_bloqueado",
"mensagem": "O documento desta conta tem bloqueios que impedem essa operação. Entre em contato em nossos canais de comunicação para maiores esclarecimentos."
}

Avatar discord do usuario afyterr

afyterr

Ver Respostas

try {
// Verificar o estado da cobrança
const isCobAtiva = await verificarEstadoCob(txid);
if (!isCobAtiva) {
return res.status(400).json({ message: 'A cobrança não está ativa.' });
}

// Verificar o estado da configuração de Split
const isSplitAtivo = await verificarEstadoSplit(txid, splitConfigId);
if (!isSplitAtivo) {
return res.status(400).json({ message: 'A configuração de Split não está ativa.' });
}

// Garantir que os valores somam corretamente
const valoresValidos = await validarSomaValores(txid, splitConfigId);
if (!valoresValidos) {
return res.status(400).json({
message: 'O valor da cobrança não corresponde à soma dos valores do Split.',
});
}

// Vincular cobrança ao Split
const efipay = new EfiPay(options);
const resposta = await efipay.pixSplitLinkCharge({ txid, splitConfigId });

return res.status(200).json({
message: 'Cobrança vinculada ao split com sucesso!',
data: resposta || 'sem dados de retorno',
});
} catch (error) {
console.error('Erro ao vincular cobrança ao split:', error);
return res.status(500).json({
message: 'Erro ao vincular cobrança ao split',
error: error.message || 'Erro desconhecido',
});
}
});