Histórico de mensagens sobre expiracao em pix

EXIBINDO CONVERSAS RECENTES:

Texto: expiracao
Canal: pix
Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Você pode utilizar o endpoint de Consultar Cobrança(GET /v2/cob/:txid), passando o txid da cobrança, que vai te retornar todas as informações. Por exemplo, de uma cobrança Paga, vai te retornar o seguinte:

{
"calendario": {
"criacao": "2020-09-09T20:15:00.358Z",
"expiracao": 3600
},
"txid": "655dfdb1-a451-4b8f-bb58-254b958913fb",
"revisao": 0,
"loc": {
"id": 1,
"location": "qrcodes-pix.gerencianet.com.br/1dd7f893-a58e-4172-8702-8dc33e21a403",
"tipoCob": "cob",
"criacao": "2020-09-09T20:15:00.358Z"
},
"location": "qrcodes-pix.gerencianet.com.br/1dd7f893-a58e-4172-8702-8dc33e21a403",
"status": "CONCLUIDA",
"devedor": {
"cpf": "12345678909",
"nome": "Francisco da Silva"
},
"valor": {
"original": "0.01"
},
"chave": "40a0932d-1918-4eee-845d-35a2da1690dc",
"solicitacaoPagador": "Informe o número ou identificador do pedido.",
"infoAdicionais": [
{
"nome": "Campo 1",
"valor": "Informação Adicional1 do PSP-Recebedor"
}
],
"pix": [
{
"endToEndId": "E12345678202009091221kkkkkkkkkkk",
"txid": "655dfdb1-a451-4b8f-bb58-254b958913fb",
"valor": "0.01",
"chave": "40a0932d-1918-4eee-845d-35a2da1690dc",
"horario": "2020-09-09T20:15:00.358Z"
}
]
}

Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Bom dia @arig4m3r ! O body da sua requisição esta incorreto. A chave você passou dentro do Objeto pagador e não existe o atributo infoPagador. Você deve seguir à seguinte estrutura:

{
"calendario": {
"expiracao": 3600
},
"devedor": {
"cpf": "12345678909",
"nome": "Francisco da Silva"
},
"valor": {
"original": "0.01"
},
"chave": "sua_chave",
"solicitacaoPagador": "Serviço realizado.",
"infoAdicionais": [
{
"nome": "Campo 1",
"valor": "Informação Adicional1 do PSP-Recebedor"
}
]
}

Avatar discord do usuario arig4m3r

arig4m3r

Olá, estou tentando criar o seguinte pix

js
let body = {
calendario: {
expiracao: 3600,
},
valor: {
original: ${subtotal}.00,
},
chave: "Chave Aqui",
pagador: {
chave: "Chave Aqui",
infoPagador: "Info Pagador",
},
};

mas recebo o erro

js
{
nome: 'json_invalido',
mensagem: 'Valores ou tipos de campo inválidos',
erros: [
{
chave: 'additionalProperties',
caminho: '.body',
mensagem: 'não são permitidas propriedades adicionais'
}
]
}

Função utilizada:

