Histórico de mensagens sobre url POST

EXIBINDO CONVERSAS RECENTES:

Texto: url POST
# dúvidas
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Como ativar é fazendo um PUT para /webhook/:chave indicando o path base sem /pix, aí a Efí adiciona o /pix.
O body da requisição é:


E aí a Efí vai fazer o POST em https://exemplo.com.br/webhook/pix

# pix
Avatar discord do usuario henderson4905

henderson4905

Ver Respostas

Boa noite pessoal, estou tentando configurar o webhook no meu site, que está em hospedagem compartilhada, porem estou tendo algumas duvidas.

O trecho de código abaixo da SDK PHP

$body = [
"webhookUrl" => "https://seudominio.com/webhook/"
];


é responsável por identificar qual é a rota do site que vai receber a resposta do servidor da EFI?

e se for, o que essa rota deve esperar do servidor?

# pix
Avatar discord do usuario m.h1604

m.h1604

Ver Respostas

Vou mostrar como estou fazendo.

Parâmetros passados para criação do webhook:

$this->options["headers"] = [
"x-skip-mtls-checking" => "true",
];

$params = [
"chave" => $this->pix_key
];

$body = [
"webhookUrl" => "https://contratos.onlinedobrasil.com/webhook?ignorar="
];

Rota que está recebendo as notificações:
Routes::map('/webhook', function() {
if (isset($_POST)):
file_put_contents(__DIR__ . "/request.json", json_encode($_POST));
endif;

wp_send_json(200);
});

Estou salvando em um arquivo teste para ver o retorno das notificações, mas a única coisa que é gravado é um json vazio.

# pix
Avatar discord do usuario m.h1604

m.h1604

Ver Respostas

Olá pessoal, tudo bem?

Estou com um problema para receber as notificações do Pix.

Eu cadastro a URL de notificação certinho porem não estou recendo a resposta da transação.

Estou usando com o "x-skip-mtls-checking" => "true" pois o sistema do cliente está um host compartilhado na Hostgator.

Já tentei vários testes porém não recebo resposta na url de notificação.

# dúvidas
Avatar discord do usuario jessica_efi

jessica_efi

Certo. Você implementou o sistema de notificação? Nesse caso, no momento da emissão você deve informar uma url de notificação, para que a Efí dispare um POST para sua URL a cada mudança de status da cobrança. Essa notificação possui um token específico, que o seu sistema deverá consultar para obter as informações da cobrança.

# pix
Avatar discord do usuario matheusgomes9492

matheusgomes9492

Ver Respostas

Boa noite, estou tendo problemas para cadastrar minha url de webhook do pix, tem como cadastrar usando o sdk ? ou somente com postman

# devs
Avatar discord do usuario matheusgomes9492

matheusgomes9492

Ver Respostas

Boa noite, estou tendo problemas para cadastrar minha url de webhook do pix, tem como cadastrar usando o sdk ? ou somente com postman

# dúvidas
Avatar discord do usuario douglasalves_27133

douglasalves_27133

Ver Respostas

No postman, gerei um token em homologação para deletar o webhookUrl de homologação.

Posteriormente efetuei uma nova solicitação de token produção, solicitei a criação da webhookUrl novamente, porém o token apresentou-se inválido.

Devo esperar expirar o token gerado em homologação?

# dúvidas
Avatar discord do usuario douglasalves_27133

douglasalves_27133

No postman, gerei um token em homologação para deletar o webhookUrl de homologação.

Posteriormente efetuei uma nova solicitação de token produção, solicitei a criação da webhookUrl novamente, porém o token apresentou-se inválido.

Devo esperar expirar o token gerado em homologação?

# dúvidas
Avatar discord do usuario _dishark

_dishark

Ver Respostas

Consegui aqui, Igor. Obrigado pela atenção. O problema é na hora de vincular o certificado a uma URL no postman. Eu configurei uma e estava usando outra.

# pix
Avatar discord do usuario he128

he128

Ver Respostas

//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 "
";
?>

# módulos-plugins
Avatar discord do usuario joao_efi

joao_efi

@dinhoafsn. a URL de retorno é a URL do seu site onde enviaremos as notificações de pagamento.
No plugin, elas são definidas de maneira automática, de acordo com a forma de pagamento.
Como:

Nessas URLs são enviadas os tokens de cada cobrança, onde ao serem consultados, retornam as atualizações de status. De waiting para paid, por exemplo.
Salvo a exceção do Pix e Open Finance, que seguem os padrões estabelecidos pelo BACEN
Nos links abaixo você encontra os exemplos de retornos referentes aos métodos de pagamento:
- Open Finance: https://dev.efipay.com.br/docs/api-open-finance/recebendo-callbacks#requisi%C3%A7%C3%A3o
- Pix: https://dev.efipay.com.br/docs/api-pix/webhooks#requisi%C3%A7%C3%A3o
- Cartão/Boleto: https://dev.efipay.com.br/docs/api-cobrancas/notificacoes#exemplos-de-respostas

# pix
Avatar discord do usuario frajolex

frajolex

Ver Respostas

