Histórico de mensagens sobre js em pix

EXIBINDO CONVERSAS RECENTES:

Texto: js
Canal: pix
Avatar discord do usuario joabsilvalima

joabsilvalima

Ver Respostas

Boa tarde meu pagamento via Pix QR Code está dando o Seguinte erro alguém consegue me ajudar?

Dados de entrada
{
"calendario": {
"expiracao": 3600
},
"valor": {
"original": "1.470.00"
},
"chave": "d24e52c9-7698-413f-8339-d0475b0f5324",
"solicitacaoPagador": "#Fatura:6"
}

Dados de saida
{
"nome": "json_invalido",
"mensagem": "Valores ou tipos de campo inválidos",
"erros": [
{
"chave": "pattern",
"caminho": ".body.valor.original",
"mensagem": "deve corresponder ao padrão \"^[0-9]{1,10}\\.[0-9]{2}$\""
}
]
}

Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Removi a sua URL porque ela não está configurada com MTLS. Vou abrir um atendimento para explicar melhor o motivo da sua falha.

Parece que há uma inconsistência entre a validação do esquema JSON que você está realizando e o formato JSON enviado durante o cadastro do webhook.

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Oi, @.thallestks. Bom dia! Tudo bem?
As funções e exemplos de split ainda não foram adicionadas à SDK de node.
No entanto, caso queira se adiantar, você pode incluir a função com a rota e método no arquivo /lib/constants.js.

Avatar discord do usuario .ilselangnar

.ilselangnar

Ver Respostas

Oi Guilherme:

Estou com um problema com o webhook

Consigo listar os webhooks configurados sem problema.

O problema vem quando quero configurar um novo webhook para receber notificações de pagamento

Aqui esta meu codigo:


const efipay = new EfiPay(options)

async function api_configure_webhook_efipay( req, res, next ) {

let body = {
webhookUrl: 'https://origami.ink/webhook_paymentefipay',
}

let params = {
chave: '8712f01e-e8e6-4eab-a636-ddc8e13fe8b7',
}

try {
let object_result = await efipay.pixConfigWebhook(params, body)
printf( "[configure_webhook] -> object_result -> ", object_result )
res.json( object_result )
} catch( e ) {
// throw e
res.json( e )
}

}

module.exports = api_configure_webhook_efipay


Aqui esta o erro:

{
"nome": "webhook_invalido",
"mensagem": "A requisição na URL informada falhou com o erro: ECONNRESET"
}

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Além disso, quando você estiver registrando a webhook URL no endpoint PUT /v2/webhook/:chave, na sua URL você pode acrescentar algum parâmetro para diferenciar a URL de cada cliente, e assim fazer alguma tratativa na sua aplicação. Exemplo:

Obs: Se for aplicar esta regra com um parâmetro na URL, aconselho deixar sempre o final um parâmetro sem valor, como no exemplo acima &tipo=. Que assim, o /pix cairá como parâmetro no final da URL, e você irá tratar a notificação em /webhook.

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

@.andregomes, quando você registra o webhook no endpoint PUT /v2/webhook/:chave, você está basicamente associando uma chave Pix a uma URL específica. No seu caso, a URL permanecerá a mesma, mas a chave será única para cada conta de cliente.

Assim que nossa API enviar a notificação, o JSON incluirá essa chave. Isso permitirá que você identifique de qual conta é aquele recebimento. Além disso, através do txid, você poderá saber a qual cobrança se refere.

Avatar discord do usuario .ilselangnar

.ilselangnar

Estou com um problema com o webhook

Consigo listar os webhooks configurados sem problema.

O problema vem quando quero configurar um novo webhook para receber notificações de pagamento

Aqui esta meu codigo:


const efipay = new EfiPay(options)

async function api_configure_webhook_efipay( req, res, next ) {

let body = {
webhookUrl: 'https://origami.ink/webhook_paymentefipay',
}

let params = {
chave: '8712f01e-e8e6-4eab-a636-ddc8e13fe8b7',
}

try {
let object_result = await efipay.pixConfigWebhook(params, body)
printf( "[configure_webhook] -> object_result -> ", object_result )
res.json( object_result )
} catch( e ) {
// throw e
res.json( e )
}

}

module.exports = api_configure_webhook_efipay


Aqui esta o erro:

{
"nome": "webhook_invalido",
"mensagem": "A requisição na URL informada falhou com o erro: ECONNRESET"
}

Avatar discord do usuario walysonpatric

walysonpatric

Ver Respostas

Coloquei assim no arquivo vercel.json e funcionou a confirmação do PIX

