Histórico de mensagens sobre Client_ID

EXIBINDO CONVERSAS RECENTES:

Texto: Client_ID
# pix
Avatar discord do usuario luizcubas

luizcubas

Ver Respostas

Bom dia equipe Efi, espero que estejam bem. Por gentileza, estou utilizando a SDK de vocês para NodeJS e estou com uma dúvida, nas opções de inicialização do EfyPay, eu posso passar diretamente o certificado em Base64 através de uma variável de ambiente ou é obrigatório o uso de um arquivo?

Exemplo da documentação:

module.exports = {
sandbox: true,
client_id: 'seuClientId',
client_secret: 'seuClientSecret',
certificate: 'caminho/Ate/O/Certificado/Pix',
cert_base64: false, // Indica se o certificado está em base64 ou não
}

Como pretendo utilizar:

const options = {
sandbox: true,
client_id: process.env.EFIAPI_CLIENTID || "",
client_secret: process.env.EFIAPI_CLIENTSECRET || "",
certificate: process.env.EFIAPI_CERT,
cert_base64: true,
}
A ideia é que a variável de ambiente EFIAPI_CERT contenha diretamente o valor do certificado em BASE64, dessa forma evito ter que subir o arquivo para o servidor, seria possível?

# dúvidas
Avatar discord do usuario christopy

christopy

Tanto client id quanto client secret eu verifiquei que está correto e já tentei passar o atributo sandbox como false diretamente mas o erro persiste

# assinaturas
Avatar discord do usuario eddiesousa

eddiesousa

Ver Respostas

Eu preciso dos certificados de produção e homologação e ambas a chaves Client_Id e Client_Secret? Funciona, mas não lista nenhuma informação de clientes.

# pix
Avatar discord do usuario daviqsh

daviqsh

Ver Respostas

//Desenvolvido pela Consultoria Técnica da Efí

"use strict";
const https = require("https");
var axios = require("axios");
var fs = require("fs");

//Insira o caminho de seu certificado .p12 dentro de seu projeto
var certificado = fs.readFileSync("./certs/SorteioCabelo_hml_cert.pem");

//Insira os valores de suas credenciais em desenvolvimento do pix
var credenciais = {
client_id: process.env.CLIENT_ID_HML,
client_secret: process.env.CLIENT_SECRET_HML,
};


var data = JSON.stringify({ grant_type: "client_credentials" });
var data_credentials = credenciais.client_id + ":" + credenciais.client_secret;

// Codificando as credenciais em base64
var auth = Buffer.from(data_credentials).toString("base64");

const agent = new https.Agent({
cert: certificado,
passphrase: '',
});

//Consumo em desenvolvimento da rota post oauth/token
const config = {
method: "POST",
url: "https://pix-h.api.efipay.com.br/oauth/token",
headers: {
Authorization: "Basic " + auth,
"Content-Type": "application/json"
},
httpsAgent: agent,
data: data,
};

axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @daviqsh! O que o Rubens quis dizer é que, depois de obter o access_token, nas próximas requisições você deve enviar o access_token e continuar usando o certificado, sem precisar incluir o client_id e o client_secret.
Você já conseguiu obter o access_token? Como está montando a requisição?

# assinaturas
Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Para consumir esse endpoint, você vai utilizar a rota base da API cobrança, com o client_id e client_secret obtido em sua conta.

# assinaturas
Avatar discord do usuario antoniofernandes

antoniofernandes

Ver Respostas

@joaolucas_efi Boa tarde
estou tentando usar no novo skd com typescrit

js
const efiPay = new EfiPay(optionsEfi)

sendo meu optionsEfi:
js
optionsEfi {
sandbox: true,
client_id: 'Client_Id_a344…..’,
client_secret: 'Client_Secret_1a7…….’,
certificate: '0�\n' +
'm\x02\x01\x030�\n' +
'3\x06\t�H��\r\x01\x07\x01��\n' +
'$\x04�\n' +
' 0�\n' +
'\x1C0�\x04�\x06\t
�H��\r\x01\x07\x01��\x04�\x04�\x04�0�\x04�0�\x04�\x06\x0B�H��\r\x01\f\n' +
'\x01\x03��\x04�0�\x04|\x06\n' + …….
,
cert_base64: false
}

porem estou recebando o erro

ERROR TypeError: sdk_node_apis_efi_1.default is not a constructor
781119110310002689/1726676719481message.txt

# devs
Avatar discord do usuario guilhermecoelhoreal

guilhermecoelhoreal

Ver Respostas

O certificado, client id, client secret e access token estão no PHP

# pix
Avatar discord do usuario logaaaa

logaaaa

Ver Respostas

Boa tarde, estou usando o código de exemplo em PHP para cobrança imediata do PIX...
Me atentei ao card que explica sobre a inserção do Client_id e Client_Secret, Sandbox e a pasta e a conversão do certificado, no entanto, quanto rodo esse exemplo nos seguintes cenários, tenho retornos inesperados:

Produção: Ocorreu um erro - Mensagem: 401invalid_client - Credenciais inválidas ou inativas
Homologação : Gerou o QRCode e Chave Copia e Cola normalmente.

