Histórico de mensagens em pix

EXIBINDO CONVERSAS RECENTES:

Data: 13/11/2023
Canal: pix
Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

Ver Respostas

puts... o caso seria testar produção entao?

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Não, não é. Isso é outra coisa, e aí só o pessoal da Efí ( @Consultoria Técnica ) para ver pq vc não está recebendo webhook de homologação.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Só que como o txid tem comprimento mínimo, precisa ver stuffing à esquerda com alguma coisa.

Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

Ver Respostas

mas isso seria o motivo de não receber o json?

Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

Ver Respostas

perfeito. Vou mudar agora

Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

ok

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

POST eu não acho legal, porque não evita transações repetidas.
O ideal é gerar o txid a partir de um número único que já exista no seu processo. Número do pedido, número da nota fiscal etc.

Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

só ta faltando eu conseguir captar o status para finalizar 😅

Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

abaixei para R$1.00 porém não recebi nada. Dentro da pix esta o código que vocês tem de exemplo, que me parece estar ok. Se recebe request tipo POST ele salva o json. Porém ainda zerado

Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

Ver Respostas

não, usei a direta. Utilizando POST

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Sobre o txid, não foi você criou o txid ao criar a cobrança ? Você está fazendo PUT em /cob ou POST em /cob ?

Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

pelo que entendi essa função acima ja faz isso, certo? Se a requisição vier como POST vai salvar no arquivo dados.json o que recebeu. Certo?

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Em homologação você só recebe webhooks de cobranças até R$10. Então para testar lá, baixe o valor da cobrança.

Avatar discord do usuario gabriel_efi

gabriel_efi

Olá, @vitor.oliveira94!
Você chegou a tentar verificar o JSON que está chegando, salvando em um log para averiguações?

Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

estou usando o exemplo de código que esta no site.

function resposta($status, $mensagem, $dados)
{
$resposta['status'] = $status;
$resposta['mensagem'] = $mensagem;
$resposta['dados'] = $dados;
$json_resposta = '
' . json_encode($resposta, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '
';

header("HTTP/1.1 " . $status);
echo $json_resposta;
}

function salvar($dados)
{
// Crie um arquivo .;json para salvar as informações
$nomeArquivo = 'dados.json';
$dadosGravados = json_decode(file_get_contents($nomeArquivo), true);
$arquivo = fopen($nomeArquivo, 'w');

// Incrementa as informações enviadas com o que já havia gravado
array_push($dadosGravados, $dados);

if (fwrite($arquivo, json_encode($dadosGravados))) {
resposta(200, "Requisição realizada com sucesso!", $dados);
} else {
resposta(300, "Falha ao salvar os dados da requisição.", $dados);
}

fclose($arquivo);
}

function requisicao($metodo, $body, $parametros)
{
switch ($metodo) {
case 'POST':
salvar($body);
break;
case 'GET':
resposta(200, "Requisição realizada com sucesso!", $body);
break;
}
}

// Obtém o método HTTP, body e parâmetros da requisição
$metodo = $_SERVER['REQUEST_METHOD'];
$parametros = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
$body = json_decode(file_get_contents('php://input'), true);

try {
requisicao($metodo, $body, $parametros);
} catch (Exception $e) {
resposta(400, $e->getMessage(), $e);
}

Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

testei modo homologação, achei que o código iria salvar um json caso recebesse algo mas não parece estar recebendo

Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

Ver Respostas

no modo homologação também vou receber esse? Entendi que o correto seria salvar o txid no banco de dados para quando receber algum webhook atualizar o status ligando com ele, certo?

Avatar discord do usuario rubenskuhl

rubenskuhl

Detalhe que é o que vem no webhook é um array de pix... então teoricamente você receber mais de uma confirmação no mesmo acionamento do webhook. A Efí não costuma usar isso, mas pode acontecer se o banco pagador mandar dois pagamentos pra Efí no mesmo pacote do Pix.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

O que você vai receber no webhook é algo assim:

{
"pix": [
{
"endToEndId": "E1803615022211340s08793XPJ",
"txid": "fc9a43k6ff384ryP5f41719",
"chave": "2c3c7441-b91e-4982-3c25-6105581e18ae",
"valor": "0.01",
"horario": "2020-12-21T13:40:34.000Z",
"infoPagador": "pagando o pix"
}
]
}

Então o txid que você mandou ao fazer PUT no /cob, é o que você usa para fazer match desse Pix com a cobrança.
E você confere também chave (tem que ser a mesma chave que você usou no /cob) e o valor (tem que ser o mesmo valor). Se tudo certo, você dá como pago.