Histórico de mensagens sobre expiracao em pix

EXIBINDO CONVERSAS RECENTES:

Texto: expiracao
Canal: pix
Avatar discord do usuario elielpsoares

elielpsoares

const data = {
calendario: {
expiracao: 3600,
},
devedor: {
cpf: req.body.cpf,
nome: req.body.nome,
},
valor: {
original: (Math.ceil(await value()) / 100).toFixed(2),
},
chave: ${process.env.EFI_PIX},
infoAdicionais: [
{
nome: "Compra de tickets em",
valor: "Acessu Livre (acessulivre.com.br)",
},
],
};

const efipay = new EfiPay(options);

try {
var payment = await efipay.pixCreateImmediateCharge({}, data);
} catch (err) {
console.error(Erro:${err},Erro description: ${payment});
ret.status(500).json({ msg: "Erro ao tentar gerar cobrança." });
}

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @roxzin! Como vai?
Aqui está um código que funciona:

php

$homolog = true; // false para produção

$config = [
"certificado" => realpath(__DIR__ . "/certificado.pem"), // certificado em .pem de produção ou homologação
"client_id" => "Client_Id",
"client_secret" => "Client_Secret"
];


$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $homolog ? "https://pix-h.api.efipay.com.br/oauth/token" : "https://pix.api.efipay.com.br/oauth/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 8,
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"
),
));
var_dump(curl_exec($curl));
$returnAuth = json_decode(curl_exec($curl), true);
$access_token = $returnAuth['access_token'];
curl_close($curl);


//Criação da cobrança
$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => $homolog ? 'https://pix-h.api.efipay.com.br/v2/cob/' : 'https://pix.api.efipay.com.br/v2/cob/',
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 => '{
"calendario": {
"expiracao": 3600
},
"devedor": {
"cpf": "12345678909",
"nome": "Francisco da Silva"
},
"valor": {
"original": "0.45"
},
"chave": "[email protected]"
}',
CURLOPT_SSLCERT => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $access_token",
"Content-Type: application/json"
),
));
$responsePix = json_decode(curl_exec($curl), true);
curl_close($curl);

echo '
' . json_encode($responsePix, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '
';

if ($responsePix['loc']['id']) {
$idlocationPix = $responsePix['loc']['id'];

// Obtêm o Pix Copia e Cola e QR Code
$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => $homolog ? 'https://pix-h.api.efipay.com.br/v2/loc/' . $idlocationPix . '/qrcode' : 'https://pix.api.efipay.com.br/v2/loc/' . $idlocationPix . '/qrcode',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_SSLCERT => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $access_token",
),
));

$response = json_decode(curl_exec($curl), true);

curl_close($curl);


$PixCopiaCola = $response['qrcode'];
$imagemQrcode = $response['imagemQrcode'];


echo 'QR Code:';
echo '
' . json_encode($PixCopiaCola, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '
';

