Histórico de mensagens sobre Client_ID em devs

EXIBINDO CONVERSAS RECENTES:

Texto: Client_ID
Data: 03/03/2025
Canal: devs
Avatar discord do usuario znuuxx

znuuxx

Ver Respostas

@jessica_efi , eu vi o curso, segui o passo a passo, modifiquei para pagamento com cartão e quando tento rodar o teste da erro de certificado:

Erro ao processar pagamento: self-signed cer
tificate in certificate chain

const EfiPay = require('sdk-node-apis-efi')

const options = {
clientId: process.env.EFI_CLIENT_SECRET,
clientSecret: process.env.EFI_CLIENT_ID,
sandbox: true,
};

const efi = new EfiPay(options);

async function createCreditCardPayment() {
const body = {
payment: {
credit_card: {
customer: {
name: 'João Silva',
cpf: '94271564656',
birth: '1990-01-01',
phone_number: '5144916523'
},
billing_address: {
street: 'Rua Júpter',
number: '174',
neighborhood: 'Bauxita',
zipcode: '35400000',
city: 'Ouro Preto',
state: 'MG'
},
card: {
number: '4012001038443335',
cvv: '123',
expiration_month: '12',
expiration_year: '2028',
brand: 'visa'
}
}
},
items: [
{
name: 'Produto Teste',
value: 1000,
amount: 1
}
],
shippings: [
{
name: 'Frete Padrão',
value: 100
}
]
};

try {
const response = await efi.createOneStepCharge([], body);
console.log('Resposta da API:', response);
} catch (error) {
console.error('Erro ao processar pagamento:', error.message);
}
}

createCreditCardPayment();

Avatar discord do usuario znuuxx

znuuxx

Então, eu não alterei nada... como você vê no snippet, só acrescentei meu client_id e o secret... e da erro de certificado

Avatar discord do usuario jessica_efi

jessica_efi

executando esse exemplo não é necessário o certificado. Você vai informar apenas o client_id e client_secret nesse arquivo

Avatar discord do usuario znuuxx

znuuxx

Acabei de rodar isso aqui que esta na doc do API Cobrança:

const https = require("https");
var axios = require("axios");
var fs = require("fs");
const efiOptions = require('./src/config/efi-config')

var data = JSON.stringify({ grant_type: "client_credentials" });
var data_credentials = efiOptions.client_id + ":" + efiOptions.client_secret;

// Codificando as credenciais em base64
var auth = Buffer.from(data_credentials).toString("base64");

//Consumo em desenvolvimento da rota post oauth/token
var config = {
method: "POST",
url: "https://cobrancas-h.api.efipay.com.br/v1/authorize",
headers: {
Authorization: "Basic " + auth,
"Content-Type": "application/json",
},
data: data,
};

axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});

E ta dando erro de certificado:

$ node teste.js
AxiosError: self-signed certificate in certi
ficate chain

Avatar discord do usuario znuuxx

znuuxx

Acabei de dar um copia e cola desse snippet na doc de vocês:

//Desenvolvido pela Consultoria Técnica da Efí

"use strict";
const https = require("https");
var axios = require("axios");
var fs = require("fs");

//Insira os valores de suas credenciais em desenvolvimento do pix
var credenciais = {
client_id: "YOUR-CLIENT-ID",
client_secret: "YOUR-CLIENT-SECRET",
};

var data = JSON.stringify({ grant_type: "client_credentials" });
var data_credentials = credenciais.client_id + ":" + credenciais.client_secret;

// Codificando as credenciais em base64
var auth = Buffer.from(data_credentials).toString("base64");

//Consumo em desenvolvimento da rota post oauth/token
var config = {
method: "POST",
url: "https://cobrancas-h.api.efipay.com.br/v1/authorize",
headers: {
Authorization: "Basic " + auth,
"Content-Type": "application/json",
},
data: data,
};

axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});

O erro:
$ node teste.js
node:internal/validators:162
throw new ERR_INVALID_ARG_TYPE(name, 'st
ring', value);
^

TypeError [ERR_INVALID_ARG_TYPE]: The "paths
[1]" argument must be of type string. Receiv
ed undefined

Avatar discord do usuario znuuxx

znuuxx

@jessica_efi Ai eu tentei sem o sdk:

require('dotenv').config();
const axios = require('axios');
const fs = require('fs');
const https = require('https');
const path = require('path');

function loadP12Certificate(certPath) {
console.log("HttpAgent => ", certPath);

const cert = path.resolve(__dirname, certPath);
const p12File = fs.readFileSync(cert);

return new https.Agent({
pfx: p12File,
rejectUnauthorized: process.env.NODE_ENV !== 'production'
});
}

// Função para obter o token de acesso
async function getAccessToken() {
const authUrl = ${process.env.EFI_API_URL}/oauth/token;
const credentials = {
client_id: process.env.EFI_CLIENT_ID,
client_secret: process.env.EFI_CLIENT_SECRET,
grant_type: 'client_credentials'
};

console.log("Cred => ", credentials);

const httpsAgent = loadP12Certificate(process.env.EFI_CERTIFICATE_PATH);

console.log("Agent => ", httpsAgent);

try {
const response = await axios.post(authUrl, credentials, {
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
httpsAgent
});
return response.data.access_token;
} catch (error) {
console.error('Erro ao obter token:', error.response ? error.response.data : error.message);
throw new Error('Falha ao autenticar com o EFÍ Bank');
}
}

Só que a Efí retorna um 500:
Erro ao obter token: self-signed certificate in certificate chain
Error: Falha ao autenticar com o EFÍ Bank
at getAccessToken

Avatar discord do usuario znuuxx

znuuxx

Eu tentei com a sdk e fica dando erro na inicialização.
A api diz que é assim:


Instalação:
npm install sdk-node-apis-efi

Instância:
const EfiPay = require('sdk-node-apis-efi')
const options = {
// PRODUÇÃO = false
// HOMOLOGAÇÃO = true
sandbox: false,
client_id: 'seuClientId',
client_secret: 'seuClientSecret',
certificate: 'caminho/Ate/O/Certificado/Pix',
}

const efipay = new EfiPay(options)

efipay.createCharge({}, chargeInput)
.then((resposta) => {
console.log(resposta)
})
.catch((error) => {
console.log(error)
})

Só que no log mostra que efipay.createCharge é indefinido.

Eu tentei dar um log de efipay para ver quais métodos ele retorna, mas no log mostra efipay: {}, ou seja, nulo.

Avatar discord do usuario znuuxx

znuuxx

Ver Respostas

Boa noite. Estou tentando configurar o EFI no angular mas está dando erro: Erro ao gerar o token do cartão: Identificador de conta [MEU_CLIENT_ID] inválido".
Já validei no painel da EFI, tentei criando outra aplicação, validei o certificado .p12... Nada me parece fora do lugar.
Única coisa que consigo imaginar é o sdk que pode estar errado, porém, dei um log da instância do EfiJs e retornou o CreditCard da instância...