Histórico de mensagens em pix

EXIBINDO CONVERSAS RECENTES:

Data: 12/11/2023
Canal: pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Funciona em homologação também. Mas uma outra hipótese é você usar uma biblioteca de BRCode e gerar você mesmo sem usar endpoints da Efí... que linguagem você usa ?

Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

Ver Respostas

certo. Mas isso funciona no modo homologação ou apenas no modo produção?

Avatar discord do usuario peterfritz

peterfritz

Ver Respostas

O próximo passo seria usar o id da location para https://dev.efipay.com.br/docs/api-pix/payload-locations#gerar-qrcode-de-um-location>">gerar QRCode de um location, assim você receberá o Pix Copia e Cola / BRCode, um link de visualização e a imagem do QRCode através de uma data URI

Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

Ver Respostas

Boa tarde. Estou tentando fazer a integração via pix completa com PHP (gerar token, venda, gerar qrcode e notificação de status). Porém ate agora não consegui ter sucesso. Eu gerei o token, gerei a venda via pix que me retorna um location. Porém agora o próximo passo seria gerar o QR code visual para o cliente escanear ou o numero para copiar e colar para pagamento. Para gerar a venda estou fazendo uma requisição via POST para https://pix-h.api.efipay.com.br/v2/cob. Nela me retorna sucesso e um txid e o location. Como faria para prosseguir e gerar o qr code? Quando acesso o link do location, diz que "A cobrança não está mais com o status ATIVA"}" Mesmo eu gerando naquele mesmo segundo e indo consultar.

Avatar discord do usuario blini_10032

blini_10032

blza

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

Avatar discord do usuario peterfritz

peterfritz

Mas checa se as respostas vieram com sucesso

Avatar discord do usuario blini_10032

blini_10032

valeuuuu meu brother

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",
},
}
);

Avatar discord do usuario blini_10032

blini_10032

nao, mas tanto faz

Avatar discord do usuario peterfritz

peterfritz

Pretende usar a SDK?

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" }),
}
);

Avatar discord do usuario blini_10032

blini_10032

sim, claro rs

Avatar discord do usuario peterfritz

peterfritz

Sabe usar Axios?

Avatar discord do usuario blini_10032

blini_10032

js, nuxt, vercel

Avatar discord do usuario peterfritz

peterfritz

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

Avatar discord do usuario blini_10032

blini_10032

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

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

Avatar discord do usuario blini_10032

blini_10032

Ver Respostas

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

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.