Histórico de mensagens sobre ssl

EXIBINDO CONVERSAS RECENTES:

Texto: ssl
# pix
Avatar discord do usuario emiliocalvet

emiliocalvet

java
@Getter
public class Credentials {
private final String clientId;
private final String clientSecret;
private final String certificate;
private final boolean sandbox;
private final boolean debug;

public Credentials() {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream credentialsFile = classLoader.getResourceAsStream("credentials.json");
assert credentialsFile != null;
JSONTokener tokenizer = new JSONTokener(credentialsFile);
JSONObject credentials = new JSONObject(tokenizer);
try {
credentialsFile.close();
} catch (IOException e) {
System.out.println("Impossible to close file credentials.json");
}

this.clientId = credentials.getString("client_id");
this.clientSecret = credentials.getString("client_secret");
this.certificate = credentials.getString("certificate");
this.sandbox = credentials.getBoolean("sandbox");
this.debug = credentials.getBoolean("debug");
}

public HashMap getOptionsMap() {
HashMap options = new HashMap<>();
options.put("client_id", this.getClientId());
options.put("client_secret", this.getClientSecret());
options.put("certificate", this.getCertificate());
options.put("sandbox", this.isSandbox());
return options;
}

public JSONObject getOptionsJson() {
return new JSONObject(this.getOptionsMap());
}
}

# pix
Avatar discord do usuario alex_333902

alex_333902

é possivel subir o webhook com um tunel ngrok qndo ainda não tenho como gerar as chaves com meu dominio (ainda não tenho dominio ) para validar ssl pelo certbot ?

# abertura-contas
Avatar discord do usuario kpaya

kpaya

Ver Respostas

Bom dia, pessoal.
Estou tendo um problema ao utilizar a SDK PHP para abertura de contas...

Ao tentar chama o método "createAccount", está sendo retornado o erro abaixo:

cURL error 56: OpenSSL SSL_read: error:0A000126:SSL routines::unexpected eof while reading, errno 0 (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://abrircontas-h.api.efipay.com.br/v1/oauth/token

O sistema está rodando em HTTPS...

Alguém já passou pelo mesmo erro e saberiam informar algo sobre?

# pix
Avatar discord do usuario leandro_24465

leandro_24465

Ver Respostas

esse meu código deu o seguinte erro "Erro durante o processamento: HTTPSConnectionPool(host='pix-h.api.efipay.com.br', port=443): Max retries exceeded with url: /oauth/token (Caused by SSLError(SSLError(524297, '[SSL] PEM lib (_ssl.c:3845)')))" alguem como resolver isso?

import json
from efipay import EfiPay

# Carrega as credenciais do arquivo JSON
with open('C:\\Users\\LANAS\\OneDrive\\Documents\\Nova pasta\\venv\\Scripts\\credentials.json') as file:
options = json.load(file)

# Dados da cobrança
body = {
"calendario": {
"expiracao": 3600 # Tempo para expirar em segundos
},
"devedor": {
"cpf": "12345678909", # CPF do pagador
"nome": "Nome do Cliente"
},
"valor": {
"original": "0.01" # Valor do pagamento
},
"chave": "46aadfb3-50d6-4fa4-ae00-e6b8813b0dbe", # Chave Pix da conta Efí do recebedor
"infoAdicionais": [
{
"nome": "Produto/Serviço",
"valor": "Descrição do produto/serviço"
}
]
}

try:
# Instancia a API com as credenciais carregadas
api = EfiPay(options)

# Cria a cobrança Pix imediata
pix = api.pix_create_immediate_charge(params={}, body=body)

if 'txid' in pix:
# Se a cobrança foi criada com sucesso, gera o QR Code
params = {
'id': pix['loc']['id']
}
qrcode = api.pix_generate_qr_code(params)

# Exibe os dados do Pix e do QR Code no console
print("Cobrança Pix criada com sucesso!")
print("TXID:", pix['txid'])
print("QR Code gerado:", qrcode['imagemQrcode'])
print("Código Pix (copia e cola):", qrcode['qrcode'])

else:
print("Erro ao criar a cobrança Pix:", pix)

except Exception as e:
# Trata qualquer outro erro de forma genérica
print(f"Erro durante o processamento: {str(e)}")


# pix
Avatar discord do usuario afviriato

afviriato

Ver Respostas

@guilherme_efi , exatamente com esse comando, não consegui. Mas, o problema da conversão realmente é pq o certificado não tem senha, então ajustei os parâmetros do keytool e funcionou. Consegui autenticar na api PIX. Vou deixar os passos aqui, caso mais alguém precise:

openssl pkcs12 -in -out certificado_temporario.pem -nodes
Enter Import Password:

openssl pkcs12 -export -out -in certificado_temporario.pem
Enter Export Password:
Verifying - Enter Export Password:

E, para converter o .p12 em .jks:

keytool -importkeystore -srckeystore .p12 -srcstoretype pkcs12 -destkeystore .jks -deststoretype jks

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Tente então primeiro converter para .pem inserindo uma senha, e depois faça a conversão para .jks

bash
openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys -password pass:NovaSenha

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Entendi. Primeiro, tente usar o comando openssl para adicionar uma senha ao seu certificado .p12:

bash
openssl pkcs12 -in certificado.p12 -out certificado_com_senha.p12 -export -password pass:NovaSenha
Depois, tente fazer essa conversão para .jks

# devs
Avatar discord do usuario rubenskuhl

rubenskuhl

Sim. Ou você já coloca direto "pix.pem" para testar.

CURLOPT_SSLCERT => "pix.pem",

# devs
Avatar discord do usuario guilhermecoelhoreal

guilhermecoelhoreal

curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix.api.efipay.com.br/v2/cob",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_SSLCERT => $config["certificado"],
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $access_token",
"Content-Type: application/json"
),
));

