# My Belvo Portal

MBP para Datos y Pagos
El My Belvo Portal (MBP) es un portal unificado donde los usuarios gestionan tanto los consentimientos de datos como de pagos. Este artículo se centra en las características de gestión de **consentimiento de datos**, incluyendo opciones de personalización y flujos de trabajo para la renovación de consentimientos. Para obtener información sobre cómo los usuarios visualizan sus consentimientos de pago e historial de transacciones, consulta nuestro artículo sobre el My Belvo Portal para Pagos.

El My Belvo Portal (MBP) permite a los usuarios gestionar los consentimientos que han otorgado previamente a las aplicaciones (utilizando el producto OFDA de Belvo) para acceder a sus datos en la Red de Open Finance.

Cumplimiento de gestión de consentimientos
Como parte de las regulaciones para la Red de Open Finance de Brasil, todos los individuos y empresas deben poder:

- Gestionar los consentimientos que han otorgado a las aplicaciones que acceden a sus datos personales.
- Gestionar los consentimientos que han otorgado a las aplicaciones que acceden a sus datos de pago.
- Ver las transacciones que han realizado utilizando el consentimiento de pago.


Por lo tanto, tu aplicación **debe** ofrecer opciones claras y fácilmente accesibles para que los usuarios accedan al My Belvo Portal. Esto se puede lograr enlazando directamente a la instancia de Belvo o integrando tu propia instancia personalizada.

## Confirmar Identidad

Antes de que los usuarios puedan acceder a su información de consentimiento, necesitarán confirmar su identidad autenticándose con una institución bancaria con la que tengan una cuenta.

### Iniciar Sesión

En la pantalla de **Iniciar Sesión**, el usuario necesita proporcionar su CPF (Individuos) o una combinación de CNPJ y CPF (Empresas). 

### Selección de Institución

En la pantalla de **Selección de Institución**, el usuario selecciona qué institución desea usar para autenticarse.

### Revisar Solicitud de Consentimiento de Autenticación

En la pantalla de **Consentimiento** de autenticación, el usuario puede revisar qué datos se utilizarán para autenticar (**Conferir resumo do consentimento**) así como por cuánto tiempo será válido el consentimiento (**Prazo de compartilhamento**). Por defecto, esto está configurado para un día y no puede ser cambiado por el usuario.

### Redirección y Confirmación

El usuario es entonces redirigido a su institución y una vez que otorgan su consentimiento en la institución, son redirigidos de vuelta al hosted widget. Ahora pueden acceder al My Belvo Portal haciendo clic en **Acessar Meu Portal Belvo**.

## Verificación de Consentimientos

Una vez en el MBP, el usuario puede verificar sus consentimientos de Open Finance haciendo clic en **Meus compartilhamentos**, seleccionando el consentimiento y luego viendo los detalles del mismo.

## Opciones de Hosting de MBP

En tu aplicación, puedes dirigir a tus usuarios a gestionar sus consentimientos de cualquiera de las siguientes maneras:

- Usando la instancia universal de MBP de Belvo. (**Recomendado**)
- Iniciando una instancia del MBP que solo mostrará los consentimientos que tus usuarios han dado a tu aplicación.


### MBP en el sitio web de Belvo

En el sitio web de Belvo, alojamos una instancia universal del MBP que cualquier usuario puede usar para gestionar sus consentimientos. Esta instancia consolida todos los consentimientos que han otorgado utilizando el producto OFDA de Belvo.

En tu aplicación, puedes dirigir a tus usuarios a la instancia universal del MBP de Belvo usando esta URL: `https://meuportal.belvo.com/`.

Si deseas que tus usuarios solo vean los consentimientos que han otorgado a tu aplicación, consulta vista de consentimiento personalizada de MBP.

### Vista de consentimiento personalizada de MBP

Puedes personalizar el MBP para mostrar solo los consentimientos que tu usuario ha otorgado a tu aplicación, facilitando así la gestión de sus consentimientos.

Para crear un MBP personalizado que solo muestre los consentimientos otorgados a tu aplicación:

1. Crea un `access_token` (Para individuos, necesitarás proporcionar sus detalles de CPF. Para empresas, se requieren tanto los detalles de CPF como de CNPJ).


Individual
```curl cURL Request
curl -X POST \
  https://sandbox.belvo.com/api/token/ \
  -H 'Content-Type: application/json' \
  -H 'Host: sandbox.belvo.com' \
  -d 'Ver ejemplo de payload abajo'
```

```json JSON Payload for Individual Users
{
  "id": "{{secretId}}",
  "password": "{{secretPassword}}",
  "scopes": "read_consents,write_consents,write_consent_callback",
  "widget": {
    "openfinance_feature": "consent_management",
    "consent": {
      "terms_and_conditions_url": "url_to_your_terms_and_conditions",
      "permissions": ["REGISTER", "ACCOUNTS", "CREDIT_CARDS", "CREDIT_OPERATIONS"],
      "identification_info": [
        {
          "type": "CPF",
          "number": "individual_cpf",
          "name": "individual_full_name"
        }
      ] 
    }
  }
}
```

