Histórico de mensagens sobre js em devs

EXIBINDO CONVERSAS RECENTES:

Texto: js
Canal: devs
Avatar discord do usuario elguizeta

elguizeta

Ver Respostas

Boa tarde, gostaria de saber como implementar a API de forma correta para gerar boletos a partir das informações preenchidas, pois tentei e não consegui e gostaria de um direcionamento, estou utilizando o node.js

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia! Tudo bem?

Você pode receber o nome do pagador no webhook. Para isso, primeiro é preciso habilitar essa configuração.

Basta usar o endpoint https://dev.efipay.com.br/docs/api-pix/endpoints-exclusivos-efi#criarmodificar-configurações-da-conta">PUT /v2/gn/config (Criar/modificar configurações da conta), enviando o JSON com a configuração associada à chave Pix que será usada nas cobranças Pix. Para incluir os dados do pagador, como o nome, adicione o parâmetro webhook.notificacao.pagador = true.

Assim, nossa API envia uma notificação parecida com esta:
imagem enviada na mensagem pelo usuario guilherme_efi

Avatar discord do usuario nero_79586

nero_79586

Estou utilizando o SDK da efipay para gerar PIX, usando o createOneStepCharge, em Node.JS, na documentação me mostra que existe o objeto 'discount', como na imagem, mas quando passo esse objeto, recebo o seguinte retorno:
Imagem
{
"code": 3500034,
"error": "validation_error",
"error_description": {
"property": "/discount",
"message": "Propriedade desconhecida (não está no schema)."
}
}

Avatar discord do usuario ricardomarcelfilho

ricardomarcelfilho

joao, estou tendo um problema com a importacao da biblioteca..

Avatar discord do usuario kevencampos

kevencampos

Ver Respostas

Bom dia @guilherme_efi, obrigado pela ajuda! sabe se tem alguma API que possa puxar as informações do banco pelo ISPB ? ou um JSON já atualizado com as informações dos bancos pra poder consultar assim que receber a resposta ?

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @413749917396238336! Tudo bem?

Para receber essa informação pelo webhook, primeiro é preciso habilitar essa configuração. Para isso, use o endpoint PUT /v2/gn/config (Criar/modificar configurações da conta), enviando o JSON com a configuração associada à chave Pix que será usada nas cobranças. Para receber os dados do pagador, incluindo o banco utilizado, adicione o parâmetro webhook>>notificacao>>pagador=true.

Depois de fazer essa configuração, as notificações incluirão o atributo gnExtras>>pagador, com o codigoBanco. Esse código do banco pode ser identificado na lista disponibilizada pelo Banco Central.
imagem enviada na mensagem pelo usuario guilherme_efi
imagem enviada na mensagem pelo usuario guilherme_efi

Avatar discord do usuario kevencampos

kevencampos

Ver Respostas

js
import express from "express";
import cors from "cors" ;
import bodyParser from "body-parser";
import routes from "./routes";

const app = express();

app.use(cors());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

// Essa rota poderá ser acessada a partir do URL http://localhost:3001.
// Ela é do tipo GET, por isso poderá ser acessada através da URL no navegador.
app.get("/", (req, res) => {
res.send("Hello World");
});

// Essa rota poderá ser acessada a partir do URL http://localhost:3001/notifications
// Ela é do tipo "POST", portanto não poderá ser acessada pelo navegador
app.post("/notifications", (req, res) => {
const { pix } = req.body;

if (Array.isArray(pix)) {
for (const notification of pix) {
const isRecharge = notification.devolucoes;
const isSend = notification.gnExtras?.idEnvio && !notification.txid;

if (isRecharge) {
console.log("Pix recharge notification received", notification);
continue;
}

if (isSend) {
console.log("Pix send notification received", notification);
continue;
}

console.log("Pix payment notification received", notification);
}
}

res.json({ message: "Notification received" });
});

app.listen(3001, () => {
console.log("Servidor ONLINE na porta 3001 -> acesse http://localhost:3001");
});

export default app;
Esse aqui é um exemplo de uma API rodando na porta 3001, ai você manda o webhook mandar as notificações de pagamento na rota que você criou pra isso, que nesse exemplo é a http://localhost:3001/notifications. Acredito que se realmente deseja integrar o webhook na sua aplicação, é importante você estudar a biblioteca express antes, caso já não conheça

Avatar discord do usuario thefaccin

thefaccin

Ver Respostas

Alguem aqui ja fez a webhook em node.js? Poderia me dar uma mão?

Avatar discord do usuario kevencampos

kevencampos

Ver Respostas

