Histórico de mensagens em pix

EXIBINDO CONVERSAS RECENTES:

Canal: pix
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.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

É possível sim, usando filtro no GET de /pix. Se o CPF for o de quem você está esperando, o Pix estará na resposta. Caso contrário, resposta vazia.
GET /pix?txid=xxxx,inicio=data-hora-de-criacao-da-cobranca,fim=data-hora-de-recebimento-do-webhook,cpf=yyyyyyyyy

Avatar discord do usuario johnlenon

johnlenon

Ver Respostas

Atualmente ela ocorre por CPF para garantir que o pagador é realmente que estamos esperando

Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

A sua validação seria somente pelo cpf? Pelo nome você não consegue saber?

Avatar discord do usuario johnlenon

johnlenon

Ver Respostas

Nesse caso, é impossível eu efetuar a validação de se quem pagou o pix é realmente a pessoa esperada que pague ou existe outra forma de efetuar essa validação?

Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Seria uma restrição nossa, em conformidade com a LGPD.

Avatar discord do usuario johnlenon

johnlenon

Ver Respostas

Notei que o documento do pagador possuí um hash, é alguma restrição do banco central?

Avatar discord do usuario jessica_efi

jessica_efi


imagem enviada na mensagem pelo usuario jessica_efi