echo 'Imagem:
';
echo '';
}
Também temos nossa SDK de PHP (https://github.com/efipay/sdk-php-apis-efi), que usa o Guzzle.

Avatar discord do usuario edsonpinheiro_

edsonpinheiro_

Ver Respostas

curl --location 'https://pix.api.efipay.com.br/v2/cob' \
--header 'Authorization: Bearer Token {token aqui} \
--header 'Content-Type: application/json' \
--data '{
"calendario": {
"expiracao": 3600
},
"valor": {
"original": "124.45"
},
"chave": "61982030380",
"solicitacaoPagador": "Informe o número ou identificador do pedido."
}'

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Bom dia, @empreitas, tudo bem?
O campo expiracao em segundos já deve impedir o pagamento após passar o tempo definido, vou abrir um atendimento para você para verificarmos uma cobrança de exemplo.

Avatar discord do usuario empreitas

empreitas

Estoou criando uma cobrança imediata, e estou enviando a "expiracao" porém consigo pagar o QR code mesmo depois desse prazo

Avatar discord do usuario celsoalexandre

celsoalexandre

Ver Respostas

Bom dia,
estou tendo o seguinte erro ao criar uma charge pix com location e notification_url usando a sdk pra Go, ambiente homolog
{"nome":"json_invalido","mensagem":"Valores ou tipos de campo inválidos","erros":[{"chave":"additionalProperties","caminho":".body","mensagem":"não são permitidas propriedades adicionais"}]}

go
// Go
PUT /v2/cob/:txid
map[string]interface{}{
"calendario": map[string]interface{}{
"expiracao": 600,
},
"valor": map[string]interface{}{
"original": "0.01",
},
"loc": map[string]interface{}{
"id": 97,
},
"metadata": map[string]interface{}{
"notification_url": "https://meudominio:10021/efi/homolog/webhook",
},
"chave": "71cdf9ba-c695-4e3c-b010-abb521a3f1be",
"solicitacaoPagador": "Teste",
}

Se eu removo o campo "metadata" e seu conteúdo, funciona.
Não é mais possível criar a cobrança e registrar a callback na mesma chamada, ou seria de outra forma?

Avatar discord do usuario yasmin_efi

yasmin_efi

@marcosvinicius0759 o tempo de expiração é você que define no momento em que emite a cobrança. Ele é enviado no campo calendario >> expiracao, conforme é possível verificar em nossa documentação técnica: https://dev.efipay.com.br/docs/api-pix/cobrancas-imediatas

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Boa tarde, @celsoalexandre, tudo bem?
Você pode emitir uma cobrança Pix sem enviar o atributo devedor.
Quanto à expiração basta que você defina no campo calendario -> expiracao ao criar a cobrança o tempo que deseja.

Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

pixGenerateQRCode não é a função que cria uma cobrança Pix, ela é utilizada para retornar um qrcode passando o id de um location.
Para emitir uma cobrança Pix, você precisa utilizar este exemplo:

ts
const body = {
calendario: {
expiracao: 3600,
},
devedor: {
cpf: '94271564656',
nome: 'Gorbadock Oldbuck',
},
valor: {
original: '123.45',
},
chave: 'SUACHAVEPIX', // Informe sua chave Pix cadastrada na efipay //o campo abaixo é opcional
infoAdicionais: [
{
nome: 'Pagamento em',
valor: 'NOME DO SEU ESTABELECIMENTO',
},
{
nome: 'Pedido',
valor: 'NUMERO DO PEDIDO DO CLIENTE',
},
],
};

const params = {
txid: 'dt9BHlyzrb5jrFNAdfEDVpHgiOmDbVq111',
};

const efipay = new EfiPay(options);

efipay
.pixCreateCharge(params, body)
.then((resposta: Promise) => {
console.log(resposta);
})
.catch((error: Promise) => {
console.log(error);
});

Avatar discord do usuario thomz45

thomz45

Ver Respostas

existe algum limite pra expiracao? tô querendo colocar pra um dia
imagem enviada na mensagem pelo usuario thomz45

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 .thomasjackson

.thomasjackson

Ver Respostas

dados de entrada
{
"calendario": {
"expiracao": 3600
},
"devedor": {
"cpf": "31435600886",
"nome": "Doss App Official"
},
"valor": {
"original": "0.01"
},
"chave": "0aee45d3-0c50-4104-90f7-af6142f01b84",
"solicitacaoPagador": "Residencia"
}
dados de saida
{
"calendario": {
"criacao": "2024-04-24T21:30:02.789Z",
"expiracao": 3600
},
"txid": "5dbb6b24b81443e595b7aba488a0bd6e",
"revisao": 0,
"status": "ATIVA",
"valor": {
"original": "0.01"
},
"chave": "0aee45d3-0c50-4104-90f7-af6142f01b84",
"devedor": {
"cpf": "31435600886",
"nome": "Doss App Official"
},
"solicitacaoPagador": "Residencia",
"loc": {
"id": 20,
"location": "qrcodespix-h.sejaefi.com.br/v2/618748afff0d431381b862f438baf58d",
"tipoCob": "cob",
"criacao": "2024-04-24T21:30:02.814Z"
},
"location": "qrcodespix-h.sejaefi.com.br/v2/618748afff0d431381b862f438baf58d",
"pixCopiaECola": "00020101021226850014BR.GOV.BCB.PIX2563qrcodespix-h.sejaefi.com.br/v2/618748afff0d431381b862f438baf58d5204000053039865802BR5905EFISA6008SAOPAULO6207050363041473"
}
nao recebi nenhuma chamada no meu webhook

Avatar discord do usuario .thomasjackson

.thomasjackson

dados de saida
{
"calendario": {
"criacao": "2024-04-24T21:30:02.789Z",
"expiracao": 3600
},
"txid": "5dbb6b24b81443e595b7aba488a0bd6e",
"revisao": 0,
"status": "ATIVA",
"valor": {
"original": "0.01"
},
"chave": "0aee45d3-0c50-4104-90f7-af6142f01b84",
"devedor": {
"cpf": "31435600886",
"nome": "Doss App Official"
},
"solicitacaoPagador": "Residencia",
"loc": {
"id": 20,
"location": "qrcodespix-h.sejaefi.com.br/v2/618748afff0d431381b862f438baf58d",
"tipoCob": "cob",
"criacao": "2024-04-24T21:30:02.814Z"
},
"location": "qrcodespix-h.sejaefi.com.br/v2/618748afff0d431381b862f438baf58d",
"pixCopiaECola": "00020101021226850014BR.GOV.BCB.PIX2563qrcodespix-h.sejaefi.com.br/v2/618748afff0d431381b862f438baf58d5204000053039865802BR5905EFISA6008SAOPAULO6207050363041473"
}

Avatar discord do usuario .thomasjackson

.thomasjackson

dados de entrada
{
"calendario": {
"expiracao": 3600
},
"devedor": {
"cpf": "31435600886",
"nome": "Doss App Official"
},
"valor": {
"original": "0.01"
},
"chave": "0aee45d3-0c50-4104-90f7-af6142f01b84",
"solicitacaoPagador": "Residencia"
}

Avatar discord do usuario joabsilvalima

joabsilvalima

{
"calendario": {
"expiracao": 3600
},
"valor": {
"original": "1.470.00"
},
"chave": "d24e52c9-7698-413f-8339-d0475b0f5324",
"solicitacaoPagador": "#Fatura:6"
}

Avatar discord do usuario joabsilvalima

joabsilvalima

Ver Respostas

Boa tarde meu pagamento via Pix QR Code está dando o Seguinte erro alguém consegue me ajudar?

Dados de entrada
{
"calendario": {
"expiracao": 3600
},
"valor": {
"original": "1.470.00"
},
"chave": "d24e52c9-7698-413f-8339-d0475b0f5324",
"solicitacaoPagador": "#Fatura:6"
}

Dados de saida
{
"nome": "json_invalido",
"mensagem": "Valores ou tipos de campo inválidos",
"erros": [
{
"chave": "pattern",
"caminho": ".body.valor.original",
"mensagem": "deve corresponder ao padrão \"^[0-9]{1,10}\\.[0-9]{2}$\""
}
]
}

Avatar discord do usuario ricardo_oliveira_souza

ricardo_oliveira_souza

Ver Respostas

Bom dia, estou fazendo testes com a api pix de vocês, mas como para ela funcionar, com as principais funcionalidas é necessário usa-la em produção, estou gerando transações reais.
Fiz uma consulta a situação do pix usando a chamada pixDetailCharge passando como parâmetro txid, observe que ao chamar esta função os dados são retornados e o pix esta com a situação ATIVA:
Coloquei alguns XXXXX no meio para mascarar os dados, apesar de ser fornecido o TXID
TXID - 66afcfc1dafe41bdb6a59dd565a09479
Response = {"devedor":{"cpf":"XXXXXXXXX","nome":"XXXXXXXXXXXX"},"loc":{"location":"qrcodespix.sejaefi.com.br/v2/c90653b52bb34c8dbd5584313a499103","id":31,"criacao":"2024-03-20T04:42:09.000Z","tipoCob":"cob"},"pixCopiaECola":"00020101021226830014BR.GOV.BCB.PIX2561qrcodespix.sejaefi.com.br/v2/c90653b52bb34c8dbdXXXXXXXXXXXXXXX65802BR5905EFISA6008SAOPAULO6207050363042BC5","valor":{"original":"96.90"},"chave":"1cbXXXXXXX-810f-4967-b302-7d94425c49f5","calendario":{"expiracao":7776000,"criacao":"2024-03-20T04:42:09.000Z"},"txid":"66afcfc1dafe41bdb6a59dd565a09479","location":"qrcodespix.sejaefi.com.br/v2/c90653b5XXXXXXXXXX313a499103","revisao":0,"solicitacaoPagador":"Pagamento Adesão\n2 ou mais filhos","status":"ATIVA"}

Veja que com o mesmo TXID fiz a chamada a pixUpdadeDueCharge e esta retorna que o pix não existe:
TXID - 66afcfc1dafe41bdb6a59dd565a09479
{"detail":"Cobrança com vencimento não encontrada para o txid informado","type":"https://pix.bcb.gov.br/api/v2/error/CobvNaoEncontrado","title":"Não Encontrado","status":404}

Alguém do suporte da EFI pode dizer o que esta sendo feito de errado para tal pix ser consultado pelo txid ser encontrado e ao tentar cancela-lo não se encontra?

Desde já agradeço.

Avatar discord do usuario .ilselangnar

.ilselangnar

Boa Tarde

Estou tendo dificuldades para gerar um link de pagamento pix

Eu somente preciso gerar um pix de um certo valor e depois ourvir o webhook e fazer uma ação

Aqui esta meu codigo:


let body = {
calendario: {
expiracao: 3600,
},
devedor: {
cpf: '94271564656',
nome: 'Gorbadock Oldbuck',
},
valor: {
original: float_amount.toString(),
},
chave: '14.359.846/0001-27', // Informe sua chave Pix cadastrada na efipay. //o campo abaixo é opcional
infoAdicionais: [
{
nome: 'Pagamento em',
valor: 'StartPro Treinamentos',
},
{
nome: string_name,
valor: float_amount,
},
],
}

let params = {
txid: 'dt9BHlyzrb5jrFNAdfEDVpHgiOmDbVq111',
}

const efipay = new EfiPay(options)

try {
let object_result = efipay.pixCreateCharge(params, body)
return object_result
} catch( e ) {
throw e
}



Aqui esta o error que ele me da

"erros": [
{
"chave": "pattern",
"caminho": ".body.valor.original",
"mensagem": "deve corresponder ao padrão \"^[0-9]{1,10}\\.[0-9]{2}$\""
}
]

o "body.valor.original" é "10"

se eu colocar um 10 como number ele me informa que ele precisa ser um texto, por isso deixei ".toString()"

Eu basicamente estou tentanto fazer uma API na qual a pessoa escolhe o valor que quer gerar um pix e o nome do produto, a API deve retornar o codigo pix copia e cola para a pessoa pagar.

No mercado livre você so coloca o endpoint do seu servidor para onde a notificação POST dever ser enviada, como faço isso no efipay?

Avatar discord do usuario .thomasjackson

.thomasjackson

{
"calendario": {
"criacao": "2024-04-15T14:12:09.667Z",
"expiracao": 3600
},
"txid": "3759d538329141a38d325a2c42886279",
"revisao": 0,
"status": "ATIVA",
"valor": {
"original": "0.01"
},
"chave": "0aee45d3-0c50-4104-90f7-af6142f01b84",
"devedor": {
"cpf": "12345678909",
"nome": "Francisco da Silva"
},
"solicitacaoPagador": "Informe o número ou identificador do pedido.",
"loc": {
"id": 2,
"location": "qrcodespix-h.sejaefi.com.br/v2/e227bec994f64e398b897131ff2fd640",
"tipoCob": "cob",
"criacao": "2024-04-15T14:12:09.731Z"
},
"location": "qrcodespix-h.sejaefi.com.br/v2/e227bec994f64e398b897131ff2fd640",
"pixCopiaECola": "00020101021226850014BR.GOV.BCB.PIX2563qrcodespix-h.sejaefi.com.br/v2/e227bec994f64e398b897131ff2fd6405204000053039865802BR5905EFISA6008SAOPAULO620705036304AEBF"
}

Avatar discord do usuario pianaro

pianaro

Ver Respostas

Boa tarde, como consigo pegar uma flag que o pagamento do pix foi realizado, pois preciso disso para chamar uma função após o pagamento. Minha aplicação já está rodando em produção e o pix está tudo certo.

Aqui esta a rota de pagamento.
router.post("/payment", async (req: Request, res: Response) => {

const reqGN = await reqGNAlready;
const dataCob = {
calendario: {
expiracao: 3600,
},
valor: {
original: "0.10", //req.body.value,
},
chave: "b801ed6a-27ba-4927-a952-d44e2c8ab9cc",
solicitacaoPagador: "Informe o número ou identificador do pedido.",
};

const cobResponse = await reqGN.post("/v2/cob", dataCob);

const qrcodeResponse = await reqGN.get(
/v2/loc/${cobResponse.data.loc.id}/qrcode
);
res.send(qrcodeResponse.data);
});

Aqui está a do webhook:

router.post("/webhook(/pix)?", (req: Request, res: Response) => {
if (req.secure){
var body = req.body;
const filePath = __dirname + "/data.json";
fs.appendFile(filePath, JSON.stringify(body) + "\n", function (err) {
if (err) {
console.log(err);
} else {
res.status(200).end();
}
})
res.status(200).end();
}else{
res.status(401).end();
}
});