ts
notificationRoutes.post("/notifications", (req, res) => {
const { pix } = req.body;

if (Array.isArray(pix)) {
for (const notification of pix) {
const isRecharge = notification.devolucoes;
const isSend = notification.gnExtras?.idEnvio && !notification.txid;

if (isRecharge) {
console.log("Pix recharge notification received", notification);
continue;
}

if (isSend) {
console.log("Pix send notification received", notification);
continue;
}

console.log("Pix payment notification received", notification);
}
}

res.json({ message: "Notification received" });
});
Fiz essas verificações, acredito que esteja correto, se alguém ver alguma falha e puder me dizer agradeço.

Será que realmente compensa integrar o sistema de notificação por webhook ou verificar o pagamento periodicamente usando a API de consulta de pagamento a partir do taxid?

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @kevencampos! Tudo bem?
Existem algumas diferenças no JSON enviado em uma transação de Pix recebido e Pix enviado.

Primeiro, como o Rubens mencionou, você pode usar uma chave Pix para recebimento e outra para envio, usando o mesmo webhook URL. Dessa forma, ao receber a notificação, você já pode diferenciar pela chave.

Outro ponto que pode verificar é que o JSON de Pix enviado possui o parâmetro "tipo": "SOLICITACAO", além disso, tem também o parâmetro gnExtras>idEnvio.

Veja em nossa documentação alguns exemplos de JSON: https://dev.efipay.com.br/docs/api-pix/webhooks#requisi%C3%A7%C3%A3o

Avatar discord do usuario nicolasvascaafobado

nicolasvascaafobado

Ver Respostas

estou utilizando Nest Js no back, estou precisando pegar o payment token porem a biblioteca payment-token-efi nao funciona para node js alguma soluçao?

Avatar discord do usuario he128

he128

Ver Respostas

Olá, eu criei o servidor webhook com certificado configurado no virtual host do apache e o arquivo php no diretório e subdomínio apontado, quando gerar um pix aonde coloco a url de retorno dentro do json ou como cadastro a url do webhook, no mercadopago cada transação que faço informo a url de retorno em cada transação pix, só funciona via SDK ou posso fazer tudo com CURL ?

Avatar discord do usuario guilhermecoelhoreal

guilhermecoelhoreal

Ver Respostas

Pelo menos chegou a requisição na plataforma:

{
"nome": "json_invalido",
"mensagem": "Valores ou tipos de campo inválidos",
"erros": [
{
"chave": "required",
"caminho": ".body.devedor",
"mensagem": "deve ter a propriedade obrigatória .nome"
},
{
"chave": "required",
"caminho": ".body.devedor",
"mensagem": "deve ter a propriedade obrigatória .nome"
},
{
"chave": "oneOf",
"caminho": ".body.devedor",
"mensagem": "deve corresponder exatamente com um schema em \"oneOf\""
}
]
}

Avatar discord do usuario guilhermecoelhoreal

guilhermecoelhoreal

Fiz essa alteração e retornou isso

Response: {"nome":"json_invalido","mensagem":"Valores ou tipos de campo inválidos","erros":[{"chave":"required","caminho":".body.devedor","mensagem":"deve ter a propriedade obrigatória .nome"},{"chave":"required","caminho":".body.devedor","mensagem":"deve ter a propriedade obrigatória .nome"},{"chave":"oneOf","caminho":".body.devedor","mensagem":"deve corresponder exatamente com um schema em \"oneOf\""}]}

Avatar discord do usuario guilhermecoelhoreal

guilhermecoelhoreal

curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix.api.efipay.com.br/v2/cob",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_SSLCERT => $config["certificado"],
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $access_token",
"Content-Type: application/json"
),
));

Como eu colocaria dentro

Avatar discord do usuario guilhermecoelhoreal

guilhermecoelhoreal

Ver Respostas

curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix.api.efipay.com.br/v2/cob",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_SSLCERT => $config["certificado"],
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $access_token",
"Content-Type: application/json"
),
));

Avatar discord do usuario guilhermecoelhoreal

guilhermecoelhoreal

Ver Respostas

Boa noite. Estou tentando implementer a API Pix no meu site com o meu conhecimento e ajuda do ChatGPT, mas está dando erro. Tenho o HTML, CSS, JS e PHP. Lembrando que não sou programador. Acho que estou perto de fazer funcionar. Alguém pode me ajudar?

Na pagina PHP o Access Token retorna corretamente, mas o pix copia e cola não. Está dando esse problema: Curl error: Empty reply from server

Avatar discord do usuario alexandre0152

alexandre0152

Ver Respostas

Consegui resolver.
1 - aplico um split no response.body;
2- retiro do elemento 1 a string
Com esses passos consigo assessor via JSON os dados

Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Como assim? A nossa API retorna json

Avatar discord do usuario alexandre0152

alexandre0152

Ver Respostas

Certo, mas como separa o json da resposta?