{
|
|
"openapi": "3.0.0",
|
|
"info": {
|
|
"title": "Integração - RecicleBem x Socin",
|
|
"description": "Coleção de endpoints para integração RecicleBem x Socin.",
|
|
"version": "1.0.0"
|
|
},
|
|
"components": {
|
|
"securitySchemes": {
|
|
"ApiKeyAuth": {
|
|
"type": "apiKey",
|
|
"in": "header",
|
|
"name": "X-WS-TOKEN-AUTH",
|
|
"description": "Chave de API para integração"
|
|
}
|
|
},
|
|
"schemas": {
|
|
"PaymentStatus": {
|
|
"type": "object",
|
|
"required": [
|
|
"total",
|
|
"transaction_id",
|
|
"status"
|
|
],
|
|
"properties": {
|
|
"total": {
|
|
"type": "number",
|
|
"description": "O valor monetário total.",
|
|
"example": 25.4
|
|
},
|
|
"transaction_id": {
|
|
"type": "string",
|
|
"description": "UUID único da autorização"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"description": "O status da autorização",
|
|
"enum": [
|
|
"authorized",
|
|
"insufficient-funds",
|
|
"rejected",
|
|
"pending",
|
|
"cancelled"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"CreateAuthorizationPayload": {
|
|
"type": "object",
|
|
"description": "Representa uma solicitação de pagamento via RecicleBem.",
|
|
"required": [
|
|
"id",
|
|
"payment_total",
|
|
"items_quantity",
|
|
"cupom_fiscal",
|
|
"empresa",
|
|
"pdv"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"description": "Identificador da venda gerado pelo PDV. Caso haja múltiplos pagamentos via RecicleBem na venda, utilize o mesmo ID."
|
|
},
|
|
"payment_total": {
|
|
"type": "number",
|
|
"format": "float",
|
|
"description": "Valor total do pagamento com o saldo do RecicleBem",
|
|
"example": 50.25
|
|
},
|
|
"items_quantity": {
|
|
"type": "integer",
|
|
"description": "Quantidade de itens na compra",
|
|
"example": 3
|
|
},
|
|
"cupom_fiscal": {
|
|
"type": "string",
|
|
"description": "Número do cupom fiscal",
|
|
"example": "000123"
|
|
},
|
|
"empresa": {
|
|
"type": "integer",
|
|
"description": "Local de compra - ID da tabela de empresa da C5",
|
|
"example": 224
|
|
},
|
|
"pdv": {
|
|
"type": "integer",
|
|
"description": "ID do PDV",
|
|
"example": 5
|
|
}
|
|
}
|
|
},
|
|
"CreateAuthorizationResponse": {
|
|
"type": "object",
|
|
"description": "Um objeto com o ID da solicitação registrada.",
|
|
"required": [
|
|
"transaction_id",
|
|
"qr_code"
|
|
],
|
|
"properties": {
|
|
"transaction_id": {
|
|
"type": "string",
|
|
"description": "UUID da transação registrada."
|
|
},
|
|
"qr_code": {
|
|
"type": "string",
|
|
"description": "Representação em QRCode do UUID da transação."
|
|
}
|
|
}
|
|
},
|
|
"FinishPaymentRequest": {
|
|
"type": "object",
|
|
"description": "Representa uma solicitação de finalização de pagamento via RecicleBem.",
|
|
"required": [
|
|
"id"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"description": "Identificador da venda gerado pelo PDV. Caso haja múltiplos pagamentos via RecicleBem na venda, utilize o mesmo ID."
|
|
}
|
|
}
|
|
},
|
|
"PaymentReversalRequest": {
|
|
"type": "object",
|
|
"description": "Representa uma solicitação de estorno de pagamento via RecicleBem.",
|
|
"required": [
|
|
"id"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"description": "Identificador da venda gerado pelo PDV. Caso haja múltiplos pagamentos via RecicleBem na venda, todos serão estornados."
|
|
}
|
|
}
|
|
},
|
|
"PaymentReversal": {
|
|
"type": "object",
|
|
"description": "Representa um pagamento estornado",
|
|
"required": [
|
|
"req_uuid",
|
|
"uuid_estorno",
|
|
"valor"
|
|
],
|
|
"properties": {
|
|
"req_uuid": {
|
|
"type": "string",
|
|
"description": "ID da transação"
|
|
},
|
|
"uuid_estorno": {
|
|
"type": "string",
|
|
"description": "ID do movimento de estorno"
|
|
},
|
|
"valor": {
|
|
"type": "number",
|
|
"description": "Valor do estorno"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"servers": [
|
|
{
|
|
"url": "http://vitruvioteste.barceloscia.com.br:9090",
|
|
"description": "Ambiente de testes"
|
|
},
|
|
{
|
|
"url": "http://davinti.barceloscia.com.br:9090/",
|
|
"description": "Ambiente de produção"
|
|
}
|
|
],
|
|
"security": [
|
|
{
|
|
"ApiKeyAuth": []
|
|
}
|
|
],
|
|
"paths": {
|
|
"/rest/api/integration/tokenauth/rb_socin_autorizacao": {
|
|
"get": {
|
|
"summary": "Consulta o status das autorizações para determinado pagamento.\n",
|
|
"description": "Aceita o ID do pagamento e retorna as autorizações.",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "query",
|
|
"type": "string",
|
|
"required": true
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Pagamento encontrado",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PaymentStatus"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "ID não encontrado nos query parameters"
|
|
},
|
|
"404": {
|
|
"description": "Pagamento não encontrado"
|
|
},
|
|
"500": {
|
|
"description": "Erro interno"
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"summary": "Registra uma nova autorização no pagamento especificado.",
|
|
"description": "Aceita os dados do pagamento e retorna o ID da transação.\n",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateAuthorizationPayload"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Solicitação criada e registrada",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/CreateAuthorizationResponse"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Corpo da requisição inválido"
|
|
},
|
|
"500": {
|
|
"description": "Erro interno"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/rest/api/integration/tokenauth/rb_socin_estorno": {
|
|
"post": {
|
|
"summary": "Estorna o pagamento especificado.",
|
|
"description": "Cancela todos os movimentos atrelados à este pagamento.\n",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PaymentReversalRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Pagamento estornado com sucesso",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PaymentReversal"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Corpo da requisição inválido"
|
|
},
|
|
"500": {
|
|
"description": "Erro interno"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/rest/api/integration/tokenauth/rb_socin_finalizar": {
|
|
"post": {
|
|
"summary": "Finaliza o pagamento especificado.",
|
|
"description": "Efetiva as baixas de saldo autorizadas e cancela as pendentes, retornando todas as autorizações registradas neste pagamento.\n",
|
|
"produces": [
|
|
"application/json"
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/FinishPaymentRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Pagamento finalizado com sucesso",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PaymentStatus"
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Corpo da requisição inválido"
|
|
},
|
|
"409": {
|
|
"description": "Tentativa de finalização não sucedida.",
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/PaymentStatus"
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Erro interno"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"tags": []
|
|
}
|