Histórico

EXIBINDO CONVERSAS RECENTES:

Texto: Secret id
# pix
Avatar discord do usuario relance_

relance_

Ver RespostasVer no Discord

Olá, estou utilizando o sdk da efipay e estou com uma duvida ao implementar no meu sistema. estou desenvolvendo um script que no cenario atual ele consegue gerar o pix qrcode somente com a client_id, secret_id, certificado e chave pix, a minha duvida é no ambiente de produção tem que fazer algum lógica de autenticação para gerar o qrcode de pix?

# pix
Avatar discord do usuario kaykyramos

kaykyramos

Ver no Discord

import as EfiPay from 'sdk-node-apis-efi'

import { Injectable } from '@nestjs/common'

import 'dotenv/config'

@Injectable()
export class PixService {
private efiPay = new EfiPay({
sandbox: false,
client_id: process.env.EFIPAY_CLIENT_ID,
client_secret: process.env.EFIPAY_CLIENT_SECRET,
certificate: './certs/producao-453290-LinkZap-v2.p12',
})

constructor() {
//
}

public async getBalance() {
const { saldo } = await this.efiPay.getAccountBalance()
return Number(saldo)
}

public async payPix(pixCode: string, amount: number) {
const balance = await this.getBalance()
if (balance < amount) {
throw new Error('Saldo insuficiente')
}

try {
const response = await this.efiPay.pixSend(
{ idEnvio: '01' },
{
valor: amount,
pagador: {
chave: 'a4c3dcd3-0005-454e-957f-df416a63c4ed',
},
favorecido: {
chave: pixCode,
},
},
)
return response
} catch (error) {
console.log(error)
}
}
}

# devs
Avatar discord do usuario akaize.

akaize.

Ver RespostasVer no Discord

Até então o que eu enviava era o Bearer com o token gerado a partir do Client_ID e Client_Secret, isso validado pelo certificado.
Vi aqui que isso ocorre no webhook, antes funcionava normal, eu atualizava o webhook com a chave antes de criar o pix com a mesma chave, agora a mesma lógica esta retornando este erro

# cartões
Avatar discord do usuario jessica_efi

jessica_efi

Ver RespostasVer no Discord

Perfeito. A integração com cartão funciona da mesma forma que o boleto. Você precisa do client_id e client_secret. Você pode criar uma nova aplicação em sua conta ou utilizar uma ja existente. Fica a seu critério. Em seguida, você deve entrar em contato com o suporte do IXC que eles vão auxiliar você no restante da integração.

Para criar a aplicação, você pode seguir [esse](https://sejaefi.com.br/central-de-ajuda/api/como-obter-chaves-client-id-e-client-secret-na-api#conteudo) tutorial.
Verifique também se você ja tem o Ramo de atividade cadastrado em sua conta.

# pix
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver RespostasVer no Discord

Tanto o certificado quanto o par Client ID e Client Secret são diferentes à depender do ambiente, o parâmetro sandbox nas credenciais diz à qual ambiente você vai tentar fazer requisição.
Com sandbox = true você fará requisição para homologação, portanto suas credenciais (Client ID, Client Secrect e certificado) devem ser de homologação.

# módulos-plugins
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver no Discord

Segue um exemplo mais detalhado, onde é feito a autenticação e consumo do endpoint para criar um boleto.

php
$config = [
"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://cobrancas-h.api.efipay.com.br/v1/authorize',
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_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Basic ' . $autorizacao
),
));
$returnAuth = json_decode(curl_exec($curl), true);
$access_token = $returnAuth['access_token'];
curl_close($curl);

echo "
";
var_dump($returnAuth);
echo "
";

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://cobrancas-h.api.efipay.com.br/v1/charge/one-step',
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 => '{
"items": [
{
"name": "Teste Gn",
"amount": 1,
"value": 500
}
],
"payment": {
"banking_billet": {
"expire_at": "2024-12-10",
"customer": {
"name": "Gorbadoc Oldbuck",
"cpf": "94271564656",
"email": "[email protected]"
}
}
}
}',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer ' . $returnAuth['access_token'],
'Content-Type: application/json'
),
));

$responseBillet = curl_exec($curl);
curl_close($curl);

echo "
";
var_dump($responseBillet);
echo "
";

# módulos-plugins
Avatar discord do usuario discovery_kids

discovery_kids

Ver RespostasVer no Discord

sim estou usando cURL.

