Histórico de mensagens em pix

EXIBINDO CONVERSAS RECENTES:

Data: 16/10/2024
Canal: pix
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Sendo tratado no # atendimento

Avatar discord do usuario saulao0

saulao0

Ver Respostas

teria algum suporte disponivel para ir em chamada cmg?

Avatar discord do usuario saulao0

saulao0

boa tarde

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Bom dia, @misaelbgs. Espero que esteja bem.
Este é o link da nossa Collection que manteremos atualizada com os endpoints da API Pix Efí.

Avatar discord do usuario johnlenon

johnlenon

Ver Respostas

Legal @rubenskuhl obrigado pela dica vou dar uma olhada

Avatar discord do usuario emiliocalvet

emiliocalvet

Ver Respostas

System.setProperty("javax.net.ssl.keyStore", credentials.getCertificate());

O certificado que coloquei foi de forma global, pra ir em todas as requisições independente de qual seja. Não sei se era conflito ou coisa do tipo mas essa implementação que mandei parou de dar erro quando removi o SDK. Pelo menos até agr.

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @misaelbgs!
Como você fez a conversão do certificado?
Você pode usar um dos nossos conversores:
https://github.com/efipay/conversor-p12-efi
https://efipay.github.io/encode-credentials/certificado.html

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Verifique se o certificado está com serial number negativo. Versões mais recentes de Go implicam com isso.


To workaround after upgrade to go1.23, we can enable the x509negativeserial setting using godebug directive in the go.mod file.

go 1.23

godebug (
x509negativeserial=1
)

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!"
);
}
}

Avatar discord do usuario misaelbgs

misaelbgs

Ver Respostas

Essa lib não me parece madura o suficiente.. minha dúvida principal seria se ela realmente funciona..

Avatar discord do usuario misaelbgs

misaelbgs

Ver Respostas

Bom dia pessoal, estou tentando utilizar essa lib https://github.com/efipay/sdk-go-apis-efi para gerar um código pix..
Porém sempre recebo esse erro "Falha ao carregar par de chaves". Já tentei verificar a permissão dos arquivos de certificado..

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

O código que passou não é da SDK. Nele, não encontrei exatamente o motivo da falha, pois não pude executá-lo. Mas, aparentemente, a função getUrlConnection() não está passando o certificado.

Avatar discord do usuario emiliocalvet

emiliocalvet

Ver Respostas

@guilherme_efi, você chegou a encontrar algum erro na implementação que mandei? Consegui fazer implementando por fora mas gostaria de saber qual o problema ao usar o sdk. Tem alguma config extra relacionada ao certificado que não está na doc?

Avatar discord do usuario emiliocalvet

emiliocalvet

Estava fazendo da mesma forma que falava o Github de vocês, o estranho é que funcionava de forma aleatória. Decidi remover todo o sdk e implementar as requisições, deu certo.

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @emiliocalvet! Tudo bem?
Esta falha aparenta ser falha devido a ausência do certificado. Além do endpoint de autenticação, você está enviando o certificado nos demais endpoints?

Avatar discord do usuario emiliocalvet

emiliocalvet

Ver Respostas

Boa noite! Estou realizando a integração de uma api SpringBoot com o sdk da efi.
Ao utilizar o sdk, mesmo seguindo a risca toda documentação (ClientId, ClientSecret e Certificado p12) a chamada efi.call retorna os seguintes erros:
Unexpected end of file from server ou Connection reset
O estranho é que as vezes ao reiniciar funciona e para de funcionar depois de algum tempo. Pensando que poderia ser problema no sdk implementei chamadas nos endpoints da api e obtive exatamente o mesmo comportamento, funciona e depois de um tempo para de funcionar. Alguém já passou por isso? Estou com esse problema já faz alguns dias.