Como eu colocaria dentro

# devs
Avatar discord do usuario guilhermecoelhoreal

guilhermecoelhoreal

Ver Respostas

Curl error: could not load PEM client certificate from , OpenSSL error error:02001002:system library:fopen:No such file or directory, (no key found, wrong pass phrase, or wrong file format?)

# devs
Avatar discord do usuario guilhermecoelhoreal

guilhermecoelhoreal

Coloquei CURLOPT_SSLCERT => $config["certificado"], no cob

# devs
Avatar discord do usuario guilhermecoelhoreal

guilhermecoelhoreal

Ver Respostas

curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix.api.efipay.com.br/v2/cob",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_SSLCERT => $config["certificado"],
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $access_token",
"Content-Type: application/json"
),
));

# devs
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

CURLOPT_SSLCERT => $config["certificado"],

# devs
Avatar discord do usuario fe0068

fe0068

boa noite, sobre pix webhook
alguem tem alguma ideia?
tento cadastrar um webhook sandbox mas não vai
peguei a chave aqui:
https://certificados.efipay.com.br/webhooks/certificate-chain-homolog.crt
fiz a validação pelo nginx

ssl_client_certificate /nginx/vhosts/certificates/efipay_homolog.crt;
ssl_verify_client optional;

location ^~ /notification/efipay {
if ($ssl_client_verify != "SUCCESS") {
return 403;
}
}


mas não vai entrei em contato falaram que na 2 requisição ainda retorna o 403
ja verifiquei a chave que peguei no link que passei e está correta

alguma idéia?

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @vinicio254! Tudo bem?

Você pode usar o exemplo abaixo para registrar o webhook. Sobre a configuração do mTLS, você pode conferir este vídeo que ensina a configuração em servidor Apache.

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"
];

$chavePix = "suachavepix";

$webhookUrl = "https://seudominio.com.br/webhook/hash=hashdeseguranca&ignorar="

$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/webhook/$chavePix" : "https://pix.api.efipay.com.br/v2/webhook/$chavePix"
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_POSTFIELDS => '{
"webhookUrl": $webhookUrl
}',
CURLOPT_SSLCERT => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $access_token",
"x-skip-mtls-checking: true",
"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) . '
';

# pix
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.

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @tellyscastro. Aparentemente esta falha está relacionada ao certificado SSL no domínio que está tentando configurar.
Você utiliza um certificado auto assinado?

# pix
Avatar discord do usuario tellyscastro

tellyscastro

Ver Respostas

Erro ERR_BAD_SSL_CLIENT_AUTH_CERT

Bom dia turma!
Não consigo fazer o cadastro da url, esta retornando erro ERR_BAD_SSL_CLIENT_AUTH_CERT

Variáveis que estão sendo enviadas:
imagem enviada na mensagem pelo usuario tellyscastro