Boa tarde, @dadeke. Como vai?
Verifique esse detalhe da adição do /pix no final da sua URL que cadastrou.
Como está com o skip=true, você pode montar uma request no Postman para simular o envio da mensagem.
Termos mais procurados:
Termos mais procurados:
Boa tarde, @dadeke. Como vai?
Verifique esse detalhe da adição do /pix no final da sua URL que cadastrou.
Como está com o skip=true, você pode montar uma request no Postman para simular o envio da mensagem.
$config = [
"certificado" => ($sandbox) ? $pathCertificateHomolog : $pathCertificateProd,
"client_id" => ($sandbox) ? $clientIdHomolog : $clientIdProd,
"client_secret" => ($sandbox) ? $clientSecretHomolog : $clientSecretProd,
"rotas" => ($sandbox) ? $rotasHomolog : $rotasProd
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$curl = curl_init();
$fp = fopen($_SERVER['DOCUMENT_ROOT'] . '/errorlog.txt', 'w');
curl_setopt_array($curl, array(
CURLOPT_VERBOSE => true,
CURLOPT_STDERR => $fp,
CURLOPT_URL => $config['rotas'] . "/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);
echo '
';';
var_dump($config, $response);
echo '
Você precisa criar a rota webhookUrl + /pix pra retornar um status code 200.
Quando e Efi acessar https://meusite.com/webhook/pix ela precisa dessa resposta pra validar a configuração.
Certo. Vamos lá.
Pra você parametrizar seu webhook, vou está usando o exemplo em examples\pix\webhooks\pixConfigWebhook.php.
No exemplo, você está substituindo o webhookUrl para https://meusite.com/webhook.
Ao executar o pixConfigWebhook.php ele vai validar e definir webhookUrl para a chave que você passou em params.
Para ele conseguir validar e definir ele precisa receber uma resposta de HTTP status code 200 de webhookUrl + /pix.
O SDK da Efi preenche automaticamente com /pix em todas requests para a webhookUrl que você definiu.
Ou seja, seu erro 404 pode ser por que a rota webhookUrl + /pix não existe no seu servidor - somente a webhookUrl (e que nunca será usada pela Efi).
Boa noite. Estou tentando configurar o webhook através do endpoint PUT /v2/webhook/:chave, enviei a URL sem trailing slash, mas parece que a barra é adicionada mesmo assim... Testei o pagamento e a requisição de notificação está sendo enviada pra um endpoint //pix (com duas barras)... Na imagem, corpo da requisição à esquerda e corpo da resposta à direita.
$config = [
"certificado" => __DIR__."/arquivo.pem",
"client_id" => "CLIENTEID",
"client_secret" => "CLIENTESECRET"
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix.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"],
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
curl_close($curl);
print_r($response);
Por default o curl manda GET. Precisa mandar POST nessa rota.
curl:
Bom dia, @berzacola! Como vai?
A chave Pix do pagador que está utilizando no CURL, é a mesma que está no seu Postman?
Pois o webhook está associado a chave Pix.
Bom dia, tudo bem ? Com o webhook você vai cadastrar uma URL do seu sistema para receber notificações sobre os pagamentos da sua chave PIX. Sempre que houver uma mudança no status da cobrança, enviaremos um POST contendo o conteúdo da transação. Você pode encontrar mais detalhes sobre o webhook em nossa documentação: https://dev.gerencianet.com.br/docs/api-pix-endpoints#webhooks
Bom dia pessoal, estou com algumas dúvidas relacionadas com a integração via API para o PIX.
Usando o SDK PHP, já consegui gerar as cobranças, associadas com uma chave PIX gerada dentro da minha conta, mas estou um pouco confuso sobre a parte de webhooks de notificação e diferenças entre homologação e produção.
Sobre a parte de Webhooks, eu entendi que preciso cadastrar via API qual é a URL que o Gerencianet deverá notificar quando houver algum evento relacionado com a chave PIX. Até consegui realizar alguns testes utilizando a coleção do postman, gerando a cobrança e recebendo a notificação post da Gerencianet.
Um ponto relacionado com a aplicação que estou trabalhando é que o cliente está em um servidor compartilhado. Vi na documentação que é possível utilizar o parâmetro
O Curl é meu profeta e nada meu faltará. Mas Postman vale também.
Onde posso acompanhar os erros de envio do webhook? Estou setando a URL e a chave PIX, recebo um OK, quando consulto, a URL está lá... mas ao receber um pagamento PIX, não recebo o POST
@joao_efi se eu quiser usar o "Skip-mTLS" (utilizando a validação por ip e uma hash ao final da URL) basta eu ignorar o certificado ? os dados do pix pago entregues pelo POST poderá ser lido sem problemas?
Bom dia @tiagooops tudo certo?
Por determinação do Banco Central, nossa API adiciona o /pix ao final da URL cadastrada, sendo assim
Se você cadastra o webhook a URL:
exemplo.com.br/webhook
A confirmação de pagamento será enviada para:
exemplo.com.br/webhook/pix
Além da rota criada acima, é necessário que você adicione a rota a seguir:
você pode ir fazendo as requisições nas urls da api via via http client, ou via do próprio laravel, CURL, ou o modo mais "simples" usando o sdk da gerecianet com o colega acima citou.
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
class PostController extends Controller
{
/
Write code on Method
@return response()
/
public function index()
{
$response = Http::get('https://urldeexemplo.com.br');
$jsonData = $response->json();
dd($jsonData);
}
}