Boa noite!!!
Estou com problemas no certificado.pem
"string(311) "cURL error 58: could not load PEM client certificate from ./certs/homologacao.pem, OpenSSL error error:80000003:system library::No such process, (no key found, wrong pass phrase, or wrong file format?) (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://api-pix-h.gerencianet.com.br/oauth/token"


Fatal error: Uncaught Error: Call to a member function getBody() on null in C:\xampp\htdocs\pix\vendor\gerencianet\gerencianet-sdk-php\src\Gerencianet\Request.php:64
Stack trace:
#0 C:\xampp\htdocs\pix\vendor\gerencianet\gerencianet-sdk-php\src\Gerencianet\Auth.php(44): Gerencianet\Request->send('post', '/oauth/token', Array)
#1 C:\xampp\htdocs\pix\vendor\gerencianet\gerencianet-sdk-php\src\Gerencianet\ApiRequest.php(23): Gerencianet\Auth->authorize()
#2 C:\xampp\htdocs\pix\vendor\gerencianet\gerencianet-sdk-php\src\Gerencianet\Endpoints.php(65): Gerencianet\ApiRequest->send('post', '/v2/cob', Array)
#3 C:\xampp\htdocs\pix\vendor\gerencianet\gerencianet-sdk-php\src\Gerencianet\Endpoints.php(42): Gerencianet\Endpoints->Gerencianet\{closure}(Array, Array)
#4 C:\xampp\htdocs\pix\pix\emitir_pix.php(36): Gerencianet\Endpoints->__call('pixCreateImmedi...', Array)
#5 {main}
thrown in C:\xampp\htdocs\pix\vendor\gerencianet\gerencianet-sdk-php\src\Gerencianet\Request.php on line 64

"

# pix
Avatar discord do usuario .viniciusc

.viniciusc

java
public static Token authorizeToken(String client_id, String client_secret, byte[] certificateBytes) {
Token token = null;
String basicAuth;
try {
System.out.println(certificateBytes.length);
basicAuth = Base64.getEncoder().encodeToString((client_id + ':' + client_secret).getBytes());

File tempFile = File.createTempFile("certificate", ".p12");
tempFile.deleteOnExit();

try (FileOutputStream fos = new FileOutputStream(tempFile)) {
fos.write(certificateBytes);
}

System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", tempFile.getAbsolutePath());

SSLSocketFactory sslSocketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();

URL url = new URL("https://api-pix-h.gerencianet.com.br/oauth/token");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "Basic " + basicAuth);
conn.setSSLSocketFactory(sslSocketFactory);
String input = "{\"grant_type\": \"client_credentials\"}";

OutputStream os = conn.getOutputStream();
os.write(input.getBytes());
os.flush();

# pix
Avatar discord do usuario igor_efi

igor_efi

@espartano9720, bom dia!
Antes de você utilizar este endpoint, você precisa autenticar na API informando o client_id e client_secret do jeito que você esta fazendo.
Na autenticação, vai ser retornado para você o access token, que você deverá utilizar nos demais endpoints.

Segue o exemplo em Python de autenticação:

py
#Desenvolvido pela Consultoria Técnica da Efí

import requests
import base64

credentials = {
"client_id": "YOUR-CLIENT-ID",
"client_secret": "YOUR-CLIENT-SECRET",
}

certificado = './certificado.pem' # A variável certificado é o diretório em que seu certificado em formato .pem deve ser inserido

auth = base64.b64encode(
(f"{credentials['client_id']}:{credentials['client_secret']}"
).encode()).decode()

url = "https://pix.api.efipay.com.br/oauth/token"

payload="{\r\n \"grant_type\": \"client_credentials\"\r\n}"
headers = {
'Authorization': f"Basic {auth}",
'Content-Type': 'application/json'
}

response = requests.request("POST",
url,
headers=headers,
data=payload,
cert=certificado)

print(response.text)

# pix
Avatar discord do usuario espartano9720

espartano9720

Ver Respostas

olá pessoal, bom dia
espero que alguém possa me ajudar, agradeço desde já!
estou tentando obter os dados dos pix's recebidos atraves de um código python:

certificado = 'producao-xxxxxxxxxxcert.pem'

auth = base64.b64encode(
(f"{credentials['client_id']}:{credentials['client_secret']}"
).encode()).decode()

url = "https://pix.api.efipay.com.br/v2/pix?inicio=2023-11-14T15:00:00Z&fim=2023-11-15T15:59:59Z" #Para ambiente de Desenvolvimento

payload="{\r\n \"grant_type\": \"client_credentials\"\r\n}"
headers = {
'Authorization': f"Basic {auth}",
'Content-Type': 'application/json'
}

response = requests.request("POST",
url,
headers=headers,
data=payload,
cert=certificado)

print(response.text)

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

# cartões
Avatar discord do usuario bgeneto

bgeneto

Boa tarde! Os pagamentos de assinatura com cartão de crédito (usando POST p/ o endpoint "/plan/:id/subscription/one-step") só estão sendo confirmados/creditados 2 ou 3 dias depois. Até aí tudo bem, foi o acordado em nosso contrato.
Contudo tenho uma dúvida bem básica: as notificações começam a ser enviadas p/ nossa "notification_url" assim que o POST é realizado, com status "waiting" e tal... 3 dias depois, quando o status for "paid" ainda será enviada uma notificação? Não estou conseguindo confirmar a chegada dessa notificação dias depois. É pra chegar, certo?