Histórico de mensagens sobre Client_ID em pix

EXIBINDO CONVERSAS RECENTES:

Texto: Client_ID
Canal: pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Entendido. Sem problemas.
O erro provavelmente está no certificado. O CURL não reconhece o caminho do certificado sendo uma URL como havia colocado. Você deve colocar o caminho para o certificado no local do servidor.
Exemplo:

php
$config = [
"certificado" => "../certificado.pem",
"clientid" => "Client_Id???",
"client_secret" => "Client_Secret???"
];

Avatar discord do usuario rodrigo_90439

rodrigo_90439

Ver Respostas

Tudo bem Guilherme.
Eu gostaria de utilizar o CURL mesmo, não quero utilizar o SDK em minha aplicação, tem como me ajudar?
$config = [
"certificado" => "certificado.pem",
"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 => "https://pix-h.api.efipay.com.br/oauth/token",
CURLOPT_URL => "https://pagarcontas.api.efipay.com.br/v1/oauth/token",
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 "
";

Avatar discord do usuario aguiar.dev

aguiar.dev

But I believe you don't need to change this class. The code I sent above solved it for me. My implementation:

py
from efipay import EfiPay
from dotenv import dotenv_values
import os

env = dotenv_values(".env")

class EfiPayImpl():

def __init__(self) -> None:
credentials = {
"client_id": env["EFI_BANK_CLIENT_ID"],
"client_secret": env["EFI_BANK_CLIENT_SECRET"],
"sandbox": env["EFI_BANK_SANDBOX"],
"certificate": f"{os.getcwd()}/{env["EFI_BANK_CERTIFICATE"]}"
}
self.api = EfiPay(credentials)

Avatar discord do usuario stoliarskiykostiantyn

stoliarskiykostiantyn

Hi everyone! Could someone help me please! I'm trying to implement EfiPay to send payment to pix with such code from python sdk from github repo https://github.com/efipay/sdk-python-apis-efi

Code looks like this now:

class EfiClient:
EFI_FT_PIX_KEY: str
EFI_FT_PIX_WEBHOOK_URL: str
efi: EfiPay
creds: s.EfiCredentials

def configure(self, config: BaseConfig):
# Notion: Sandbox = False on prod machine
self.creds = s.EfiCredentials(
client_id=config.EFI_CLIENT_ID,
client_secret=config.EFI_CLIENT_SECRET,
sandbox=config.EFI_IS_SANDBOX,
certificate=config.EFI_CERTIFICATE,
)

self.efi = EfiPay(self.creds.model_dump())
self.EFI_FT_PIX_KEY = config.EFI_FT_PIX_KEY
self.EFI_FT_PIX_WEBHOOK_URL = config.EFI_FT_PIX_WEBHOOK_URL

And the toruble is that efipay class doesn't acceprt certificates, support told me to chage base_url BUT there no way to do it! Help please) Would be very grateful!

Avatar discord do usuario _acb09

_acb09

Ver Respostas

{
"certificate": "CAMINHO_ABSOLUTO/web\\certificates\\efipay\\homologacao-544374-cert.pem",
"clientId": "Client_Id_????",
"clientSecret": "Client_Secret_???",
"debug": false,
"pwdCertificate": "",
"responseHeaders": true,
"sandbox": true,
"timeout": 30,
"headers": {
"x-skip-mtls-checking": true
}
}

Avatar discord do usuario felipenunes0714

felipenunes0714

Ver Respostas

$config = [
"certificado" => "./producao.pem",
"client_id" => "",
"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 "
";
?>

eu estou chamando essa chamada simples da documentação, e ela me retorna a pagina em branco ao invés de retornar o token

Avatar discord do usuario _acb09

_acb09

Ver Respostas

O meu código está assim:

$config = [];
$config["certificado"] = config("services.efipay.certificate_path");
$config["client_id"] = config("services.efipay.client_id");
$config["client_secret"] = config("services.efipay.client_secret");

$headers = [];
$headers['Authorization'] = "Basic " . base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$headers['Content-Type'] = 'application/json';

$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 => 60,
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 => $headers
));

$response = curl_exec($curl);

if (curl_errno($curl)) {
dd('Error:' . curl_error($curl));
}

curl_close($curl);

dd($response);

Avatar discord do usuario _acb09

_acb09

Ver Respostas

