Histórico de mensagens

EXIBINDO CONVERSAS RECENTES:

# pagamento-contas
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Bom dia, @almostcc. Tudo bem?
Como podemos te ajudar?

# assinaturas
Avatar discord do usuario darkestone_

darkestone_

Tipo, uma recorrência de 6 meses, mas por causa de X motivo vou dar um desconto de 20% nos próximos 2 meses

# assinaturas
Avatar discord do usuario darkestone_

darkestone_

Queria saber se é possível adicionar descontos após uma assinatura ter sido criada?

# assinaturas
Avatar discord do usuario darkestone_

darkestone_

Ver Respostas

Bom dia!

# dúvidas
Avatar discord do usuario darkestone_

darkestone_

Queria saber se é possível adicionar descontos após uma assinatura ter sido criada?

# dúvidas
Avatar discord do usuario darkestone_

darkestone_

Ver Respostas

Bom dia!

# bolix
Avatar discord do usuario raphaelblc

raphaelblc

Ver Respostas

Neste caso é inviável, consultar pagamento por pagamento, mesmo tendo a lista de pagamento através do endpoint anterior
e neste endpoint não tem a data de pagamento de forma fácil (Pelo menos que eu reparei), apenas o valor, então eu teria que pegar a data de pagamento de uma requisição e o valor de outra?
imagem enviada na mensagem pelo usuario raphaelblc

# pix
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í.

# bolix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Entendido, @raphaelblc. No endpoint GET /v1/charge/:id, onde :id é o charge_id da cobrança, você consegue ver os detalhes de uma cobrança específica. Se a cobrança estiver com o status paid, o campo paid_value mostrará o valor pago pelo cliente.

Vamos passar para nossa equipe da API a sugestão, para que avaliem a possibilidade de incluir o paid_value na consulta do lote.

# pix
Avatar discord do usuario johnlenon

johnlenon

Ver Respostas

Legal @rubenskuhl obrigado pela dica vou dar uma olhada

# bolix
Avatar discord do usuario raphaelblc

raphaelblc

Ver Respostas

Obrigado pelo retorno.
Você fala de webhook, certo?
O sistema em questão não possui webhook? como proceder nestes casos para fazer uma consulta por período trazendo os pagamentos ( com pelo menos valor e data de pagamento)?

# pix
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.

# bolix
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Por nada!

# pix
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

# 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
)

# 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());
}
}

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

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