{
"version": 2,
"builds": [
{
"src": "api/app.js",
"use": "@vercel/node"
}
],
"routes": [
{
"src": "/cob/:txid",
"dest": "/api/app.js"
},
{
"src": "/(.)",
"dest": "/api/app.js"
}
]
}

Avatar discord do usuario .ilselangnar

.ilselangnar

Ver Respostas

Bom dia.


Gostaria de saber aonde fica a documentação das funções do nodejs SDK da efipay

Como posso facilmente gerar um pix? Já tenho as credenciais, o pacote npm

Avatar discord do usuario walysonpatric

walysonpatric

Ver Respostas

Coloquei assim mas só funciona no localhost a confirmação de PIX (http://localhost:8000/cob/a7689c1ff5b64eeca8695e2e58c30007), no site da vercel da página não encontrada.

Já coloquei as variáveis no site e estou usando o certificado p12, o pem da erro até no localhost.

Teria que colocar algum comando no arquivo next.config.js ou vercel.json?

// Rota para consultar cobrança por txid
router.get('/cob/:txid', async (req, res) => {
const txid = req.params.txid;

try {
const reqGN = await GNRequest({
clientID: process.env.GN_CLIENT_ID,
clientSecret: process.env.GN_CLIENT_SECRET
});

// Consultar a cobrança usando o txid
const response = await reqGN.get(https://pix.api.efipay.com.br/v2/cob/${txid});

// Verificar se há um objeto PIX na resposta
if (response.status === 200 && response.data.pix) {

// Enviar o código de ativação junto com a resposta
return res.status(200).json({ message: 'PIX confirmado com sucesso.' });
} else {
// O PIX não foi pago ou não encontrado
return res.status(400).json({ error: 'PIX não encontrado ou não foi pago.' });
}
} catch (error) {
console.error('Erro ao consultar a cobrança:', error.message);
return res.status(500).json({ error: 'Erro ao consultar a cobrança.' });
}
});

Avatar discord do usuario walysonpatric

walysonpatric

Ver Respostas

Oi, pra confirmar se o pix foi pago seria algo assim? (não sei muito sobre isso, to aprendendo e usei o GPT pra criar o código.)

app.post('/webhook(/pix)?', async (req, res) => {

try {
// Consultar a cobrança usando o txid
const response = await axios.get(/v2/cob/:txid, {
headers: {
Authorization: 'Bearer' + process.env.GN_CLIENT_ID // Substitua pelo token de autorização correto
}
});

// Verificar o status da cobrança na resposta
if (response.status === 200 && response.data.status === 'CONCLUIDA') {

// Enviar o código de ativação para o Supabase
const { data: insertedData, error } = await supabaseClient
.from('dominios_permitidos')
.insert([{ code: generatedCode }]); // Acesse o código gerado na rota '/api/key'

// Enviar o código de ativação junto com a resposta
return res.status(200).json({ message: 'Webhook recebido com sucesso.', code: generatedCode });
} else {
// Se a cobrança não estiver concluída, retorne uma mensagem de erro
return res.status(400).json({ error: 'Cobrança não concluída.' });
}
} catch (error) {
console.error('Erro ao consultar a cobrança:', error.message);
return res.status(500).json({ error: 'Erro ao consultar a cobrança.' });
}

});

Avatar discord do usuario _thiagowatanabe

_thiagowatanabe

Ver Respostas

Irei utilizar Node.JS com TypeScript no Backend e Next.JS 14 no frontend

Avatar discord do usuario viniciusfebasse_37973

viniciusfebasse_37973

O código para geração da cobrança está assim

def criar_cobranca_pix(self, txid):
tokens = self.autorizar()
access_token = tokens['access_token']
endpoint = f"{self.url}/v2/cobv/{txid}"

cabecalho = {"Content-Type": "application/json",
"Authorization": f"Bearer {access_token}"}

dados = {
"calendario": {
"dataDeVencimento": "2022-12-01",
"validadeAposVencimento": 30
},
"devedor": {
"logradouro": "Alameda Souza, Numero 80, Bairro Braz",
"cidade": "Recife",
"uf": "PE",
"cep": "70011750",
"cpf": "12345678909",
"nome": "Francisco da Silva"
},
"valor": {
"original": "123.45",
"multa": {
"modalidade": 2,
"valorPerc": "15.00"
},
"juros": {
"modalidade": 2,
"valorPerc": "2.00"
},
"desconto": {
"modalidade": 1,
"descontoDataFixa": [
{
"data": "2022-11-30",
"valorPerc": "30.00"
}
]
}
},
"chave": "5f84a4c5-c5cb-4599-9f13-7eb4d419dacc",
"solicitacaoPagador": "Cobrança dos serviços prestados."
}

dados = json.dumps(dados)
response = requests.request("PUT", endpoint, headers=cabecalho, data=dados)

print(response.text)

return response.text

Avatar discord do usuario moises10101

moises10101

Ver Respostas

BOM DIA! Como eu faço pra conseguir enviar o Pix. Já consigo gerar a cobrança. Porém pra fazer transferência, não está autorizado. Vcs podem me ajudar?!

Estou utilizando a integração em Nodejs com o Sdk da Efí

Avatar discord do usuario gabriel_efi

gabriel_efi

Boa tarde, @andrebarbosa_dev! O Location contém um JSON com os dados referentes a uma cobrança PIX, ao utilizar os endpoints de emissão de cobrança PIX (COB ou COBV) automaticamente será criado um location. Contudo, é possível criar esse location primeiro pelo endpoint POST /v2/loc e passar o ID do mesmo na requisição da emissão de cobrança depois, como se fosse um Two-Step.

Avatar discord do usuario pianaro

pianaro

Ver Respostas

Boa tarde, como consigo pegar uma flag que o pagamento do pix foi realizado, pois preciso disso para chamar uma função após o pagamento. Minha aplicação já está rodando em produção e o pix está tudo certo.

Aqui esta a rota de pagamento.
router.post("/payment", async (req: Request, res: Response) => {

const reqGN = await reqGNAlready;
const dataCob = {
calendario: {
expiracao: 3600,
},
valor: {
original: "0.10", //req.body.value,
},
chave: "b801ed6a-27ba-4927-a952-d44e2c8ab9cc",
solicitacaoPagador: "Informe o número ou identificador do pedido.",
};

const cobResponse = await reqGN.post("/v2/cob", dataCob);

const qrcodeResponse = await reqGN.get(
/v2/loc/${cobResponse.data.loc.id}/qrcode
);
res.send(qrcodeResponse.data);
});

Aqui está a do webhook:

router.post("/webhook(/pix)?", (req: Request, res: Response) => {
if (req.secure){
var body = req.body;
const filePath = __dirname + "/data.json";
fs.appendFile(filePath, JSON.stringify(body) + "\n", function (err) {
if (err) {
console.log(err);
} else {
res.status(200).end();
}
})
res.status(200).end();
}else{
res.status(401).end();
}
});

Avatar discord do usuario mcunha98

mcunha98

Ver Respostas

uma duvida, chamei POST : https://pix-h.api.efipay.com.br/v2/cob
mas havia colocado o metadata para a url de notificacao, tomei erro
{"nome":"json_invalido","mensagem":"Valores ou tipos de campo inválidos","erros":[{"chave":"additionalProperties","caminho":".body","mensagem":"não são permitidas propriedades adicionais"}]}
"metadata": { "notification_url": "http:\/\/webhook.site.com.br" }

e vendo na doc, realmente nao da suporte para metadata, entao como fazer para ligar o webhook do pix via notification_url ?

Avatar discord do usuario russofullstack

russofullstack

Ver Respostas

Unhandled Promise Rejection {"errorType":"Runtime.UnhandledPromiseRejection","errorMessage":"TypeError: gerencianet.pixSplitConfigId is not a function","reason":{"errorType":"TypeError","errorMessage":"gerencianet.pixSplitConfigId is not a function","stack":["TypeError: gerencianet.pixSplitConfigId is not a function"," at /var/task/src/index.js:783:15"," at Layer.handle [as handle_request] (/var/task/node_modules/express/lib/router/layer.js:95:5)"," at next (/var/task/node_modules/express/lib/router/route.js:144:13)"," at Route.dispatch (/var/task/node_modules/express/lib/router/route.js:114:3)"," at Layer.handle [as handle_request] (/var/task/node_modules/express/lib/router/layer.js:95:5)"," at /var/task/node_modules/express/lib/router/index.js:284:15"," at Function.process_params (/var/task/node_modules/express/lib/router/index.js:346:12)"," at next (/var/task/node_modules/express/lib/router/index.js:280:10)"," at cors (/var/task/node_modules/cors/lib/index.js:188:7)"," at /var/task/node_modules/cors/lib/index.js:224:17"]},"promise":{},"stack":["Runtime.UnhandledPromiseRejection: TypeError: gerencianet.pixSplitConfigId is not a function"," at process. (file:///var/runtime/index.mjs:1276:17)"," at process.emit (node:events:529:35)"," at emit (node:internal/process/promises:149:20)"," at processPromiseRejections (node:internal/process/promises:283:27)"," at process.processTicksAndRejections (node:internal/process/task_queues:96:32)"]}
Unknown application error occurred