Histórico de mensagens sobre js em pix

EXIBINDO CONVERSAS RECENTES:

Texto: js
Canal: pix
Avatar discord do usuario gil.brandao0067

gil.brandao0067

om dia consultores!
Estou com aquele típico problema de fácil solução, mas que não se enxerga sem o olhar técnico.
Falha na leitura do certificado. Acreditem, ele está nesse caminho.

Conto com a solidária e preciosa ajuda, pois, estou desde sexta feira tentando concluir essa integração e isso está me consumindo sem necessidade. Gero pix em Homologação, mas preciso botar para moer esse projeto em tempo real de produção.

[Running] node "c:\GERENCIA_NET_EFI\SDK_Node\sdk-node-apis-efi-master\examples\pix\send\pixSend.js"

c:\GERENCIA_NET_EFI\SDK_Node\sdk-node-apis-efi-master\node_modules\sdk-node-apis-efi\lib\endpoints.js:48
throw FALHA AO LER O CERTIFICADO, VERIFIQUE O CAMINHO INFORMADO: ${this.options.certificate}
^
FALHA AO LER O CERTIFICADO, VERIFIQUE O CAMINHO INFORMADO: C:GERENCIA_NET_EFIPJCERTIFICADOSproducao-570499-CERT_PRODUCAO_GDB.p12
(Use node --trace-uncaught ... to show where the exception was thrown)

Node.js v21.6.2

Avatar discord do usuario gil.brandao0067

gil.brandao0067

Bom dia consultores!
Estou com aquele típico problema de fácil solução, mas que não se enxerga sem o olhar técnico.
Falha na leitura do certificado. Acreditem, ele está nesse caminho.

Conto com a solidária e preciosa ajuda, pois, estou desde sexta feira tentando concluir essa integração e isso está me consumindo sem necessidade. Gero pix em Homologação, mas preciso botar para moer esse projeto em tempo real de produção.

[Running] node "c:\GERENCIA_NET_EFI\SDK_Node\sdk-node-apis-efi-master\examples\pix\send\pixSend.js"

c:\GERENCIA_NET_EFI\SDK_Node\sdk-node-apis-efi-master\node_modules\sdk-node-apis-efi\lib\endpoints.js:48
throw FALHA AO LER O CERTIFICADO, VERIFIQUE O CAMINHO INFORMADO: ${this.options.certificate}
^
FALHA AO LER O CERTIFICADO, VERIFIQUE O CAMINHO INFORMADO: C:GERENCIA_NET_EFIPJCERTIFICADOSproducao-570499-CERT_PRODUCAO_GDB.p12
(Use node --trace-uncaught ... to show where the exception was thrown)

Node.js v21.6.2

Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Boa tarde, @raphas9! Tudo bem?

Sim, ao consultar uma cobrança via API, o status da cobrança é retornado. Quando a cobrança está paga, o status retornado é "CONCLUÍDA".
Quanto à devolução, as informações sobre ela são retornadas. Em nossa documentação, há um exemplo de JSON retornado quando ocorre uma devolução:

json
{
"status": "CONCLUIDA",
"calendario": {
"criacao": "2020-09-09T20:15:00.358Z",
"expiracao": "3600"
},
"location": "qrcodes-pix.gerencianet.com.br/1dd7f893-a58e-4172-8702-8dc33e21a403",
"txid": "655dfdb1-a451-4b8f-bb58-254b958913fb",
"revisao": 1,
"devedor": {
"cnpj": "12345678000195",
"nome": "Empresa de Serviços SA"
},
"valor": {
"original": "100.00"
},
"chave": "40a0932d-1918-4eee-845d-35a2da1690dc",
"solicitacaoPagador": "Informe o número ou identificador do pedido.",
"pix": [
{
"endToEndId": "E12345678202009091221kkkkkkkkkkk",
"txid": "655dfdb1-a451-4b8f-bb58-254b958913fb",
"valor": "110.00",
"horario": "2020-09-09T20:15:00.358Z",
"infoPagador": "0123456789",
"devolucoes": [
{
"id": "123ABC",
"rtrId": "Dxxxxxxxx202009091221kkkkkkkkkkk",
"valor": "10.00",
"horario": {
"solicitacao": "2020-09-09T20:15:00.358Z"
},
"status": "EM_PROCESSAMENTO"
}
]
}
]
}