//Desenvolvido pela Consultoria Técnica da Efí
$config = [
"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://cobrancas-h.api.efipay.com.br/v1/authorize',
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_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);

echo "

";
echo $response;
echo "
";
?>

com as devidas alterações no client_id e client_secret.

# pix
Avatar discord do usuario walysonpatric

walysonpatric

Ver RespostasVer no Discord

Coloquei assim mas só funciona no localhost a confirmação de PIX (http://localhost:8000/cob/a7689c1ff5b64eeca8695e2e58c30007), no site da vercel da página não encontrada.

Já coloquei as variáveis no site e estou usando o certificado p12, o pem da erro até no localhost.

Teria que colocar algum comando no arquivo next.config.js ou vercel.json?

// Rota para consultar cobrança por txid
router.get('/cob/:txid', async (req, res) => {
const txid = req.params.txid;

try {
const reqGN = await GNRequest({
clientID: process.env.GN_CLIENT_ID,
clientSecret: process.env.GN_CLIENT_SECRET
});

// Consultar a cobrança usando o txid
const response = await reqGN.get(https://pix.api.efipay.com.br/v2/cob/${txid});

// Verificar se há um objeto PIX na resposta
if (response.status === 200 && response.data.pix) {

// Enviar o código de ativação junto com a resposta
return res.status(200).json({ message: 'PIX confirmado com sucesso.' });
} else {
// O PIX não foi pago ou não encontrado
return res.status(400).json({ error: 'PIX não encontrado ou não foi pago.' });
}
} catch (error) {
console.error('Erro ao consultar a cobrança:', error.message);
return res.status(500).json({ error: 'Erro ao consultar a cobrança.' });
}
});

# devs
Avatar discord do usuario neocanibal

neocanibal

Ver RespostasVer no Discord

Até o certificado precisa ser criado ?

Não posso utilizar o meu certificado e a Clientid/clientsecret do client?


Outra dúvida, plataformas que oferecem integração contam com a opção do OAuth que torna este processo muito mais simplificado para o cliente, redirecionando-os para uma pagina ou efetuam o login e já autorizão o credenciamento... A EfiBank tem este recurso ?

# pix
Avatar discord do usuario calebportodev

calebportodev

Ver no Discord

Olá. Como usar as chaves CLIENT_ID e CLIENT_SECRET_ID e o certificado .p12 para gerar um pagamento em PIX?

imagem enviada na mensagem pelo usuario calebportodev

# bolix
Avatar discord do usuario tioatila

tioatila

Ver RespostasVer no Discord

tudo joia Guilher e com você?

Eu verifiquei e as credenciais estão apontando para de produção e esse retorno vem da requisição de postback de vocês para minha aplicação, existe a possibilidade de o notification que vem de vocês não existe mais na plataforma de vocês e por isso acontece?

php
$notification = $request->get('notification');

UpdateStatusInstallment::dispatch($notification)
->onQueue('update_installment_callback');
PHP
$api = new Gerencianet([
'client_id' => env('GERENCIA_NET_CLIENT_ID'),
'client_secret' => env('GERENCIANET_SECRET'),
'sandbox' => app()->environment() === 'local'
]);
$chargeNotification = $api->getNotification([
'token' => $this->notificationId
], []);
\Log::info("CHARGE NOTIFICATION",$chargeNotification);

Ele não chega nem a printa esse log de Charge Notification e o volume está consideravel
imagem enviada na mensagem pelo usuario tioatila

# bolix
Avatar discord do usuario rafaelogliari

rafaelogliari

Ver RespostasVer no Discord

Bom dia!

Estou com dificuldades de gerar boleto com PHP Curl. Sempre retorna: Unauthorized.
Utilizei credencias de Homologação.

Estou utilizando esse modelo:
$config = [
"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://cobrancas-h.api.efipay.com.br/v1/charge/one-step',
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 =>'{
"items": [{
"name": "Product 1",
"value": 500,
"amount": 1
}],
"shippings": [{
"name": "Default Shipping Cost",
"value": 100
}],
"payment": {
"banking_billet": {
"expire_at": "2024-04-16",
"customer": {
"name": "Gorbadoc Oldbuck",
"email": "[email protected]",
"cpf": "10617184682",
"birth": "1977-01-15",
"phone_number": "62986070247"

}
}
}
}',
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario luizinhodavila.

luizinhodavila.

Ver RespostasVer no Discord

{{rota_base_pix}}/oauth/token estou tentando fazer Send na Homologação (clientid, clientsecret e certificado) traz Could not send request....em Produção "error": "invalid_client",
"error_description": "Invalid or inactive credentials"

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver RespostasVer no Discord

Mas se você tiver o clientid, clientsecret e certificado, você mesmo pode fazer as requisições usando curl em linha de comando, já que o desenvolvedor do sistema não está conseguindo fazer. O que precisa estar claro para você é de quem é a responsabilidade, pois o recurso está aí para ser usado e atende sua demanda.

# assinaturas
Avatar discord do usuario fabio_p_almeida

fabio_p_almeida

Ver no Discord

na minha maquina onde trabalho é linux Debian e funciona perfeitamente, porem em maquinas windows tenho o seguinte retorno:

Objeto JSON no terminal:
{"metadata":{"notification_url":"https://www.velejarsoftware.com.br"},"payment":{"banking_billet":{"configurations":{"fine":200,"interest":33},"expire_at":"2024-02-06","message":"Pague pelo código de barras ou pelo QR Code","customer":{"address":{"zipcode":"46300000","number":"192","city":"Caculé","street":"AV ANTONIO MUNIZ","neighborhood":"CENTRO","state":"BA","complement":""},"juridical_person":{"corporate_name":"JOSE LUIS FROTA AGUIAR","cnpj":"20790401000108"},"phone_number":"7734551000","email":"[email protected]"}}},"items":[{"amount":1,"name":"MUST F R G 20KG","value":1000}]}
ERRO 4: Authorization Error: Client_id or Client_secret are wrong
ERRO 5: br.com.efi.efisdk.exceptions.AuthorizationException: Authorization Error: Client_id or Client_secret are wrong

# devs
Avatar discord do usuario itms.

itms.

Ver no Discord

Boa noite, tenho uma aplicação em Java e Spring Boot e estou utilizando a API fornecida por vocês. Realizei toda a integração, porém estou enfrentando um problema em meu ambiente produtivo. Ao tentar criar um plano de assinatura, estou recebendo o erro "br.com.efi.efisdk.exceptions.AuthorizationException: Authorization Error: Client_id or Client_secret are wrong".

Verifiquei todas as configurações, e parecia estar tudo correto; no entanto, o erro persistia. Para facilitar a investigação, subi a aplicação em minha máquina e apontei tudo para o ambiente de produção. Para minha surpresa, a API conseguiu se autenticar e criar um plano de assinatura.

Fiz a seguinte verificações:

1. Client_Id e Client_Secret estão corretos;
2. O corpo da requisição está correto;
3. Realizei a chamada via Postman utilizando o mesmo Client_Id, Client_Secret e corpo para a URL https://cobrancas.api.efipay.com.br/v1/plan e obtive sucesso;
4. Verifiquei o fuso horário da máquina e da JVM no ambiente de produção.

Não sei mais o que devo verificar, já que na minha máquina e via Postman funciona conforme o esperado. Encontro esse problema de autenticação apenas na máquina da AWS.

# assinaturas
Avatar discord do usuario itms.

itms.

Ver RespostasVer no Discord

Boa noite, tenho uma aplicação em Java e Spring Boot e estou utilizando a API fornecida por vocês. Realizei toda a integração, porém estou enfrentando um problema em meu ambiente produtivo. Ao tentar criar um plano de assinatura, estou recebendo o erro "br.com.efi.efisdk.exceptions.AuthorizationException: Authorization Error: Client_id or Client_secret are wrong".

Verifiquei todas as configurações, e parecia estar tudo correto; no entanto, o erro persistia. Para facilitar a investigação, subi a aplicação em minha máquina e apontei tudo para o ambiente de produção. Para minha surpresa, a API conseguiu se autenticar e criar um plano de assinatura.

Fiz a seguinte verificações:

1. Client_Id e Client_Secret estão corretos;
2. O corpo da requisição está correto;
3. Realizei a chamada via Postman utilizando o mesmo Client_Id, Client_Secret e corpo para a URL https://cobrancas.api.efipay.com.br/v1/plan e obtive sucesso;
4. Verifiquei o fuso horário da máquina e da JVM no ambiente de produção.

Não sei mais o que devo verificar, já que na minha máquina e via Postman funciona conforme o esperado. Encontro esse problema de autenticação apenas na máquina da AWS.