> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Socios en Payments BTG

> Restringe la credencial de Payments de un socio a una organización de Midaz, indica la organización en cada solicitud y entiende los rechazos que recibe.

Un [socio](https://docs.lerian.studio/es/platform/access-manager/features/partners/overview) puede llamar al plugin Payments con su propia credencial. Restringes esa credencial a una organización de Midaz. Lo necesitas cuando un despliegue de Payments atiende varias organizaciones, o cuando uno de tus propios clientes emite boletos y paga cuentas por sí mismo.

Todo socio de Payments necesita un alcance.

## Paso a paso

***

**1. Elige la organización en la que actúa el socio**

Payments tiene una restricción:

| Restricción | Campo de la API | Lo que alcanza el socio | Lo que se rechaza |
| - | - | - | - |
| **Organización de Midaz** | `organizationId` | Los boletos, las cuotas y los pagos de cuentas de la organización, y sus dos dashboards. | Todas las demás organizaciones, las rutas administrativas y la cancelación de un pago (consulta [Rutas que ningún socio alcanza](#routes-that-no-partner-reaches)). |

La restricción acepta una organización. Más de un valor se rechaza con `400` e `IDE-0002`.

El ledger y las cuentas no son una restricción de Payments. Consulta [El alcance del socio en Midaz no vale para Payments](#the-partners-midaz-scope-does-not-apply-to-payments).

**2. Da al socio sus permisos y su alcance**

Crea el socio, o modifícalo, en la [Consola](https://docs.lerian.studio/es/platform/access-manager/features/partners/console.md) o con la [API de Identity](https://docs.lerian.studio/es/platform/access-manager/features/partners/api.md). El slug del producto es `plugin-br-payments`.

* Agrega la entrada de alcance con la organización. Sin ella, Access Manager rechaza el socio con `400` e `IDE-1060`.
* Revisa los recursos y las acciones. Lo máximo que puedes dar es lo que tiene el rol `editor` de Payments en tu tenant. Por encima de eso, Access Manager rechaza con `IDE-1043`.

Puedes dar a un socio estas acciones: `read`, `create` y `cancel` sobre el recurso `boletos`; `read` y `create` sobre el recurso `payments`; y `read` sobre el recurso `dashboard`.

El recurso `admin` actúa sobre todo el tenant. Access Manager rechaza toda acción de `admin` con `400` e `IDE-1056`, y la Consola marca la línea como **Fuera del alcance**.

**3. Crea su aplicación de Payments**

Crea la aplicación del socio con el producto `plugin-br-payments`. Consulta [Crea las aplicaciones del socio](https://docs.lerian.studio/es/platform/access-manager/features/partners/api.md#create-the-partners-applications) en la guía de la API, o [en la Consola](https://docs.lerian.studio/es/platform/access-manager/features/partners/console.md#create-the-partners-applications). Envía el client ID y el client secret al socio por un canal seguro.

**4. Indica la organización en cada solicitud**

Toda solicitud indica la organización en el encabezado `X-Organization-Id`, que Payments ya exige en estas rutas. El valor debe ser la organización del alcance del socio. Una solicitud sin él se rechaza.

| Rutas | Lo que hace el socio |
| - | - |
| Boletos: `/v1/boletos`, `/v1/boletos/{id}`, `/v1/boletos/{id}/pdf`, `/v1/boletos/{id}/cancel` | Emite, lista, lee, descarga el PDF y cancela un boleto. |
| Lotes: `/v1/boletos/batches`, `/v1/boletos/batches/{batch_id}`, `/v1/boletos/batches/{batch_id}/cancel` | Emite, lista, lee y cancela un lote de boletos. |
| Cuotas: `/v1/boletos/installments`, `/v1/boletos/installments/{series_id}` | Emite y lee una serie de cuotas. |
| Pagos de cuentas: `/v1/payments`, `/v1/payments/{id}`, `/v1/payments/darf`, `/v1/payments/consult` | Consulta una cuenta, la paga, paga un DARF, lista pagos y lee uno. |
| Dashboards: `/v1/dashboards/boletos`, `/v1/dashboards/payments` | Lee los dashboards. |

Un boleto, lote, serie o pago de otra organización responde `404`, la misma respuesta que un ID que no existe: indica la organización a la que pertenece el elemento.

**5. Confirma que funciona**

Usa la credencial del socio. Lista los boletos de la organización del alcance del socio. La respuesta es `200`:

```bash theme={null}
PAYMENTS_BASE_URL="https://payments.<your-domain>"       # your Payments base URL
PAYMENTS_BEARER_TOKEN="paste-the-partner-access-token-here"
OWN_ORGANIZATION_ID="paste-the-organization-in-the-scope"

curl -s -o /dev/null -w '%{http_code}\n' \
  -H "Authorization: Bearer ${PAYMENTS_BEARER_TOKEN}" \
  -H "X-Organization-Id: ${OWN_ORGANIZATION_ID}" \
  "${PAYMENTS_BASE_URL}/v1/boletos"
```

Envía la misma solicitud sin el encabezado, o con otra organización. La respuesta es `403` con `PBP-0004`.

## El alcance del socio en Midaz no vale para Payments

***

Payments hace los asientos en Midaz con su propia credencial de máquina, no con el token del socio. Un alcance de Midaz que das al socio no vale para esos asientos. El socio puede usar todos los ledgers y cuentas de su organización que Payments acepta.

## Rutas que ningún socio alcanza

***

A un socio se le rechaza con `403` y `PBP-0004` en estas rutas:

* Toda ruta bajo `/v1/admin`.
* `POST /v1/payments/{id}/cancel`.

Las rutas administrativas configuran la integración de todo tu tenant. Usa una aplicación de tu propia institución para ellas y para la cancelación de un pago.

## Si algo falla

***

| Código | Estado | Qué significa | Qué hacer |
| - | - | - | - |
| `PBP-0004` | 403 | La solicitud no indica organización o indica una fuera del alcance del socio, o está fuera de los permisos del socio. | Envía `X-Organization-Id` con la organización del alcance del socio. Revisa también los permisos del socio. |
| `PBP-0003` | 401 | El socio está suspendido, o la solicitud está fuera de su período de validez. | Reactiva el socio, o cambia su período de validez. |
| `PBP-0005` | 404 | El elemento no pertenece a la organización que indica la solicitud, o no existe. No se lee ni se cambia nada. | Revisa el ID y la organización. |

`PBP-0004` no dice si fueron los permisos o el alcance los que rechazaron la solicitud. Es intencional: un socio no puede usar un rechazo para saber qué organizaciones existen fuera de su alcance.

Para los rechazos al crear o cambiar un socio, consulta [Códigos de error](https://docs.lerian.studio/es/platform/access-manager/features/partners/api.md#error-codes) en la guía de la API.

En un despliegue BYOC, Access Manager sabe que Payments acepta socios solo después de que Payments publica su declaración de permisos. Consulta [Declaración de permisos](https://docs.lerian.studio/es/interfaces/payments-btg/boleto-environment-variables.md#permission-declaration).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.