js
const pixRes = await gcClient
.pixCreateImmediateCharge({}, body)
.catch((error: any) => {
console.log(error);
});

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @matheusnalmeida! Tudo bem?
Nesse caso você vai utilizar o endpoint POST /v2/cob(https://dev.gerencianet.com.br/docs/api-pix-endpoints#criar-cobran%C3%A7a-imediata-sem-txid), passando o parâmetro loc=>id, com o identificador do location desejado. Assim o txid desse nova cobrança será associado a este location.
Segue um json de exemplo:

json
{
"calendario": {
"expiracao": 3600
},
"devedor": {
"cpf": "12345678909",
"nome": "Francisco da Silva"
},
"valor": {
"original": "123.45"
},
"chave": "71cdf9ba-c695-4e3c-b010-abb521a3f1be",
"loc": {
"id": 12
}
}
Neste vídeo você pode ver mais detalhes de todo o processo: https://youtu.be/8YDNjUFxC4o?list=PLRqvcUTH2VsWufBmzOdTVeLEOTGrPNoiu

Avatar discord do usuario ukoddy

ukoddy

{
"status": "ATIVA",
"calendario": {
"criacao": "2020-09-09T20:15:00.358Z",
"expiracao": "3600"
},
"location": "pix.example.com/qr/9d36b84f-c70b-478f-b95c-12729b90ca25",
"txid": "7978c0c97ea847e78e8849634473c1f1",
"revisao": 1,
"devedor": {
"cnpj": "12345678000195",
"nome": "Empresa de Serviços SA"
},
"valor": {
"original": "567.89"
},
"chave": "a1f4102e-a446-4a57-bcce-6fa48899c1d1",
"solicitacaoPagador": "Informe o número ou identificador do pedido."
}

achei esse exemplo na docs da api, como eu sei se tá pago ou n? seria o status?

Avatar discord do usuario romerocox

romerocox

Achei que tinha um limite de expiracao, a nivel de banco central

Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Boa tarde, @romerocox! Tudo bem?
O atributo expiracao aceita como valor máximo int32, que da aproximadamente 68 anos.

Avatar discord do usuario giulianojordao

giulianojordao

Ver Respostas

A chamada está assim:
const token = req.body.token;

const certificado = fs.readFileSync(path.join(__dirname, '../', process.env.EFI_HOMOL_CERT));

const credenciais = {
client_id: process.env.EFI_HOMOL_CLIENT_ID,
client_secret: process.env.EFI_HOMOL_SECRET,
};

const data = {
calendario: {
expiracao: 3600
},
devedor: {
cpf: "00000000191",
nome: "Anônimo"
},
valor: {
original: "1.00"
},
chave: process.env.EFI_CHAVE_PIX,
solicitacaoPagador: "NOMESITE" + moment().format("YYYYMMDDHHmmss").toString()
};

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

var config = {
method: "POST",
url: process.env.EFI_HOMOL_API_URL_BASE + "/v2/cob",
headers: {
Authorization: token,
"Content-Type": "application/json",
},
httpsAgent: agent,
data: data
};

const newResponse = await axios(config).then((response) => {
return response;
}).catch((error) => {
console.log(error.message);
});

Avatar discord do usuario fabiosql

fabiosql

Ver Respostas

Pessoal bom dia! se alguém puder me ajudar eu agradeço,
fiz a integração do pix com a efí, (php sdk)
1) a aplicação está no ambiente de produção
2) estou utilizando a chave/certificate/client_id/client_secret de produção
3) já até configurei o callback do webhook
4) expiracao = 3600 e dados do 'devedor" reais

Ao gerar o QR CODE, ele me retorna o copia e cola normalmente, mas ao tentar pagar aparece o erro do app dos bancos:
"QR Code inválidoo"
imagem enviada na mensagem pelo usuario fabiosql
imagem enviada na mensagem pelo usuario fabiosql

Avatar discord do usuario douglascarteribordignon

douglascarteribordignon

Ver Respostas

Tenta isso e vê se funciona:

javascript
const body = {
calendario: {
expiracao: 3600
},
valor: {
original: price.toLocaleString("pt-br", { minimumFractionDigits: 2 }).replace(",", ".")
},
chave: key_GERENCIANET_PIX_KEY,
solicitacaoPagador: #Fatura:${invoiceId},
marketplace: {
mode: 2, // 1 para a tarifa ser descontada apenas da conta emissora da cobrança, 2 para a tarifa ser descontada proporcionalmente para as contas definidas
repasses: [
{
tipo: "porcentagem",
valor: "15.00",
favorecido: {
cpf: "12345678909",
conta: "1234567"
}
},
{
tipo: "porcentagem",
valor: "25.00",
favorecido: {
cpf: "94271564656",
conta: "7654321"
}
}
]
}
};

try {
pix = await gerencianet.pixCreateImmediateCharge(null, body);
qrcode = await gerencianet.pixGenerateQRCode({
id: pix.loc.id
});
} catch (error) {
console.log(error);
throw new AppError("Validation fails", 400);
}

Avatar discord do usuario rafaelribeiro.sp

rafaelribeiro.sp

const body = {
calendario: {
expiracao: 3600
},
valor: {
original: price.toLocaleString("pt-br", { minimumFractionDigits: 2 }).replace(",", ".")
},
chave: key_GERENCIANET_PIX_KEY,
solicitacaoPagador: #Fatura:${invoiceId}
};

try {

pix = await gerencianet.pixCreateImmediateCharge(null, body);

qrcode = await gerencianet.pixGenerateQRCode({
id: pix.loc.id
});



} catch (error) {
console.log(error);
throw new AppError("Validation fails", 400);
}

}


A dúvida é, se eu repassar aqui,

'marketplace'=>array(
'mode'=>1, //1 para a tarifa ser descontada apenas da conta emissora da cobrança, 2 para a tarifa ser descontada proporcionalmente para as contas definidas
'repasses'=>$repasses
)

