Histórico de mensagens sobre n

EXIBINDO CONVERSAS RECENTES:

Texto: n
Data: 12/11/2023
# sugestões
Avatar discord do usuario jessica_efi

jessica_efi

Boa tarde @iguatu ! Vou encaminhar sua sugestão pra nossa equipe responsável.

# bolix
Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Respondido no canal privado.

# sugestões
Avatar discord do usuario iguatu

iguatu

Ver Respostas

Você já pensam em algo sobre emissão de notas ficais? Vejo muitas empresas que emites notas virarem contas digitais. Mas as conta digitais não tem esse interesse.

# bolix
Avatar discord do usuario thomas.frankl1n

thomas.frankl1n

Ver Respostas

Boa tarde, mais alguém está tendo "Bad Request" como retorna em qualquer requisição?
HTTP 400

Tentei usar a collection do postman disponível na doc, mas lá também tem o mesmo retorno.

AccessToken é gerado perfeitamente, só o restante dos endpoint que não vai nem com reza

# pix
Avatar discord do usuario peterfritz

peterfritz

E verifica o IP e o segredo passado na sua URL do webhook antes de processar o callback!
imagem enviada na mensagem pelo usuario peterfritz

# pix
Avatar discord do usuario peterfritz

peterfritz

Algo assim funcionaria:

js
import axios from "axios";
import https from "https";

const subdomain = process.env.NODE_ENV === "production" ? "pix" : "pix-h";

const clientCreds = clientId + ":" + clientSecret;
const authorization = Basic ${Buffer.from(clientCreds).toString("base64")};

const certificate = Buffer.from(certificateBase64Encoded, "base64");

const httpsAgent = new https.Agent({
pfx: certificate,
passphrase: "",
});

const oAuthResponse = await axios.post(
https://${subdomain}.api.efipay.com.br/oauth/token,
{
grant_type: "client_credentials",
},
{
headers: {
Authorization: authorization,
"Content-Type": "application/json",
},
httpsAgent,
}
);

const token = oAuthResponse.data.access_token;

const efiApi = axios.create({
baseURL: https://${subdomain}.api.efipay.com.br,
headers: {
Authorization: Bearer ${token},
"Content-Type": "application/json",
},
httpsAgent,
});

await efiApi.put(
/v2/webhook/${process.env.PIX_KEY},
{
webhookUrl:
${process.env.WEBHOOK_BASE_URL}/api/webhook/efi?secret=${process.env.WEBHOOK_SECRET}&ignore=.replace(
"//api",
"/api"
),
},
{
headers: {
"x-skip-mtls-checking": "true",
},
}
);

# pix
Avatar discord do usuario blini_10032

blini_10032

nao, mas tanto faz

# pix
Avatar discord do usuario peterfritz

peterfritz

Pretende usar a SDK?

# pix
Avatar discord do usuario blini_10032

blini_10032

a minha requisição de oauth tá assim:
const responseToken = await fetch(
"https://pix-h.api.efipay.com.br/oauth/token",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"x-skip-mtls-checking": "true",
},
body: JSON.stringify({ grant_type: "client_credentials" }),
}
);

# pix
Avatar discord do usuario blini_10032

blini_10032

js, nuxt, vercel

# pix
Avatar discord do usuario peterfritz

peterfritz

Você usa qual linguagem e framework? Vai "hospedar" em qual plataforma?

# pix
Avatar discord do usuario blini_10032

blini_10032

e eu passo esses parametros na minha requisição de oauth?
{
pfx: certificate,
passphrase: "",
}

# pix
Avatar discord do usuario peterfritz

peterfritz

Ver Respostas

Não, é CLI, faz parte do https://www.gnu.org/software/coreutils/>">GNU coreutils, se tu usa Linux ou Mac, quase certeza que ele já tá aí. Pra confirmar só rodar base64 --version

# pix
Avatar discord do usuario blini_10032

blini_10032

Ver Respostas

valeu man!! mto bom
esse comando base64 é do node? É algum pacote?

# pix
Avatar discord do usuario peterfritz

peterfritz

Ver Respostas

Para isso eu transformei o arquivo em base64 usando o comando base64 producao.p12 | tr -d '\n' | tr -d ' ' > output.txt e adicionei o conteúdo de output.txt em uma variável de ambiente.
Para converter de base64 para binário, uso o seguinte trecho de código em TypeScript:

ts
const certificate = Buffer.from(certificateBase64Encoded, "base64");

const httpsAgent = new https.Agent({
pfx: certificate,
passphrase: "",
});
Como o projeto no qual estou trabalhando é escrito em TypeScript e a tipagem do SDK sdk-typescript-apis-efi é basicamente nenhuma tipagem, eu decidi criar as requisições do zero adequando-as ao modelo serverless e com tudo tipado e validado como descrito na documentação já que há um time relativamente grande que trabalhará nesse projeto.
Mas se você quiser usar a SDK, provavelmente terá que dar um jeito de salvar o certificado em um arquivo usando um script durante a build ou algo assim já que EfiPay(options) só aceita o caminho do certificado (não sei se eu recomendaria isso, depende muito da plataforma que usará).

Inclusive se alguém da Efí estiver lendo isso, uma SDK para TypeScript com as rotas e parâmetros definidos e com tipos, preferencialmente com suas respectivas descrições em JSDoc, seria incrível.

# pix
Avatar discord do usuario jessica_efi

jessica_efi

Vou iniciar um atendimento privado pra pegar mais informações

# pix
Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

to mandando assim: curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix-h.api.efipay.com.br/v2/cob", // Rota base, homologação ou produção
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $data,
CURLOPT_SSLCERT => $config["certificado"],
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $token",
"Content-Type: application/json"
),
));

# pix
Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

Ver Respostas

isso depois de ter adicionar o certificado como pediu

# pix
Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

Ver Respostas

to mandando dados errados ou o escopo da requisição não esta correto rs estou enviando o token no cabeçalho de atutentificação dessa cobrança pix. Esta correto?

Agora o erro mudou para : "Erro interno do servidor"

# pix
Avatar discord do usuario jessica_efi

jessica_efi

Certo. envia esse certificado na requisição de emissão também. Como enviou na autenticação