Bom dia!
Obtive sucesso ao criar a API de boleto no sistema da empresa onde trabalho. Agora, preciso implementar via PIX.
Considerando que estou implementando para a empresa e já possuo Client_secret, Client_id e chave pix aleatória (gerada no painel da Efi). Em todos os cenários via PIX, eu preciso de OAuth para apenas gerar o QR Code para o cliente efetuar o pagamento, assim como via boleto (que não necessita de OAuth)?

Avatar discord do usuario marilia_05972

marilia_05972

Ver Respostas

Olá, boa noite.
Eu estou fazendo uma integração usando o sdk (gn-api-sdk-typescript": "^2.0.1") , estou tomando um erro de Forbidden na chamada ao pixCreateImmediateCharge([], body) quando tento chamar em ambiente de produção (ou creds de prod). A única mensagem de retorno é essa, "forbidden".
Porém, quando uso credenciais de homologação, funciona perfeitamente, e quando mudo para as de produção, tomo essa exceção. Como a mensagem não está clara, eu não consegui decifrar o que pode ser.
Parâmetros corretos, sandbox=true quando homol, false quando prod, client_secret, client_id,
certificate corretos, chave pix informada corretamente.
Meu único vacilo, foi que não fiz o download do certificado de produção no ato em que ele foi gerado, então eu excluí e gerei outro. Poderia ser esse o problema? Caso positivo, o que eu tenho que fazer agora?
Também testei com o "sdk-typescript-apis-efi": "^1.0.2" e ocorre o mesmo cenário.

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Oi, @eugabrieloliv. Bom dia! Tudo bem?
Tente configurar o plug-in novamente, inserindo as credencias (Client_Id, Client_Secret) e o certificado. Depois teste novamente.

Avatar discord do usuario un0w.

un0w.

client id de produção também?

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Olá, @cesaroficial. Bom dia!
Você precisa criar uma aplicação em sua conta para obter as credenciais Client_Id e Client_Secret, que serão inseridas nos campos Username e Password.
Veja aqui em nossa documentação como criar a aplicação em sua conta.

Avatar discord do usuario d_coder_

d_coder_

Ver Respostas

pessoal quando estou fazendo a requisição para conseguir o access_token tenho como reposta
{"error":"invalid_client","error_description":"Invalid or inactive credentials"}
Isso é o certificado que esta errado ou as credenciais, client id e secrect que estão ? Tipo estou usando a url e homologação.

Avatar discord do usuario diogojunior.

diogojunior.

# encoding: utf-8

from efipay import EfiPay
import sys

# Configurações de credenciais
credentials = {
'client_id': '',
'client_secret': '',
'sandbox': False, # Altere para True se estiver usando o ambiente de sandbox
'certificate': r''
}

def obter_dados_usuario():
try:
chave_pix = input("Informe a chave PIX do destinatário: ")
valor = input("Informe o valor da transferência: ")

# Verificando se os valores informados são válidos
if not chave_pix:
raise ValueError("A chave PIX não pode ser vazia.")

# Substituir vírgula por ponto e converter para float
valor_float = float(valor.replace(',', '.'))

if valor_float <= 0:
raise ValueError("O valor deve ser um número positivo.")

return chave_pix, "{:.2f}".format(valor_float)
except ValueError as ve:
print(f"Erro de validação: {ve}")
sys.exit(1)

Avatar discord do usuario _franciscovieira

_franciscovieira

Ver Respostas

passei header como
Client_Id e Client_Secret no lugar de username e password
{"error": {"status":400,"message":"Bad request"}}

Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Boa tarde @_franciscovieira ! É o client_id e client_secret sim

Avatar discord do usuario _franciscovieira

_franciscovieira

Ver Respostas

Outra dúvida é com relação ao username e password. Estou usando o client_id e o client_secret. É isso mesmo?

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Oi, @gil.brandao0067. Bom dia!
Esta mudança que o João mencionou não altera na SDK. Você irá apenas incluir o __dirname junto com as credenciais para indicar o caminho absoluto para o certificado.
Exemplo:

js
module.exports = {
sandbox: false,
client_id: 'seu_client_id',
client_secret: 'seu_client_secret',
certificate: __dirname + '/caminho/ate/seu/certificado.p12',
};

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @pedrolucasneto! Tudo bem?
Mas no seu caso que está utilizando a SDK de Node, ela já trata de obter o token de autenticação e consumir o endpoint requerido. No exemplo que mandou, o método pixCreateImediateCharge cria a cobrança Pix.

Em sua implementação está usando Client_Id, Client_Secret e certificado de homologação? Pois de acordo com o parâmetro sandbox=true, deve ser usada as credenciais do ambiente de teste.