Vai funcionar?

Avatar discord do usuario lorenacastro

lorenacastro

Ver Respostas

Boa noite a todos. Estou usando o SDK de php e estou obtendo Unauthorized no modo de produção para gerar uma charge de Pix. verifiquei as chaves e estão ok. No modo de teste deu certo. Alguem sabe o que pode ser?

usei:

$api = new Gerencianet($options);
$pix = $api->pixCreateImmediateCharge([], $body);

Options e body nesse formato:

$options = {
"client_id": "Client_Id_xxxxxx",
"client_secret": "Client_Secret_xxxxx",
"sandbox": false,
"pix_cert": "xxxxx/CertProducao.pem",
}
$body pix = {
"calendario": {
"expiracao": 3600
},
"devedor": {
"cpf": "xxxxx",
"nome": "Joao Silva"
},
"valor": {
"original": "100.00"
},
"chave": "xxxxxx",
"solicitacaoPagador": "1"
}

Avatar discord do usuario guilherme.lopes

guilherme.lopes

Ver Respostas

Bom dia

Estou utilizando este exemplo

https://github.com/gerencianet/gn-api-sdk-java-examples/blob/master/src/main/java/br/com/gerencianet/pix/charge/json/PixCreateCharge.java

body: {"devedor":{"cpf":"94271564656","nome":"Gorbadoc Oldbuck"},"valor":{"original":"0.01"},"chave":"sua_chave","calendario":{"expiracao":3600},"infoAdicionais":[{"valor":"Informação Adicional1 do PSP-Recebedor","nome":"Campo 1"},{"valor":"Informação Adicional2 do PSP-Recebedor","nome":"Campo 2"}],"solicitacaoPagador":"Serviço realizado."}


Só que retorna este erro
775328670784159744/1721133005123message.txt

Avatar discord do usuario guilherme.lopes

guilherme.lopes

Ver Respostas

Mesmo erro

body: {
"devedor": {
"cpf": "xxxxxxxxx",
"nome": "Guilherme Costa Lopes"
},
"valor": {
"original": "1500.00"
},
"chave": "xxxxxx",
"calendario": {
"expiracao": 3600
},
"solicitacaoPagador": "Conta a receber ID: b463afc1-a4e6-4c0c-8422-18c06e22f43b, com o nome: PIX"
}

2023-06-19 09:34:03 - b.c.g.g.c.ContaReceberApplication - checkServerTrusted
2023-06-19 09:34:03 - b.c.g.g.c.c.g.GerenciaNetPixComponent - gerencianet - salvarPix - erroDescricao: Connection reset
javax.net.ssl.SSLException: Connection reset
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:127)

Avatar discord do usuario guilherme.lopes

guilherme.lopes

Bom dia

Estou testando o PIX

Estou enviando assim:
{"devedor":{"cpf":"xxxxxxxxxxxx","nome":"Guilherme Costa Lopes"},"valor":{"original":"1500.000"},"chave":"xxxxxx","calendario":{"expiracao":3600},"solicitacaoPagador":"Conta a receber ID: 4947ce33-ea60-4bb4-87cd-8ca6640f8316, com o nome: PIX"}

Retorna o erro:

2023-06-19 08:29:38 - b.c.g.p.resource.MensagensRetorno - Connection reset
br.com.ghnetsoft.principal.exception.GeralException: Connection reset
at br.com.ghnetsoft.gestorsistemas.contareceber.client.gerencianet.GerenciaNetPixComponent.salvarPix(GerenciaNetPixComponent.java:64)

O que pode ser ?

Avatar discord do usuario joandervieira

joandervieira

Ver Respostas

Olá pessoal, bom dia.
Estou tentando implementar a cobrança de pix usando GoLang. (quero gerar um link para pagamento do pix com um id de transação para eu saber se foi foi pago e quem pagou).
Acredito ser este Ednpoint:

PUT
/v2/cob/
:txid
Endpoint para cadastrar uma cobrança com um identificador de transação (txid).
No SDK GoLang o método mais próximo que encontrei que acredito chamar este endpoint é este:
gn.CreateCharge(body)

Estou tentando chamar com este método com este body:
body := map[string]interface{}{
"calendario": map[string]interface{}{
"expiracao": 3600,
},
"devedor": map[string]interface{}{
"cpf": efiPaymentDTO.PayerIdentifier,
"nome": efiPaymentDTO.PayerName,
},
"valor": map[string]interface{}{
"original": formatAmount(efiPaymentDTO.Amount),
},
"chave": config.ComandoPixKey,
"solicitacaoPagador": "Checkout Comando",
}

