Histórico de mensagens sobre url POST em assinaturas

EXIBINDO CONVERSAS RECENTES:

Texto: url POST
Canal: assinaturas
Avatar discord do usuario jessica_efi

jessica_efi

Ah sim... seria o token de notificação. Seu sistema recebe um POST da Efí contendo o token de notificação. Para receber essas notificações, você precisa cadastrar uma URL de notificação na cobrança e prepará-la para ler o token na variável $_POST['notification']. A qualquer momento que você consultar esse token de notificação, irá obter as informações da cobrança.

Avatar discord do usuario palloma_efi

palloma_efi

Bom dia @carolineballes ! A notification_url também serve para assinaturas. Neste sentido, qualquer alteração no status das cobranças vinculadas à assinatura, você é notificada automaticamente. Caso o usuário queira alterar os dados do cartão de crédito, basta utilizar o campo update_card no endpoint de retentativa da cobrança (POST /v1/charge/:id/retry). https://sejaefi.link/Hyldf6Hae0
https://dev.efipay.com.br/docs/api-cobrancas/assinatura#retentativa-de-pagamento-de-assinatura-via-cart%C3%A3o-de-cr%C3%A9dito

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Bom dia @rian2965, tudo bem?

Você pode consumir o endpoint POST /v1/plan/:id/subscription/one-step para emitir a cobrança e ao mesmo tempo atribuir a URL de notificação com o atributo metadata.

Uma vez que a cobrança tenha uma URL de notificação, todas as alterações nela irão fazer com que seja disparado um POST para sua URL, nesta notificação terá um token que deve ser consultado para verificar a situação da cobrança
imagem enviada na mensagem pelo usuario joaolucas_efi

Avatar discord do usuario rian2965

rian2965

Opa, boa noite

tenho duas duvidas referentes as assinaturas

no endpoint de criar uma assinatura e pagar pelo bolix, eu consigo informar a url de notification?
atualmente eu faço isso em 2 passos, primeiro crio e depois atribuo

após assinar, o cliente vai ficar recebendo a cobrança no cartão. Então todo mês, após o primeiro pagamento, sempre que ele pagar será recebido uma post notificação no meu sistema?

Avatar discord do usuario itms.

itms.

Ver Respostas

Boa noite, tenho uma aplicação em Java e Spring Boot e estou utilizando a API fornecida por vocês. Realizei toda a integração, porém estou enfrentando um problema em meu ambiente produtivo. Ao tentar criar um plano de assinatura, estou recebendo o erro "br.com.efi.efisdk.exceptions.AuthorizationException: Authorization Error: Client_id or Client_secret are wrong".

Verifiquei todas as configurações, e parecia estar tudo correto; no entanto, o erro persistia. Para facilitar a investigação, subi a aplicação em minha máquina e apontei tudo para o ambiente de produção. Para minha surpresa, a API conseguiu se autenticar e criar um plano de assinatura.

Fiz a seguinte verificações:

1. Client_Id e Client_Secret estão corretos;
2. O corpo da requisição está correto;
3. Realizei a chamada via Postman utilizando o mesmo Client_Id, Client_Secret e corpo para a URL https://cobrancas.api.efipay.com.br/v1/plan e obtive sucesso;
4. Verifiquei o fuso horário da máquina e da JVM no ambiente de produção.

Não sei mais o que devo verificar, já que na minha máquina e via Postman funciona conforme o esperado. Encontro esse problema de autenticação apenas na máquina da AWS.

Avatar discord do usuario antoniofernandes

antoniofernandes

@igor_efi Fala meu amigo bora tirar mais uma dúvida. Me corrija se estiver errado.

Entendi que vou receber um post com código da notificação na url indicada no campo notification
código esse que devo utilizar para consultar os dados da notificação e fazer a tratativa no meu sistema. Correto?

js
const token = $_POST["notification"];

const params = {
'token' : $token
};

var gerencianet = new Gerencianet(options);

gerencianet
.getNotification(params)
.then(console.log)
.catch(console.log)
.done();

Minha dúvida é:

EXISTE alguma forma de no painel pega o conteudo do post notification, para que eu possa simular localmente o envio desse post e fazer todas tratativas fazendo a consulta localmente?

Vale lembrar que estou implementado assinatura apenas com cartão de crédito.

Avatar discord do usuario carvalhocarneiro

carvalhocarneiro

Estou tentando executar esse código:

def criar_plano_assinatura(self):
try:
self.gerar_head()
if self.headers is None:
raise AttributeError("O headers está vazio, impossível fazer a consulta")

_url = f"{self.uri}v1/plan/"

_data = {
"name": settings.GERENCIANET_NOME_PLANO,
"interval": settings.GERENCIANET_INTERVALO_COBRANCA,
"repeats": settings.GERENCIANET_QUANTIDADE_REPETICAO
}

response = requests.post(_url, data=json.dumps(_data), headers=self.headers, cert=self.certificado)
if response.status_code != 200:
raise Exception(f"Ocorreu um erro ao chamar o método criar_plano_assinatura: {response.json()}")
if response_json is None:
raise Exception(f"Ocorreu o erro ao chamar o método criar_plano_assinatura")
response_json = response.json()
logger.debug(f"Retorno da criação do plano: {response_json}")
return response_json
except Exception as error:
logger.debug(f"Error no criar_plano_assinatura: {error}")
raise Exception(f"Ocorreu o erro {error} ao chamar o método criar_plano_assinatura")

Avatar discord do usuario palloma_efi

palloma_efi

Ver Respostas

Boa noite, Felipe! Qual falha aparece ao realizar a autenticação? Quando uma transação possui uma URL de notificação cadastrada (atributo notification_url), a Gerencianet dispara um POST para esta URL a cada mudança no status da cobrança. Você não está recebendo este token?

Avatar discord do usuario palloma_efi

palloma_efi

Ver Respostas

Olá, <@!358620323249389569> ! Boa noite.
Para enviar as notificações, a Gerencianet dispara um POST para a URL cadastrada a cada mudança no status da cobrança.
Essa notificação possui um token específico, que será o mesmo durante todo o "ciclo de alterações" da transação. Seu sistema deve então consultar essa notificação através da rota GET /notification/:token, passando o token enviado no POST anterior.
Para visualizar os detalhes de cada requisição da API de Cobranças, acesse: https://documenter.getpostman.com/view/13574984/TW71kRme

Avatar discord do usuario ludboy6380

ludboy6380

Ver Respostas

Quando é cancelada uma assinatura, não recebo notificação na url POST, tenho que ficar fazendo verificações periodicas?

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Mas a melhor forma para verificar se um boleto foi pago, é recebendo as notificação automáticas. As notificações permitem que você seja informado quando uma transação/boleto tiver seu status alterado para pago, por exemplo.
Para isso, quando criar uma cobrança você irá informar o atributo notification_url, e então a Gerencianet dispara um POST para esta URL a cada mudança no status da cobrança.

Neste POST vai conter apenas uma informação: um token de notificação. Ou seja, se a URL cadastrada estiver preparada para ler o token na variável $_POST['notification'] e consultar essa informação, a resposta será todos os dados informativos sobre a alteração sofrida pela cobrança, como por exemplo, o status anterior e atual da cobrança.

Segue o link com mais detalhes sobre este assunto: https://dev.gerencianet.com.br/docs/notificacoes-recebendo