Servidor: Apache
Linguagem: PHP
BD: MySQL
SDK Composer Instalado
imagem enviada na mensagem pelo usuario logaaaa

# devs
Avatar discord do usuario thomasmendonca

thomasmendonca

Ver Respostas

Estou com problema pra fazer uma requisição.
Preenchi tudo certo com as chaves de client id, client secret, coloquei o certificado no meu projeto.

# pix
Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Certo. Para utilizar nossa API Pix, você vai precisar criar uma aplicação em sua conta Efí para obter as credenciais de autenticação, client_id e client_secret, e ativar os escopos da API Pix e também será necessário criar uma certificado. Para obter essa informações, você pode seguir esse tutorial.

# marketplace
Avatar discord do usuario tudocatolico

tudocatolico

Ver Respostas

Bom dia, os desenvolvedores indicanos me repotraram o seguinte: "Verificamos e descobrimos que o retorno de chamada do webhook não está sendo recebido após o processo de checkout. Você poderia confirmar se o webhook está configurado corretamente e ativo?" Você consegue verificar isso e me confirmar? pois no OpenCart 3 já revisei o certificado, a chave PIX, o client ID e a chave secreta, e está tudo certo.

# marketplace
Avatar discord do usuario tudocatolico

tudocatolico

Ver Respostas

João, os desenvolvedores indicanos me reportaram o seguinte: "Tentamos fazer o checkout no modo Sandbox e recebemos a mensagem de erro de que as credenciais da API não são válidas. Verifique as credenciais do sandbox e configure as credenciais corretas para que possamos testá-las."

Mas observando a imagem que eles enviaram (anexa neste post), percebi que o PIX Key, que está cadastrado na referente a configuração PIX, na extenção da API da EFÍ, é a minha chave pix aleatórioa da conta do Administrador. Deveria ser a "Chave client ID" ou a "Chave Secret" ?

Outra dúvida é que tenho uma Aplicação da API cobrança, criada dentro da área de API da conta do administrador do marketplace, para "API Cobranças, API Pix, API Pix via Open Finance". Sendo assim, entendo que já seria possível cobrar no cartão de crédito, boleto e pix, e ter o split de pagamento fazendo as divisões necessárias no marketplace, certo? Não é necessário eu criar mais uma API de Cobrança específica para a API PIX, certo? Pois aí teria mais pares de credenciais e chaves para produção e homologação, e não teria como configurar isso na extensão da EFí para OpenCart 3. Deveria funcionar os 3 meios de pagamento com esta mesma API, certo?
imagem enviada na mensagem pelo usuario tudocatolico

# marketplace
Avatar discord do usuario tudocatolico

tudocatolico

Ver Respostas

Os meus desenvolvedores são indianos e me solicitaram o seguinte: "Precisamos da opção no método PIX para pagar o QR no modo sandbox para concluir o processo de checkout. Por favor, nos forneça os detalhes sobre como podemos escanear o qr para pagar no modo Sandbox para verificar o ponto de comissão." , não sei o que responder, pois já passei o client id e a chave client id do homologação para eles. Conseguem me orientar?

# pix
Avatar discord do usuario aleque0169

aleque0169

Ver Respostas

Boa noite, pessoal.

Ao realizar a seguinte requisição: https://pix-h.api.efipay.com.br/oauth/token, utilizando meu Client_Id, Client_Secret e o certificado p12 de homologação. Nesse ambiente, consigo obter o token corretamente.

No entanto, ao tentar realizar a requisição utilizando o domínio https://pix.api.efipay.com.br/oauth/token com o Client_Id, Client_Secret e certificado p12 de produção, recebo a seguinte resposta de erro: "socket hang up".

O que devo fazer para resolver esse problema?
imagem enviada na mensagem pelo usuario aleque0169

# 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 jackson.calixto

jackson.calixto

Ver Respostas

Bom dia, estou iniciando minha primeira integração com a efí pois em meu projeto estou na fase final onde vou agregar transações financeiras, meu certificado homologação esta correto, meu client_id e secrert esta correto, tudo correto no postman, mas esse é o retorno.
POST https://pix-h.api.efipay.com.br/oauth/token
Error: socket hang up
Request Headers
Authorization: Basic dW5kZWZpbmVkIHVuZGVmaW5lZDpDbGllbnRfU2VjcmV0XzAwNTMwMjg3N2M0N2JmZGVkMmVjYjg2OTUwZDU5MWQ4MWNiMTIwODA=
Content-Type: application/json
User-Agent: PostmanRuntime/7.30.0
Accept: /
Cache-Control: no-cache
Postman-Token: 7e23b1dc-3340-4eaf-8ba5-6e7111485a21
Host: pix-h.api.efipay.com.br
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Request Body
{
"grant_type": "client_credentials"
}

# devs
Avatar discord do usuario charles_36784

charles_36784

Estou usando a Collection do Postman disponibilizada pela Efi. Não alterei nenhum attribute de nenhum request, exceto pelo client_id e client_secret com a url de homolog

# dúvidas
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

@luizfeleal existem algumas falha em como você montou a requisição, segue um exemplo de como fazer a autenticação:

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