Histórico de mensagens sobre js em pix

EXIBINDO CONVERSAS RECENTES:

Texto: js
Canal: pix
Avatar discord do usuario palloma_efi

palloma_efi

Ver Respostas

No pagamento de uma cobrança Pix, você receberá a notificação dessa forma:

json
// Pix recebido
{
"pix": [
{
"endToEndId": "E1803615022211340s08793XPJ",
"txid": "fc9a43k6ff384ryP5f41719",
"chave": "2c3c7441-b91e-4982-3c25-6105581e18ae",
"valor": "0.01",
"horario": "2020-12-21T13:40:34.000Z",
"infoPagador": "pagando o pix"
}
]
}
Neste https://dev.efipay.com.br/docs/api-pix/webhooks#requisição">link da nossa documentação contém variações desse recebimento.

Avatar discord do usuario marcelo_efi

marcelo_efi

Boa tarde @gabmatos , tudo bem? O Node possui uma biblioteca nativa para resolução de caminhos. Veja se com ela o problema persiste: Documentação do Node.js - Path

Avatar discord do usuario gabmatos

gabmatos

Olá, estou tendo o seguinte problema para localizar meus certificados:

[1] Falha ao ler o certificado, verifique o caminho informado: ../pix/homologacao.p12
[1] Verifique o atributo sandbox e certificate, e garanta que eles estejam corretamente atribuidos para o ambiente desejado

Na estrutura de diretórios tenho a imagem anexa. Mesmo passando o path correto no credentials.js não é encontrado.

Conseguem me ajudar?
imagem enviada na mensagem pelo usuario gabmatos
imagem enviada na mensagem pelo usuario gabmatos

Avatar discord do usuario nuvem_vet

nuvem_vet

consegue me ajudar?
public function setupWebhook($webhookUrl)
{
$data = [
"webhookUrl" => $webhookUrl
];

$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://pix-h.api.efipay.com.br/v2/webhook/' . $this->getClientKeyPix(),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer {$this->getClientKeyPix()}",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$error = curl_error($curl);
curl_close($curl);

if ($error) {
throw new \Exception("Erro ao configurar o webhook: $error");
}

return json_decode($response, true);
}

consegue me dizer se essa requisição para configurar o webhook esta correta?

Avatar discord do usuario shacallprt

shacallprt

Ver Respostas

valor: { original: '0.07' },
chave: 'a4689b1a-d72e-4e5d-baec-bcbc519e2985',
solicitacaoPagador: 'Transferência automática de 50% do pagamento recebido.'
}
[ERROR] Erro ao realizar transferência Pix:
Erro geral: {
nome: 'json_invalido',
mensagem: 'Valores ou tipos de campo inválidos',
erros: [
{
chave: 'required',
caminho: '',
mensagem: 'deve ter a propriedade obrigatória body'
}
]
}

Avatar discord do usuario smoretti

smoretti

passei o client id, client secret, o certificado.p12 e dá o erro

json
cause: Error: socket hang up
at TLSSocket.socketOnEnd (node:_http_client:535:25)
at TLSSocket.emit (node:events:531:35)
at endReadableNT (node:internal/streams/readable:1696:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
code: 'ECONNRESET'
}

Avatar discord do usuario smoretti

smoretti

quem aqui tem sistema de pagamento automático por pix utilizando a api do efí, poderia me chamar na dm?
node.js
-# node.js

Avatar discord do usuario pfzoz

pfzoz

Eu tentei rodar o exemplo do EFIPay do java:

object = efiPay.call("ofListRecurrencyPixPayment", map, new JSONObject());

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

A Efí não adiciona a chave Pix no path. Ela adiciona apenas no JSON que é enviado... agora, se você quiser você pode configurar assim, desde que os caracteres da chave sejam caracteres permitidos em paths HTTP.

Avatar discord do usuario curtinaz

curtinaz

Ver Respostas

Pessoal, tenho tomado este erro ultimamente ao pedir uma transferência PIX.

{"nome":"json_invalido","mensagem":"Valores ou tipos de campo inválidos","erros":[{"chave":"pattern","caminho":".body.favorecido.contaBanco.codigoBanco","mensagem":"deve corresponder ao padrão "^[0-9]{8}$""}]}

Só que o codigoBanco está no padrão correto...

json
{
"valor": "6.33",
"pagador": {
"chave": "",
"infoPagador": "
"
},
"favorecido": {
"contaBanco": {
"nome": "Maxy ",
"codigoBanco": "8561701",
"agencia": "0001",
"conta": "265
737",
"tipoConta": "cacc",
"cpf": "21009"
}
}
}

Avatar discord do usuario aleixojunior

aleixojunior

Boa noite, apos atualizar o sdk, da versão typescript, para a nova versao (sdk-node-apis-efi
)
Estou tendo o seguinte erro: Could not find a declaration file for module 'sdk-node-apis-efi'

Estou utilizando no NextJs
Alguem ja passou por esse erro, e sabe como resolver?

Avatar discord do usuario bigjhinzxy

bigjhinzxy

Gente como configurar esse certificado, utilizo o node.js, devo converte-lo em PEM e colocar o caminho do certificado? E qual a senha dele

javascript
[LOG] Error: FALHA AO LER O CERTIFICADO Promise {
Error: FALHA AO LER O CERTIFICADO
at Endpoints.run (C:\Users\danie\Downloads\Genesis.RecenteAgora\node_modules\gn-api-sdk-node\lib\endpoints.js:46:11)
at Gerencianet. [as pixCreateImmediateCharge] (C:\Users\danie\Downloads\Genesis.RecenteAgora\node_modules\gn-api-sdk-node\index.js:20:22)
at C:\Users\danie\Downloads\Genesis.RecenteAgora\Functions\DentroCarrinho.js:59:21
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async DentroCarrinhoPix (C:\Users\danie\Downloads\Genesis.RecenteAgora\Functions\DentroCarrinho.js:10:5)
}

