Notificações
API Gateway
Esta API é utilizada para operações do gateway de pagamento:
- Produção: https://api.sopague.com.br/gateway
- Homologação: https://api-hmg.sopague.com.br/gateway
- Arquitetura: Representational State Transfer (REST)
Introdução
Caso uma tentativa de pagamento não obtenha êxito, será enviada uma notificação para os estabelecimentos que possuam cadastro de notificações que estão com o status ativo. O envio ocorrerá após cada tentativa de cobrança, mesmo nos casos que possuam teimosinha.
Criar Notificação
Para criar os parâmetros de notificação é necessário enviar uma requisição utilizando o método POST para o recurso conforme o exemplo:
POST
/v1/recurrence/merchantnotifier
Via request Representational State Transfer (REST) com o body:
{
"merchantId": "017005555500000",
"name": "New Merchant Notifier",
"description": "Adding callback",
"callbackUrl": "http://test.com/feeds/paymentsFail/"
}
Dicionário de dados - Parâmetros
PROPRIEDADE | DESCRIÇÃO | TIPO | LOCAL | OBRIGATÓRIO | TAMANHO MÁXIMO |
---|---|---|---|---|---|
MerchantId | Identificador do estabelecimento. | string | body | sim | 20 |
Name | Nome da notificação | string | body | sim | 50 |
Description | Descrição da notificação | string | body | sim | 150 |
CallbackUrl | URL do endpoint do lado do estabelecimento | string | body | sim | 500 |
- 🟢 200
- 🔴 400
- 🔴 500
"0dd23cbd-de75-45a5-b2d1-972191140593"
Dicionário de dados - Retorno
PROPRIEDADE | DESCRIÇÃO | TIPO |
---|---|---|
NotifierId | Identificador da notificação criada. | string |
[
{
"tag": "CallbackUrl",
"description": "URL inválida"
}
]
[
{
"tag": "",
"description": "Não foi possível executar comando. Erro desconhecido."
}
]
Buscar Notificações
Busca de cadastros de notificações:
GET
/v1/recurrence/merchantnotifier?merchantId={merchantId}&name={name}&status={status}
Dicionário de dados - Query Parameters
PROPRIEDADE | DESCRIÇÃO | TIPO | LOCAL | OBRIGATÓRIO | TAMANHO MÁXIMO |
---|---|---|---|---|---|
MerchantId | ID do Estabelecimento | string | query params | não | 20 |
Name | Nome da notificação | string | query params | não | 50 |
Status | Status da notificação (Active, Canceled) | string | query params | não | Fixo |
- 🟢 200
- 🔴 400
[
{
"status": "Active",
"merchantId": "017005555500000",
"name": "New Merchant Notifier",
"description": "Adding callback",
"callbackUrl": "http://test.com/feeds/paymentsFail/",
"id": "57412511-2940-477d-8422-f5c17a3fe4f5",
"createdBy": "sopague",
"createdDate": "2021-08-25T16:27:40.97"
}
]
Dicionário de dados - Retorno
PROPRIEDADE | DESCRIÇÃO | TIPO |
---|---|---|
Status | Status da notificação | string |
MerchantId | Identificador do estabelecimento | string |
Name | Nome da notificação | string |
Description | Descrição da notificação | string |
CallbackUrl | Url de callback da notificação | string |
Id | Identificador da notificação | string |
CreatedBy | Usuário responsável pela criação da notificação | string |
CreatedDate | Data e hora de criação da notificação | datetime |
[
{
"tag": "Query",
"description": "Parâmetros de consulta inválidos"
}
]
Atualizar Notificação
Para atualizar os dados da Notificação é necessário enviar uma requisição utilizando o método PUT para o recurso conforme o exemplo:
PUT
/v1/recurrence/merchantnotifier/{merchantNotifierId}
Via request Representational State Transfer (REST) com o body:
{
"merchantId": "017005555500000",
"name": "Merchant Notifier",
"description": "Updating callback",
"callbackUrl": "http://test.com/feeds/paymentsFail/v2",
"status": "Active"
}
Dicionário de dados - Parâmetros
PROPRIEDADE | DESCRIÇÃO | TIPO | LOCAL | OBRIGATÓRIO | TAMANHO MÁXIMO |
---|---|---|---|---|---|
MerchantNotifierId | Identificador da notificação a ser alterada. | string | path | sim | 36 |
MerchantId | Identificador do estabelecimento. | string | body | sim | 20 |
Name | Nome da notificação | string | body | sim | 50 |
Description | Descrição da notificação | string | body | sim | 150 |
CallbackUrl | URL do endpoint do lado do estabelecimento | string | body | sim | 500 |
Status | Status da notificação (Active, Canceled) | string | body | sim | Fixo |
- 🟢 200
- 🔴 400
- 🔴 404
{
"status": "Active",
"merchantId": "017005555500000",
"name": "Update Merchant Notifier",
"description": "Updating callback",
"callbackUrl": "http://test.com/feeds/paymentsFail/v2/",
"id": "57412511-2940-477d-8422-f5c17a3fe4f6",
"createdBy": "Sopague",
"createdDate": "2021-08-25T16:27:40.97",
"modifiedBy": "Sopague",
"modifiedDate": "2021-08-25T16:37:29.917"
}
Dicionário de dados - Retorno
PROPRIEDADE | DESCRIÇÃO | TIPO |
---|---|---|
Status | Status da notificação | string |
MerchantId | Identificador do estabelecimento | string |
Name | Nome da notificação | string |
Description | Descrição da notificação | string |
CallbackUrl | Url de callback da notificação | string |
Id | Identificador da notificação | string |
CreatedBy | Usuário responsável pela criação da notificação | string |
CreatedDate | Data e hora de criação da notificação | datetime |
ModifiedBy | Usuário responsável pela última modificação da notificação | string |
ModifiedDate | Data e hora da última modificação da notificação | datetime |
[
{
"tag": "Status",
"description": "Status inválido"
}
]
{
"error": "Notificação não encontrada"
}
Notificações de Pagamentos com Falha
Para receber notificações de falhas, é necessário que o Estabelecimento implemente um endpoint em sua aplicação, que receba uma requisição utilizando o método POST conforme o exemplo:
O sistema só envia notificação de falhas no pagamento.
POST
"endpoint do Estabelecimento"
Via request Representational State Transfer (REST) com o body:
{
"SubscriptionId": "ba2dad08-7047-467d-8555-a947621d6554",
"PlanId": "72c6bfb2-4437-4a6d-9513-d9b4db520323",
"OrderNumber": "1234567890",
"BillingId": "33d49aaa-2aa7-402c-98d7-bc6d46af3aee",
"ExpireAt": "2021-08-20T07:00:00-03:00",
"ErrorCode": "Falha ao enviar notificação",
"ErrorMessage": "Não foi possível se conectar."
}
Dicionário de dados - Parâmetros
PROPRIEDADE | DESCRIÇÃO | TIPO | LOCAL | OBRIGATÓRIO |
---|---|---|---|---|
SubscriptionId | Identificador da assinatura | string | body | sim |
PlanId | Identificador do plano | string | body | sim |
OrderNumber | Descrição da ordem | string | body | sim |
BillingId | Identificador da cobrança | decimal | body | sim |
ExpireAt | Data vencimento cobrança | datetime | body | sim |
ErrorCode | Código de erro recebido do autorizador. | string | body | sim |
ErrorMessage | Mensagem de erro recebido do autorizador. | string | body | sim |
- 🟢 200
- 🔴 400
{
"status": "success",
"message": "Notificação processada"
}
{
"error": "Dados inválidos"
}
Notificações de Pagamento
Sempre que houver uma cobrança ou atualização de status de pagamento de uma transação de recorrência, caso as notificações estejam habilitadas, será enviado um POST para a URL configurada, com os seguintes campos:
Estrutura da Notificação de Pagamento
Dicionário de dados - Parâmetros
PROPRIEDADE | DESCRIÇÃO | TIPO |
---|---|---|
PaymentId | PaymentId da transação. | String |
OrderNumber | Número de ordem de transação. | String |
SubscriptionId | Id da assinatura. | String |
BillingId | Id do plano. | String |
StatusDescription | Descrição do status do pagamento. | String |
StatusCode | Código do status do pagamento. | String |
Date | Data do pagamento. | DateTime |
PaymentMethod | Método de pagamento. | String |
Exemplo de Notificação
{
"paymentId": "",
"checkoutOrderNumber": "",
"orderNumber": "",
"subscriptionId": "",
"billingId": "",
"statusDescription": "",
"statusCode": "",
"date": "2024-10-08T21:00:00",
"paymentMethod": null
}
Resposta
Caso o pagamento seja efetuado com sucesso, o campo statusCode
será preenchido com 200. Em caso de statusCode
diferente de 200, a descrição do erro no pagamento estará no campo statusDescription
.
Para configurar e começar a receber as notificações acesse as instruções em nossa documentação.
Status das Notificações
Status | Descrição |
---|---|
Active | Notificação ativa e funcionando |
Canceled | Notificação cancelada |
Códigos de Erro
HTTP Status Code
HTTP Status Code | Descrição |
---|---|
200 | OK |
400 | Bad Request |
401 | Unauthorized |
402 | Client Error |
500 | Internal Server Error |
Exemplo de Erro
Campo obrigatório não informado, a resposta será:
[
{
"tag": "Campo",
"description": "Não pode ser nulo ou vazio."
}
]
Propriedade | Descrição |
---|---|
Tag | Código de Erro da API. |
Description | Descrição do erro. |
Para dúvidas ou problemas, acesse a seção de suporte no