# Make

> Pagos en cualquier escenario de Make: disparadores instantáneos para facturas pagadas, reembolsos, suscripciones y clientes; módulos que crean y buscan facturas y enlaces de pago.

La app de Perly Pay lleva tus pagos a Make. Una factura pagada puede rellenar una hoja, actualizar un CRM o dar un rol en Discord; un formulario puede crear una factura y enviar la página de pago. No hay nada que alojar ni código.

> **Nota:** Una clave de prueba y una real son dos conexiones. Un escenario con la conexión de prueba solo ve pagos de prueba.

## Conectar

1. **Obtén una clave** — En Perly Pay: Dashboard → Developers → API keys. `sk_test_…` para el [modo de prueba](https://pay.perly.io/docs/test-mode.md), `sk_live_…` para dinero real.
2. **Añade Perly Pay a un escenario** — La app está en camino a la lista de apps de Make. Mientras no aparezca, [escríbenos](https://pay.perly.io/es/contact) para pedir el enlace de invitación; ábrelo una vez y luego busca **Perly Pay** al añadir un módulo.
3. **Conecta** — **Add** una conexión y pega la clave. Ponle un nombre que distinga la de prueba de la real.

## Disparadores instantáneos

| Módulo | Cuándo | Evento |
| --- | --- | --- |
| Watch paid invoices | Pagada por completo, remitente revisado. Es momento de dar acceso o enviar el pedido. | `invoice.fulfilled` |
| Watch underpaid invoices | El comprador envió menos de lo que pide la factura. | `invoice.underpaid` |
| Watch opened refunds | Abriste un [reembolso](https://pay.perly.io/docs/refunds.md). | `refund.requested` |
| Watch confirmed refunds | Un reembolso que enviaste se confirmó en la red. | `refund.confirmed` |
| Watch started subscriptions | Empezó una [suscripción](https://pay.perly.io/docs/subscriptions.md). | `subscription.created` |
| Watch renewed subscriptions | Un suscriptor pagó el siguiente periodo. | `subscription.renewed` |
| Watch ended subscriptions | Una suscripción terminó. Es momento de quitar el acceso. | `subscription.ended` |
| Watch new customers | Un comprador nuevo. | `customer.created` |

Cuando añades el webhook de un disparador en Make, aparece en Dashboard → Developers → Webhooks un webhook como **Make: Paid invoices**; cuando lo borras en Make, desaparece. Antes de que el escenario se ejecute, Make recoge cada entrega en Perly Pay con tu clave, y Perly Pay entrega cada una una sola vez: una solicitud que no venga de Perly Pay, o que se envíe otra vez, no ejecuta nada. Cada webhook es uno de los 16 que puede tener un modo.

Cada disparador entrega el evento y el objeto al que se refiere (factura, reembolso, suscripción o cliente) tal como los tiene la [API](https://pay.perly.io/docs/api.md). Los importes en moneda fiat van en centavos (`total` 4900 es 49.00): divide entre 100 en el mapeo. Los importes en monedas cripto van en la unidad más pequeña de la moneda, con sus `decimals` al lado.

## Módulos

| Módulo | Qué das | Qué obtienes |
| --- | --- | --- |
| Create an invoice | Un importe (como 49.00), una descripción; si quieres, moneda, correo del cliente, dirección de retorno, metadatos | Una factura con su página de pago (**Payment page URL**) para el comprador |
| Create a payment link | Un precio, o el nombre y el importe de un producto nuevo | Una página que lo vende: compártela donde quieras |
| Get an invoice | El id de la factura | Su estado, lo que llegó, la página de pago |
| Search customers | Un correo, o nada para todos | Clientes, los más nuevos primero |
| Make an API call | Una ruta como `/invoices`, un método y un cuerpo JSON si hace falta | La respuesta de la API tal cual, para lo que no hacen los otros módulos |

## Recetas

### Pago → fila en Google Sheets

1. **Disparador** — Perly Pay → **Watch paid invoices**. Añade un webhook; ejecuta el escenario una vez y paga una factura de prueba para que Make aprenda los campos.
2. **Acción** — Google Sheets → **Add a Row**, en una hoja con columnas como Fecha, Correo, Importe, Moneda.
3. **Mapea** — Fecha → Invoice: Paid at, Correo → Customer email, Importe → `Total (cents) / 100`, Moneda → Payment: Coin. Actívalo.

### Pago → rol en Discord

Discord tiene que saber quién pagó. Pon el id de Discord del comprador en la factura al crearla y léelo de vuelta cuando se pague.

1. **Escenario 1: la factura** — Disparador: tu formulario de registro con correo e id de Discord. Perly Pay → **Create an invoice**, clave de metadatos `discord_user_id`, valor: la respuesta del formulario. Luego envía al comprador la **Payment page URL**.
2. **Escenario 2: el rol** — Perly Pay → **Watch paid invoices**. Discord → **Add a Role to a Member** (o **Make an API call** a Discord): tu servidor, el rol, y el miembro = Invoice: Metadata → `discord_user_id`.
3. **Quita el rol** — Para una suscripción, **Watch ended subscriptions** quita el rol de la misma forma.

## Pruébalo

Con la conexión de prueba, crea una factura (con el módulo o en el panel) y págala con monedas de prueba o por la API con el id de la factura:

```bash
curl -X POST https://pay.perly.io/api/v1/invoices/inv_…/simulate \
  -H "Authorization: Bearer $PERLY_PAY_SECRET_KEY" -H "Content-Type: application/json" -d '{}'
```

En unos segundos se ejecuta el escenario. Su History muestra cada ejecución y lo que llegó.

## Pagos reales

- Activa el modo real en Perly Pay y conecta las claves públicas de tu billetera.
- Añade una conexión con una clave `sk_live_…`. En cada escenario, añade en ella un webhook nuevo para el disparador y cambia a ella los demás módulos de Perly Pay.
- Paga una factura real pequeña y mira cómo llega.
