Histórico de mensagens sobre js

EXIBINDO CONVERSAS RECENTES:

Texto: js
# pix
Avatar discord do usuario vinicius_cs

vinicius_cs

Ver Respostas

É possível testar Webhook em homolog?

Estou desenvolvendo em Laravel, fiz a rota com o /webhook, no entanto ao executar:
https://pix-h.api.efipay.com.br/v2/webhook/:chave

É retornado:
{
"nome": "webhook_invalido",
"mensagem": "A URL informada respondeu com o código HTTP 419"
}

No WebhookController eu coloquei apenas isso para testar:

php
public function handle(Request $request)
{
$payload = $request->all();

return response()->json(['status' => 200]);
}

Nas rotas coloquei assim:
php
Route::prefix('webhook')->group(function () {
Route::get('/', [WebhookController::class, 'handle'])->name('webhook.handle');
Route::post('/', [WebhookController::class, 'handle'])->name('webhook.handle');
Route::put('/', [WebhookController::class, 'handle'])->name('webhook.handle');
});

# 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

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

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 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 peterfritz

peterfritz

Ver Respostas

Oi, boa tarde. Vocês sabem se existe algum jeito de consultar o pagador de um QR Code ou BR Code que foi cadastrado sem informar um devedor?
Na secção de https://dev.efipay.com.br/docs/api-pix/webhooks#requisi%C3%A7%C3%A3o>">requisição (callback) da documentação de webhooks, vi que é possível que os dados do pagador sejam recebidos no callback através da propriedade gnExtras.pagador, porém o objeto gnExtras é opcional e, até então, só tenho recebido através de callbacks os seguintes dados:

json
{
"pix": [
{
"endToEndId": "...",
"txid": "...",
"chave": "...",
"valor": "...",
"horario": "..."
}
]
}
No extrato é possível visualizar pagador, documento e instituição, então imagino que há alguma forma de solicitar esses dados através da API.
Agradeço desde já e peço perdão pela mensagem longa.

# dúvidas
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

A própria Efí usa JS, então não confunda a minha preferência (eu que sou apenas cliente Efí) com a posição da empresa...

# dúvidas
Avatar discord do usuario thecursednoob

thecursednoob

Ver Respostas

o Golang parece legal, mas nem por isso não seria legal oferecer um suporte melhor aos programadores que optam pelo js

# dúvidas
Avatar discord do usuario thecursednoob

thecursednoob

tem como tipar tudo usando apenas JSdoc

# dúvidas
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

O que é o mais usual em linguagens interpretadas como JS e similares.

# dúvidas
Avatar discord do usuario thecursednoob

thecursednoob

(node.js)

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

WhatTicket é escrito em Node.js, e a Efí tem SDK em Node.js... deve ser o caminho mais rápido para esse desenvolvimento.

# cartões
Avatar discord do usuario gabriel_severo_

gabriel_severo_

Ver Respostas

Bom dia, estou com problema para gerar o payment_token, está aparecendo este erro abaixo mas a dependência jsdom já está instalada.

Error: Biblioteca "jsdom" não está instalada. Execute npm i jsdom ou yarn add jsdom
at p6.getPaymentToken (payment-token-efi.js:1:71499)
CreditForm.tsx:78 Código: 500
CreditForm.tsx:79 Nome: library_error
CreditForm.tsx:80 Mensagem: Biblioteca "jsdom" não está instalada. Execute npm i jsdom ou yarn add jsdom

Alguém pode me ajudar?

# pix
Avatar discord do usuario yuu_sr91

yuu_sr91

Gente, estou configurando o mTLS com a AWS configurada e dominio personalizado tbm e tá dando esse erro:

json
{
"nome": "webhook_invalido",
"mensagem": "A URL informada respondeu com o código HTTP 403"
}

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Se passar um percentual com mais de duas casas decimais irá apresentar o erro:

json
{
"type": "https://pix.bcb.gov.br/api/v2/error/SplitConfigOperacaoInvalida",
"title": "Operação Inválida",
"status": 400,
"detail": "A requisição que busca alterar ou criar uma configuração de split não respeita o schema ou está semanticamente errada.",
"violacoes": [
{
"razao": "O campo não respeita o schema.",
"propriedade": "split.config.body.split.repasses.0.valor"
}
]
}

# freelancer
Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Bom dia, @evert0n! Você esta tentando autenticar?
Poderia testar este código abaixo:

php
//Desenvolvido pela Consultoria Técnica da Efí
$config = [
"certificado" => "./certificado.pem",
"client_id" => "YOUR-CLIENT-ID",
"client_secret" => "YOUR-CLIENT-SECRET"
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix-h.api.efipay.com.br/oauth/token", // 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 => '{"grant_type": "client_credentials"}',
CURLOPT_SSLCERT => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);

echo "
";
echo $response;
echo "
";
?>

# dúvidas
Avatar discord do usuario iilordxss

iilordxss

Ver Respostas

Ele volta para mim em json o pix copia e cola e o qrcode ?

# dúvidas
Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Boa tarde, @iilordxss!
Sim, segue o exemplo usando o fetch:

js
var myHeaders = new Headers();
myHeaders.append("authorization", "Bearer ");
myHeaders.append("x-client-cert-pem", "{{X-Certificate-Pem}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
"calendario": {
"expiracao": 1
},
"valor": {
"original": "0.01"
},
"chave": ""
});

var requestOptions = {
method: 'PUT',
headers: myHeaders,
body: raw,
redirect: 'follow'
};

fetch("https://api-pix.gerencianet.com.br/v2/cob/", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));