> ## 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.

# Parceiros no Payments BTG

> Restrinja a credencial de Payments de um parceiro a uma organização da Midaz, informe a organização em cada requisição e entenda as recusas que ele recebe.

Um [parceiro](https://docs.lerian.studio/pt/platform/access-manager/features/partners/overview) pode chamar o plugin Payments com a sua própria credencial. Você restringe essa credencial a uma organização da Midaz. Isso é necessário quando um deploy de Payments atende várias organizações, ou quando um dos seus próprios clientes emite boletos e paga contas por conta própria.

Todo parceiro de Payments precisa de um escopo.

## Passo a passo

***

**1. Escolha a organização em que o parceiro atua**

O Payments tem uma restrição:

| Restrição | Campo da API | O que o parceiro alcança | O que é recusado |
| - | - | - | - |
| **Organização da Midaz** | `organizationId` | Os boletos, as parcelas e os pagamentos de contas da organização, e os dois dashboards dela. | Todas as outras organizações, as rotas administrativas e o cancelamento de um pagamento (veja [Rotas que nenhum parceiro alcança](#routes-that-no-partner-reaches)). |

A restrição aceita uma organização. Mais de um valor é recusado com `400` e `IDE-0002`.

O ledger e as contas não são uma restrição do Payments. Veja [O escopo do parceiro na Midaz não vale para o Payments](#the-partners-midaz-scope-does-not-apply-to-payments).

**2. Dê ao parceiro as permissões e o escopo**

Crie o parceiro, ou altere-o, no [Console](https://docs.lerian.studio/pt/platform/access-manager/features/partners/console.md) ou com a [API de Identity](https://docs.lerian.studio/pt/platform/access-manager/features/partners/api.md). O slug do produto é `plugin-br-payments`.

* Adicione a entrada de escopo com a organização. Sem ela, o Access Manager recusa o parceiro com `400` e `IDE-1060`.
* Confira os recursos e as ações. O máximo que você pode dar é o que o papel `editor` do Payments tem no seu tenant. Acima disso, o Access Manager recusa com `IDE-1043`.

Você pode dar a um parceiro estas ações: `read`, `create` e `cancel` no recurso `boletos`; `read` e `create` no recurso `payments`; e `read` no recurso `dashboard`.

O recurso `admin` age sobre o tenant inteiro. O Access Manager recusa toda ação de `admin` com `400` e `IDE-1056`, e o Console marca a linha como **Fora do escopo**.

**3. Crie a aplicação de Payments**

Crie a aplicação do parceiro com o produto `plugin-br-payments`. Veja [Crie as aplicações do parceiro](https://docs.lerian.studio/pt/platform/access-manager/features/partners/api.md#create-the-partners-applications) no guia da API, ou [no Console](https://docs.lerian.studio/pt/platform/access-manager/features/partners/console.md#create-the-partners-applications). Envie o client ID e o client secret ao parceiro por um canal seguro.

**4. Informe a organização em cada requisição**

Toda requisição informa a organização no cabeçalho `X-Organization-Id`, que o Payments já exige nestas rotas. O valor precisa ser a organização do escopo do parceiro. Uma requisição sem ele é recusada.

| Rotas | O que o parceiro faz |
| - | - |
| Boletos: `/v1/boletos`, `/v1/boletos/{id}`, `/v1/boletos/{id}/pdf`, `/v1/boletos/{id}/cancel` | Emite, lista, lê, baixa o PDF e cancela um boleto. |
| Lotes: `/v1/boletos/batches`, `/v1/boletos/batches/{batch_id}`, `/v1/boletos/batches/{batch_id}/cancel` | Emite, lista, lê e cancela um lote de boletos. |
| Parcelas: `/v1/boletos/installments`, `/v1/boletos/installments/{series_id}` | Emite e lê uma série de parcelas. |
| Pagamentos de contas: `/v1/payments`, `/v1/payments/{id}`, `/v1/payments/darf`, `/v1/payments/consult` | Consulta uma conta, a paga, paga um DARF, lista pagamentos e lê um. |
| Dashboards: `/v1/dashboards/boletos`, `/v1/dashboards/payments` | Lê os dashboards. |

Um boleto, lote, série ou pagamento de outra organização responde `404`, a mesma resposta de um ID que não existe: informe a organização a que o item pertence.

**5. Confirme que funciona**

Use a credencial do parceiro. Liste os boletos da organização do escopo do parceiro. A resposta é `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"
```

Envie a mesma requisição sem o cabeçalho, ou com outra organização. A resposta é `403` com `PBP-0004`.

## O escopo do parceiro na Midaz não vale para o Payments

***

O Payments lança na Midaz com a sua própria credencial de máquina, não com o token do parceiro. Um escopo da Midaz que você dá ao parceiro não vale para esses lançamentos. O parceiro pode usar todos os ledgers e contas da sua organização que o Payments aceita.

## Rotas que nenhum parceiro alcança

***

Um parceiro é recusado com `403` e `PBP-0004` nestas rotas:

* Toda rota sob `/v1/admin`.
* `POST /v1/payments/{id}/cancel`.

As rotas administrativas configuram a integração do seu tenant inteiro. Use uma aplicação da sua própria instituição para elas e para o cancelamento de um pagamento.

## Se algo falhar

***

| Código | Status | O que significa | O que fazer |
| - | - | - | - |
| `PBP-0004` | 403 | A requisição não informa organização ou informa uma fora do escopo do parceiro, ou está fora das permissões do parceiro. | Envie `X-Organization-Id` com a organização do escopo do parceiro. Confira também as permissões do parceiro. |
| `PBP-0003` | 401 | O parceiro está suspenso, ou a requisição está fora do seu período de validade. | Reative o parceiro, ou altere o seu período de validade. |
| `PBP-0005` | 404 | O item não pertence à organização que a requisição informa, ou não existe. Nada é lido ou alterado. | Confira o ID e a organização. |

O `PBP-0004` não diz se foram as permissões ou o escopo que recusaram a requisição. Isso é intencional: um parceiro não consegue usar uma recusa para descobrir quais organizações existem fora do seu escopo.

Para as recusas ao criar ou alterar um parceiro, veja [Códigos de erro](https://docs.lerian.studio/pt/platform/access-manager/features/partners/api.md#error-codes) no guia da API.

Em um deploy BYOC, o Access Manager só sabe que o Payments aceita parceiros depois que o Payments publica a sua declaração de permissões. Veja [Declaração de permissões](https://docs.lerian.studio/pt/interfaces/payments-btg/boleto-environment-variables.md#permission-declaration).


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