Avatar discord do usuario pedrolucasneto

pedrolucasneto

Ver Respostas

cara, de fato eu estava com as chaves de prod, não me atentei! Agora já recebi um erro diferente, onde o json parece estar inválido, vou configurar novamente! Obrigado @guilherme_efi

Avatar discord do usuario pedrolucasneto

pedrolucasneto

Ver Respostas

Bom dia, é possível fazer requisições usando SDK do Node JS a partir do localhost ? Estou implementando uma cobrança imediata porém não obtive êxito ainda..

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Boa tarde, @gil.brandao0067, os processos são semelhantes, só é necessário se atentar à sintaxe que será um pouco diferente do TS para o JS.
Para exemplos diretamente em NodeJS sugiro que veja nossa SDK em https://github.com/efipay/sdk-node-apis-efi, no README.md há instruções de como instalar e utilizar essa SDK em especifico.

Avatar discord do usuario gil.brandao0067

gil.brandao0067

Ver Respostas

Boa tarde @palloma_efi, você me passou um link mostrando o SDK de Typescript, teria um video desses para JavaScript ? Não gostaria de misturar arquivos JS com arquivos TS.

Avatar discord do usuario palloma_efi

palloma_efi

Ver Respostas

Bom dia @gil.brandao0067 ! Tudo bem? Neste caso, você pode baixar a SDK NodeJS, que é a que você vai utilizar. Ambas funcionam de maneira semelhante. Temos um vídeo mostrando a SDK de Typescript, talvez seja útil também: https://www.youtube.com/watch?v=bli2J1eu55E 😃

Avatar discord do usuario gil.brandao0067

gil.brandao0067

Ver Respostas

Olá! Bom dia.
Estou Desenvolvendo uma aplicação em NodeJS e de acordo com meu entendimento, devo baixar o SDK NodeJS, porém a documentação em vídeo que estou acompanhando está me encaminhando para o SDK PHP. Sei que essa pergunta é uma casca de banana e muito obvia, mas, na dúvida devemos perguntar sempre. Devo baixar qual SDK? 🤓

Avatar discord do usuario joao.dbm

joao.dbm

Boa tarde a todos, estou com um webhook nodejs, rodando em EasyPanel dentro de ubuntu, as chaves SSL e certificados estão todos funcionando. a EFI consegue acessar sem nenhum problema. Porém, quando adiciono "socket.authorized" que está comentado na documentação, e vi em outros videos do YT, mostra erro 401. Posso ignorar este comando "socket.authorized"?

Avatar discord do usuario rubenskuhl

rubenskuhl

A resposta do /oauth/token é assim:

"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "cob.read cob.write pix.read pix.write"
}

Avatar discord do usuario hiagosilvas

hiagosilvas

Se estiver utilizando nodejs:

js
const cpfFormatado = '000.000.000-00';
const cpfLimpo = cpfFormatado.replace(/[^0-9]/g, '');

Avatar discord do usuario kaykyramos

kaykyramos

import as EfiPay from 'sdk-node-apis-efi'

import { Injectable } from '@nestjs/common'

import 'dotenv/config'

@Injectable()
export class PixService {
private efiPay = new EfiPay({
sandbox: false,
client_id: process.env.EFIPAY_CLIENT_ID,
client_secret: process.env.EFIPAY_CLIENT_SECRET,
certificate: './certs/producao-453290-LinkZap-v2.p12',
})

constructor() {
//
}

public async getBalance() {
const { saldo } = await this.efiPay.getAccountBalance()
return Number(saldo)
}

public async payPix(pixCode: string, amount: number) {
const balance = await this.getBalance()
if (balance < amount) {
throw new Error('Saldo insuficiente')
}

try {
const response = await this.efiPay.pixSend(
{ idEnvio: '01' },
{
valor: amount,
pagador: {
chave: 'a4c3dcd3-0005-454e-957f-df416a63c4ed',
},
favorecido: {
chave: pixCode,
},
},
)
return response
} catch (error) {
console.log(error)
}
}
}

Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