Porém estou recebendo este erro:
(EXTRA []string=[{\"code\":3500034,\"error\":\"validation_error\",\"error_description\":\"A propriedade [items] é obrigatória.\"}])

Algumas dúvidas:
- Este método CreateCharge() realmente corresponde ao endpoint /v2/cob/ ?
- Qual o body correto para este método ? usei o mesmo indicado na documentação para /v2/cob/;
- Este método CreateCharge() não aceita o transactionID, como passar este txid ?

Desde já muito obrigado !

Avatar discord do usuario .alanpske

.alanpske

axios
.post('https://api-pix-h.gerencianet.com.br/oauth/token', data, {
headers: {
Authorization: Basic ${auth},
'Content-Type': 'application/json'
},
httpsAgent: agent,
})
.then((response) => {
const accessToken = response.data?.access_token;
console.log(JSON.stringify(response.data));
const endpoint = 'https://api-pix-h.gerencianet.com.br/v2/cob';

const dataCob = {
calendario: {
"expiracao": 3600
},
devedor: {
"cpf": "12345678910",
"nome": "John Doe"
},
valor: {
"original": "123.45"
},
chave: "d6d67ce2-9225-4902-b298-e7b86d1b6a3a",
solicitacaoPagador: "Informe o número ou identificador do pedido."
}

const config = {
httpsAgent: agent,
headers: {
Authorization: Bearer ${accessToken},
'Content-Type': 'application/json'
}
}

axios.post(endpoint, dataCob, config).then(console.log)
})
.catch(error => {

console.error(error);
});

Avatar discord do usuario williambaka

williambaka

Ver Respostas

bom dia, alguem que entende de flutter que poderia me ajudar?
Fiz o seguinte função para me retorna o codigo de copiar e colar do pix e o codigo em bytes da imagem do qrcode em um print mesmo.

void _createCharge(String valor) {
Gerencianet gerencianet = Gerencianet(OPTIONS);

Map body = {
"calendario": {"expiracao": 3600},
"valor": {"original": '1.00'},
"chave": '8616d859-985a-40bd-85fb-4cfa677c9324'
};

gerencianet.call('pixCreateImmediateCharge', body: body).then((value) {
print(value);
gerencianet.call('pixGeneratedQRCode',
params: {'id': value['loc']['id']}).then((value) {
print(value);
});
});
}

e agora está dando erro no meu codigo no seguinte local:
external void usePrivateKeyBytes(List keyBytes, {String? password});

isso pode ter algo a ver com os certificados .pem? esses certificados deveriam ter senha? Por que na documentação diz pra deixar vazio e eu deixei vazio mesmo.

Avatar discord do usuario saviobraz

saviobraz

const options = {

sandbox: false, // troque para false em produção
client_id: client_id_ger_net !== undefined ? client_id_ger_net : "",
client_secret:client_secret_ger_net !== undefined ? client_secret_ger_net: "",
certificate: './cert_area_azul_crt.pem',
pemkey: './cert_area_azul_key.pem',
//pix_cert: p12,
//pix_cert: p12Buffer,
};
const gerencianet = new Gerencianet(options);

const body = {
calendario: {
expiracao: 3600,
},
devedor: {
cpf: cpf,
nome: nome,
},
valor: {
original: data.valor_cobranca,
},
chave: chave_evp_pix_ger_net, // Informe sua chave Pix cadastrada na gerencianet //o campo abaixo é opcional
infoAdicionais: [
{
nome: 'Pagamento via app',
valor: 'Recarga Area Azul Itaperuna Plus',
},
{
nome: 'Pedido',
valor: data.numerosaida,
},
],
};

return gerencianet
.pixCreateImmediateCharge([], body)
.then((resposta: Promise) => {
//console.log(resposta);
console.log("pixCreateImmediateCharge: " + JSON.stringify(resposta));
})
.catch((error: Promise) => {
//console.log(error);
console.log("Erro no pixCreateImmediateCharge: " + JSON.stringify(error));
});

Avatar discord do usuario jg_19

jg_19

Ver Respostas

foi criado um PIX via API

Ele continua com status ativo mesmo depois da data periodo que deveria estar expirado?

"calendario": {
"criacao": "2023-05-05T23:07:11.000Z",
"expiracao": 13970
},