# Make

> Les paiements dans n’importe quel scénario Make : déclencheurs instantanés pour factures payées, remboursements, abonnements et clients ; modules pour créer factures et liens de paiement, et pour les retrouver.

L’app Perly Pay amène vos paiements dans Make. Une facture payée peut remplir un tableur, mettre à jour un CRM ou donner un rôle Discord ; un formulaire peut créer une facture et envoyer sa page de paiement. Rien à héberger, aucun code.

> **Note:** Une clé de test et une clé réelle font deux connexions. Un scénario sur une connexion de test ne voit que des paiements de test.

## Connexion

1. **Prenez une clé** — Dans Perly Pay : Dashboard → Developers → API keys. `sk_test_…` pour le [mode test](https://pay.perly.io/docs/test-mode.md), `sk_live_…` pour l’argent réel.
2. **Ajoutez Perly Pay à un scénario** — L’app est en route vers la liste des apps de Make. D’ici là, [écrivez-nous](https://pay.perly.io/fr/contact) pour obtenir son lien d’invitation ; ouvrez-le une fois, puis cherchez **Perly Pay** quand vous ajoutez un module.
3. **Connectez** — **Add** une connexion et collez la clé. Nommez-la de façon à distinguer test et réel.

## Déclencheurs instantanés

| Module | Quand | Événement |
| --- | --- | --- |
| Watch paid invoices | Payé en entier et l’expéditeur contrôlé. Le moment de donner l’accès ou d’expédier. | `invoice.fulfilled` |
| Watch underpaid invoices | L’acheteur a envoyé moins que ce que demande la facture. | `invoice.underpaid` |
| Watch opened refunds | Vous avez ouvert un [remboursement](https://pay.perly.io/docs/refunds.md). | `refund.requested` |
| Watch confirmed refunds | Le remboursement envoyé est confirmé sur la chaîne. | `refund.confirmed` |
| Watch started subscriptions | Un [abonnement](https://pay.perly.io/docs/subscriptions.md) commence. | `subscription.created` |
| Watch renewed subscriptions | Un abonné a payé la période suivante. | `subscription.renewed` |
| Watch ended subscriptions | Il est terminé. Le moment de retirer l’accès. | `subscription.ended` |
| Watch new customers | Un nouvel acheteur. | `customer.created` |

Ajouter le webhook d’un déclencheur dans Make en ajoute un dans Dashboard → Developers → Webhooks, nommé par exemple **Make: Paid invoices** ; le supprimer dans Make le retire. Make récupère chaque livraison auprès de Perly Pay avec votre clé avant que le scénario tourne, et Perly Pay ne la remet qu’une fois : une requête qui ne vient pas de Perly Pay, ou envoyée à nouveau, ne déclenche rien. Chaque webhook compte parmi les 16 qu’un mode peut avoir.

Chaque déclencheur fournit l’événement et l’objet concerné — facture, remboursement, abonnement ou client — tel que l’[API](https://pay.perly.io/docs/api.md) le présente. Les montants en devise sont en centimes (`total` 4900 vaut 49,00) : divisez par 100 dans le mappage. Les montants en monnaie crypto sont dans la plus petite unité de la monnaie, avec ses `decimals`.

## Modules

| Module | À fournir | Vous obtenez |
| --- | --- | --- |
| Create an invoice | Montant (comme 49.00), description ; en option devise, e-mail du client, URL de retour, métadonnées | La facture, avec sa page de paiement (**Payment page URL**) à envoyer à l’acheteur |
| Create a payment link | Un prix, ou le nom et le montant d’un nouveau produit | Une page qui le vend, à partager partout |
| Get an invoice | Un ID de facture | Son statut, ce qui est arrivé, sa page de paiement |
| Search customers | Un e-mail, ou rien pour tous | Les clients, du plus récent au plus ancien |
| Make an API call | Un chemin comme `/invoices`, une méthode et un corps JSON si besoin | La réponse de l’API telle quelle, pour ce que les autres modules ne font pas |

## Recettes

### Paiement → ligne dans Google Sheets

1. **Déclencheur** — Perly Pay → **Watch paid invoices**. Ajoutez le webhook ; lancez le scénario une fois et payez une facture de test pour que Make apprenne les champs.
2. **Action** — Google Sheets → **Add a Row**, dans un tableur avec des colonnes comme Date, E-mail, Montant, Monnaie.
3. **Mappage** — Date → Invoice: Paid at, E-mail → Customer email, Montant → `Total (cents) / 100`, Monnaie → Payment: Coin. Activez.

### Paiement → rôle Discord

Discord doit savoir qui a payé. Mettez l’id utilisateur Discord de l’acheteur sur la facture quand vous la créez, et relisez-le quand elle est payée.

1. **Scénario 1 : la facture** — Déclencheur : votre formulaire d’inscription qui demande l’e-mail et l’id utilisateur Discord. Perly Pay → **Create an invoice**, clé de métadonnée `discord_user_id`, valeur la réponse du formulaire. Puis envoyez à l’acheteur la **Payment page URL** par e-mail.
2. **Scénario 2 : le rôle** — Perly Pay → **Watch paid invoices**. Discord → **Add a Role to a Member** (ou **Make an API call** vers Discord) : votre serveur, le rôle, et le membre = Invoice: Metadata → `discord_user_id`.
3. **Retirez-le** — Pour un abonnement, **Watch ended subscriptions** retire le rôle de la même façon.

## Test

Avec une connexion de test, créez une facture (par le module ou dans le tableau de bord) et payez-la avec des monnaies de test, ou depuis l’API avec l’id de la facture :

```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 quelques secondes, le scénario tourne. Son History montre chaque exécution et ce qui est arrivé.

## Passer en réel

- Activez le mode réel dans Perly Pay et connectez les clés publiques de votre portefeuille.
- Ajoutez une connexion avec une clé `sk_live_…`. Dans chaque scénario, ajoutez-y un nouveau webhook pour le déclencheur, et basculez-y les autres modules Perly Pay.
- Payez une petite facture réelle et regardez-la arriver.