array(3) {
["nome"]=>
string(13) "json_invalido"
["mensagem"]=>
string(36) "Valores ou tipos de campo inválidos"
["erros"]=>
array(1) {
[0]=>
array(3) {
["chave"]=>
string(20) "additionalProperties"
["caminho"]=>
string(6) ".query"
["mensagem"]=>
string(44) "não são permitidas propriedades adicionais"
}
}
}

Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

Agora retornou aqui em dados.json

Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

Ver Respostas

O arquivo dados.json não escreve nada

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Ok, no $body insira o ?ignorar=
$body = '{
"webhookUrl": "https://julioerp.agenciaweblab.com.br/webhook.php?ignorar="
}';

E no arquivo "/webhook.php" inseira o exemplo de código abaixo:

php

function resposta($status, $mensagem, $dados)
{
$resposta['status'] = $status;
$resposta['mensagem'] = $mensagem;
$resposta['dados'] = $dados;
$json_resposta = '
' . json_encode($resposta, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '
';

header("HTTP/1.1 " . $status);
echo $json_resposta;
}

function salvar($dados)
{
// Crie um arquivo .;json para salvar as informações
$nomeArquivo = './dados.json';
$dadosGravados = json_decode(file_get_contents($nomeArquivo), true);
$arquivo = fopen($nomeArquivo, 'w');

// Incrementa as informações enviadas com o que já havia gravado
array_push($dadosGravados, $dados);

if (fwrite($arquivo, json_encode($dadosGravados))) {
resposta(200, "Requisição realizada com sucesso!", $dados);
} else {
resposta(300, "Falha ao salvar os dados da requisição.", $dados);
}

fclose($arquivo);
}

function requisicao($metodo, $body, $parametros)
{
switch ($metodo) {
case 'POST':
salvar($body);
break;
case 'GET':
resposta(200, "Requisição realizada com sucesso!", $body);
break;
}
}

// Obtém o método HTTP, body e parâmetros da requisição
$metodo = $_SERVER['REQUEST_METHOD'];
$parametros = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
$body = json_decode(file_get_contents('php://input'), true);

try {
requisicao($metodo, $body, $parametros);
} catch (Exception $e) {
resposta(400, $e->getMessage(), $e);
}

A fim de teste, neste exemplo está salvando o json recebido em um arquivo dados.json. Então na mesma raiz crie-o com permissão de leitura e escrita. E escreva dentro do arquivo dados.json assim: [] para iniciar o json. Então simule um pagamento para receber a notificação.
Depois dos testes, pode manipular o json e gravar em um banco de dados.

Avatar discord do usuario alissonmaciel_32335

alissonmaciel_32335

Meu Webhook: public function webhook() {
$body = '{
"webhookUrl": "https://julioerp.agenciaweblab.com.br/webhook.php"
}';
try {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->config['rotas'] . '/v2/webhook/' . $this->config['chave_pix']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_SSLCERT, $this->config["certificado"]);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, '');
$headers = array();
$headers[] = 'Authorization: Basic ' . $this->access_token;
$headers[] = 'X-Skip-Mtls-Checking: true';
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);

echo '

';
var_dump($this->config['chave_pix'], $this->config['client_id'], $this->config['client_secret'], $result);
echo '
';

if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
return $result;
} catch (Exception $e) {
echo '
';
var_dump($e->getCode(), $e->getFile(), $e->getMessage());
echo '
';
}
}

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

@alissonmaciel_32335, troque no header o content_type para $headers[] = 'Content-Type: application/json';