Business
```curl cURL Request
curl -X POST \
  https://sandbox.belvo.com/api/token/ \
  -H 'Content-Type: application/json' \
  -H 'Host: sandbox.belvo.com' \
  -d 'Ver ejemplo de payload abajo'
```

```json JSON Payload for Business Users
{
  "id": "{{secretId}}",
  "password": "{{secretPassword}}",
  "scopes": "read_consents,write_consents,write_consent_callback",
  "widget": {
    "openfinance_feature": "consent_management",
    "consent": {
      "terms_and_conditions_url": "url_to_your_terms_and_conditions",
      "permissions": ["REGISTER", "ACCOUNTS", "CREDIT_CARDS", "CREDIT_OPERATIONS"],
      "identification_info": [
        {
          "type": "CPF",
          "number": "individual_cpf",
          "name": "individual_full_name"
        },
        {
          "type": "CNPJ",
          "number": "business_cnpj",
          "name": "business_name"
        }
      ]
    }
  }
}
```

1. Añade el `access_token` a la URL de MBP: ` https://meuportal.belvo.com/?access_token={accessToken}`.
2. Proporciona a tu usuario la URL generada.


❇️ ¡Hecho! Una vez que tu usuario inicie sesión en el MBP, podrá gestionar los consentimientos que ha otorgado a tu aplicación.

## Renovación de consentimiento con el MBP

El MBP también se puede utilizar para renovar un consentimiento expirado. Belvo te enviará un webhook cuando el consentimiento de uno de tus usuarios haya expirado. Un ejemplo de carga útil del webhook es el siguiente:

```json Ejemplo de Webhook de Consentimiento
{
  "webhook_id": "e6f08793f967445fb74ce16beae665bc",
  "webhook_type": "CONSENT",
  "webhook_code": "consent_expired",
  "link_id": "3d3364b7-0175-483d-a58b-b471f251e533",
  "external_id": null,
  "data": {
    "consent_id": "29a54e55-21f0-4d02-8e34-797ab7d43940",
    "action": "renew",
    "institution": "ofmockbank_br_retail",
    "institution_display_name": "OF Mockbank",
    "institution_icon_logo": "https://logo.com"
  }
}
```

| Campo | Descripción |
|  --- | --- |
| `link_id` | El ID del enlace asociado con el consentimiento. |
| `consent_id` | El ID del consentimiento. |
| `action` | Una indicación de la acción que necesitas realizar. Para los webhooks `consent_expired`, esto siempre se establece en `renew`. |
| `institution` | La institución para la cual el usuario proporcionó su consentimiento. |
| `institution_display_name` | El nombre para mostrar de la institución. |
| `institution_icon_logo` | La URL del logo de la institución. |


Después de recibir el webhook, puedes configurar el MBP en modo 'renovar consentimiento' creando una URL con la siguiente información:

```text URL de Ejemplo
https://meuportal.belvo.com/
 ?access_token={accessToken}
 &link_id={webhook_link_id}
 &consent_id={webhook_consent_id}
 &institution={webhook_institution}
 &institution_display_name={the_display_name_url_encoded}
 &institution_icon_logo={url_to_icon}
 &action=renew
```

| Campo de Consulta  | Descripción | Ejemplo |
|  --- | --- | --- |
| `access_token` | Un `access_token` recién generado para el MBP. Para instrucciones sobre cómo crear un `access_token` para el MBP, consulta la sección vista de consentimiento personalizada del MBP. | N/A |
| `link_id` | El `link_id` que recibiste en el evento del webhook `consent_expired`. | `link_id=6b94a043-9a96-4dd3-b889-30f4dcbd9608` |
| `consent_id` | El `consent_id` que recibiste en el evento del webhook `consent_expired` (ubicado en el objeto `data`). | `consent_id=2c63f6a0-22ea-4edf-a15c-9c1c2f92a20d` |
| `institution` | La `institution` que recibiste en el evento del webhook `consent_expired` (ubicado en el objeto `data`). | `institution=ofc_mockbank_br` |
| `institution_display_name` | El `institution_display_name` (codificado en URL) que recibiste en el evento del webhook `consent_expired` (ubicado en el objeto `data`). | `institution_display_name=OF%20Mockbank` |
| `institution_icon_logo` | La URL del `institution_icon_logo` que recibiste en el evento del webhook `consent_expired` (ubicado en el objeto `data`). | `institution_icon_logo=https://logo.com` |
| `action` | La `action` en el evento del webhook `consent_expired` (ubicado en el objeto `data`). Para los webhooks `consent_expired`, esta acción siempre será `renew`. | `action=renew` |


Dirigir a tus usuarios a esta URL los guiará automáticamente a través del proceso de renovación del consentimiento.