Avatar discord do usuario ricieremassariol

ricieremassariol

Ver Respostas

Se não me engano vai ser só vc fazer uma url externa no seu site que eles vão direcionar para lá as respostas em json..

Avatar discord do usuario rafaaoki

rafaaoki

Ver Respostas

public CobGerada pixCreateImmediateCharge(ClienteDto cliente) throws JSONException, EfiPayException {
try {
Credentials credentials = new Credentials();

JSONObject options = new JSONObject();
options.put("client_id", credentials.getClientId());
options.put("client_secret", credentials.getClientSecret());
options.put("certificate", credentials.getCertificate());
options.put("sandbox", credentials.isSandbox());


JSONObject body = new JSONObject();

System.out.println(cliente.toString());

String cpf = cliente.cpf().replaceAll("\\.", "");
cpf = cpf.replaceAll("-", "");

String rg = cliente.rg().replaceAll("\\.", "");
rg = rg.replaceAll("-", "");

body.put("calendario", new JSONObject().put("expiracao", 3600));
body.put("devedor", new JSONObject().put("cpf", cpf ).put("nome" , cliente.nome_completo()));
body.put("valor", new JSONObject().put("original", "0.01"));
body.put("chave", "3c4961f4-0921-4eda-97bc-71704defb09f");

EfiPay efi = new EfiPay(options);
JSONObject response = efi.call("pixCreateImmediateCharge", new HashMap(), body);
CobGerada res = new Gson().fromJson(response.toString() , CobGerada.class);
return res;
}catch (EfiPayException e){
System.out.println(e.getError());
System.out.println(e.getErrorDescription());
throw new RuntimeException(e.getMessage());
}
catch (Exception e) {
System.out.println(e.getMessage());
throw new RuntimeException(e.getMessage());
}
}

esse codigo funcionaria como um envio de pagamento pix via api?

Avatar discord do usuario rafaaoki

rafaaoki

como funciona p importar o certificado aqui nesse json?
imagem enviada na mensagem pelo usuario rafaaoki

Avatar discord do usuario tellyscastro

tellyscastro

Ver Respostas

O webhook esta retornando 200

mas curiosamente não esta salvando o json com novos dados.

Esta linha >> "POST /webhook/?ignorar=/pix/pix HTTP/1.0" 200 18 "-" "API Pix Efi (producao)"

Em tese acionaria o script do /webhook/index.php, confere?

Mas, fiz vários testes aqui, e não esta ... alguém ja se deparou com esse erro?
imagem enviada na mensagem pelo usuario tellyscastro

Avatar discord do usuario tellyscastro

tellyscastro

Ver Respostas

mas seu eu atualizar o url de retorno do webhook, eu deveria receber mensagens do webhook?

Eu tive a impressão que nos vídeos de instrução da instalação, que quanto vc atualiza a url, vc recebe atualizações em seu dados.json

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @tellyscastro! Tudo bem?
A função $response = $api->pixDetailWebhook($params) traz os dados do webhook que você cadastrou. Caso ainda não tenha cadastrado, nada será retornado.

Uma sugestão para resolver, e lidar com a adição do /pix, é cadastrar seu webhook com a query param ?ignorar=.
Exemplo: https://seudominio.com.br/webhook/?ignorar=

Dessa forma, quando o webhook for acionado, o /pix será tratado como um parâmetro, e você receberá o JSON no arquivo /webhook/index.php, usando a URL: http://seudominio.com.br/webhook/?ignorar=/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());
}
}

Avatar discord do usuario emiliocalvet

emiliocalvet

Ver Respostas

java
public PixChargeResponse pixCreateImmediateCharge(PixChargeRequest pixChargeRequest) {
if (!isValidValue(pixChargeRequest.valor())) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Valor inválido de criação do pix");
}

var options = new Credentials().getOptionsJson();

JSONObject body = new JSONObject();
body.put("calendario", new JSONObject().put("expiracao", pixDurationSeconds));
body.put("valor", new JSONObject().put("original", pixChargeRequest.valor()));
body.put("chave", token);

JSONArray infoAdicionais = new JSONArray();
infoAdicionais.put(new JSONObject().put("nome", "Descrição do serviço").put("valor", pixChargeRequest.serviceDescription()));
body.put("infoAdicionais", infoAdicionais);

try {
EfiPay efi = new EfiPay(options);
JSONObject response = efi.call("pixCreateImmediateCharge", new HashMap<>(), body);
String copyAndPaste = response.getString("pixCopiaECola");
byte[] qrCode = PixGenerateQRCode.generateQRCode(copyAndPaste, 300, 300);

pixWebhookService.configPixWebhook(token);

return new PixChargeResponse(
response.get("txid").toString(),
qrCode,
copyAndPaste,
pixChargeRequest.valor(),
pixChargeRequest.serviceDescription()
);
} catch (EfiPayException e) {
logger.error("Falha ao criar cobrança pix!", e);
throw new ResponseStatusException(
HttpStatus.BAD_REQUEST,
"Falha ao criar cobrança Pix!"
);
} catch (Exception e) {
logger.error("Erro desconhecido ao criar cobrança pix!", e);
throw new ResponseStatusException(
HttpStatus.INTERNAL_SERVER_ERROR,
"Erro ao criar cobrança Pix!"
);
}
}