# Make

> Pagamenti in qualsiasi scenario Make: trigger istantanei per fatture pagate, rimborsi, abbonamenti e clienti; moduli che creano e cercano fatture e link di pagamento.

L’app Perly Pay porta i tuoi pagamenti in Make. Una fattura pagata può riempire un foglio, aggiornare un CRM o dare un ruolo su Discord; un modulo web può creare una fattura e inviare il checkout. Niente da ospitare, niente codice.

> **Nota:** Una chiave di test e una live sono due connessioni. Uno scenario con la connessione di test vede solo pagamenti di test.

## Collegare

1. **Prendi una chiave** — In Perly Pay: Dashboard → Developers → API keys. `sk_test_…` per la [modalità test](https://pay.perly.io/docs/test-mode.md), `sk_live_…` per il denaro reale.
2. **Aggiungi Perly Pay a uno scenario** — L’app è in arrivo nell’elenco delle app di Make. Finché non compare, [scrivici](https://pay.perly.io/it/contact) per avere il link d’invito; aprilo una volta, poi cerca **Perly Pay** quando aggiungi un modulo.
3. **Collega** — **Add** una connessione e incolla la chiave. Dalle un nome che distingua quella di test da quella live.

## Trigger istantanei

| Modulo | Quando | Evento |
| --- | --- | --- |
| Watch paid invoices | Pagata per intero, mittente controllato. È il momento di dare l’accesso o spedire l’ordine. | `invoice.fulfilled` |
| Watch underpaid invoices | L’acquirente ha inviato meno di quanto chiede la fattura. | `invoice.underpaid` |
| Watch opened refunds | Hai aperto un [rimborso](https://pay.perly.io/docs/refunds.md). | `refund.requested` |
| Watch confirmed refunds | Un rimborso che hai inviato è stato confermato in rete. | `refund.confirmed` |
| Watch started subscriptions | È iniziato un [abbonamento](https://pay.perly.io/docs/subscriptions.md). | `subscription.created` |
| Watch renewed subscriptions | Un abbonato ha pagato il periodo successivo. | `subscription.renewed` |
| Watch ended subscriptions | Un abbonamento è terminato. È il momento di togliere l’accesso. | `subscription.ended` |
| Watch new customers | Un nuovo acquirente. | `customer.created` |

Quando aggiungi il webhook di un trigger in Make, in Dashboard → Developers → Webhooks compare un webhook come **Make: Paid invoices**; quando lo elimini in Make, sparisce. Prima che lo scenario parta, Make ritira ogni consegna da Perly Pay con la tua chiave, e Perly Pay la consegna una sola volta: una richiesta che non viene da Perly Pay, o inviata di nuovo, non avvia nulla. Ogni webhook è uno dei 16 che una modalità può avere.

Ogni trigger consegna l’evento e l’oggetto a cui si riferisce (fattura, rimborso, abbonamento o cliente) così come li ha l’[API](https://pay.perly.io/docs/api.md). Gli importi in valuta fiat sono in centesimi (`total` 4900 è 49.00): dividi per 100 nella mappatura. Gli importi in crypto sono nell’unità più piccola della moneta, con i suoi `decimals` accanto.

## Moduli

| Modulo | Cosa dai | Cosa ottieni |
| --- | --- | --- |
| Create an invoice | Un importo (come 49.00), una descrizione; se vuoi, valuta, email del cliente, indirizzo di ritorno, metadati | Una fattura con il suo checkout (**Payment page URL**) per l’acquirente |
| Create a payment link | Un prezzo, oppure nome e importo di un nuovo prodotto | Una pagina che lo vende: condividila dove vuoi |
| Get an invoice | L’id della fattura | Il suo stato, cosa è arrivato, il checkout |
| Search customers | Un’email, o niente per tutti | Clienti, i più recenti per primi |
| Make an API call | Un percorso come `/invoices`, un metodo e un corpo JSON se serve | La risposta dell’API così com’è, per ciò che gli altri moduli non fanno |

## Ricette

### Pagamento → riga in Google Sheets

1. **Trigger** — Perly Pay → **Watch paid invoices**. Aggiungi un webhook; avvia lo scenario una volta e paga una fattura di test perché Make impari i campi.
2. **Azione** — Google Sheets → **Add a Row**, su un foglio con colonne come Data, Email, Importo, Moneta.
3. **Mappa** — Data → Invoice: Paid at, Email → Customer email, Importo → `Total (cents) / 100`, Moneta → Payment: Coin. Attivalo.

### Pagamento → ruolo su Discord

Discord deve sapere chi ha pagato. Metti l’id Discord dell’acquirente sulla fattura quando la crei e rileggilo quando viene pagata.

1. **Scenario 1: la fattura** — Trigger: il tuo modulo di iscrizione con email e id Discord. Perly Pay → **Create an invoice**, chiave dei metadati `discord_user_id`, valore: la risposta del modulo. Poi manda all’acquirente la **Payment page URL**.
2. **Scenario 2: il ruolo** — Perly Pay → **Watch paid invoices**. Discord → **Add a Role to a Member** (o **Make an API call** a Discord): il tuo server, il ruolo, e il membro = Invoice: Metadata → `discord_user_id`.
3. **Togli il ruolo** — Per un abbonamento, **Watch ended subscriptions** toglie il ruolo allo stesso modo.

## Provalo

Con la connessione di test, crea una fattura (con il modulo o nella dashboard) e pagala con monete di test oppure via API con l’id della fattura:

```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 '{}'
```

In pochi secondi lo scenario parte. La sua History mostra ogni esecuzione e cosa è arrivato.

## Pagamenti reali

- Attiva la modalità live in Perly Pay e collega le chiavi pubbliche del tuo wallet.
- Aggiungi una connessione con una chiave `sk_live_…`. In ogni scenario, aggiungi su di essa un nuovo webhook per il trigger e passa a essa gli altri moduli Perly Pay.
- Paga una piccola fattura reale e guarda come arriva.
