# Make

> Płatności w dowolnym scenariuszu Make: natychmiastowe wyzwalacze dla opłaconych faktur, zwrotów, subskrypcji i klientów; moduły, które tworzą faktury i linki do płatności oraz je wyszukują.

Aplikacja Perly Pay przenosi Twoje płatności do Make. Opłacona faktura może wypełnić arkusz, zaktualizować CRM albo nadać rolę na Discordzie; formularz może utworzyć fakturę i wysłać stronę płatności. Niczego nie trzeba hostować, nie ma kodu.

> **Uwaga:** Klucz testowy i produkcyjny to dwa połączenia. Scenariusz na połączeniu testowym widzi tylko płatności testowe.

## Połączenie

1. **Weź klucz** — W Perly Pay: Dashboard → Developers → API keys. `sk_test_…` dla [trybu testowego](https://pay.perly.io/docs/test-mode.md), `sk_live_…` dla prawdziwych pieniędzy.
2. **Dodaj Perly Pay do scenariusza** — Aplikacja jest już w drodze na listę aplikacji Make. Dopóki jej tam nie ma, [napisz do nas](https://pay.perly.io/pl/contact) po link z zaproszeniem; otwórz go raz, potem znajdź **Perly Pay**, gdy dodajesz moduł.
3. **Połącz** — **Add** połączenie i wklej klucz. Nazwij je tak, by odróżnić testowe od produkcyjnego.

## Natychmiastowe wyzwalacze

| Moduł | Kiedy | Zdarzenie |
| --- | --- | --- |
| Watch paid invoices | Opłacona w całości, nadawca sprawdzony. Czas dać dostęp lub wysłać towar. | `invoice.fulfilled` |
| Watch underpaid invoices | Kupujący wysłał mniej, niż wymaga faktura. | `invoice.underpaid` |
| Watch opened refunds | Otworzyłeś [zwrot](https://pay.perly.io/docs/refunds.md). | `refund.requested` |
| Watch confirmed refunds | Wysłany przez Ciebie zwrot został potwierdzony w sieci. | `refund.confirmed` |
| Watch started subscriptions | Zaczęła się [subskrypcja](https://pay.perly.io/docs/subscriptions.md). | `subscription.created` |
| Watch renewed subscriptions | Subskrybent opłacił następny okres. | `subscription.renewed` |
| Watch ended subscriptions | Subskrypcja się skończyła. Czas odebrać dostęp. | `subscription.ended` |
| Watch new customers | Nowy kupujący. | `customer.created` |

Gdy dodajesz webhook wyzwalacza w Make, w Dashboard → Developers → Webhooks pojawia się webhook w rodzaju **Make: Paid invoices**; gdy usuwasz go w Make — znika. Zanim scenariusz się uruchomi, Make odbiera każdą dostawę z Perly Pay Twoim kluczem, a Perly Pay wydaje każdą tylko raz: żądanie nie od Perly Pay albo wysłane ponownie niczego nie uruchamia. Każdy webhook to jeden z 16, które może mieć tryb.

Każdy wyzwalacz oddaje zdarzenie i obiekt, którego dotyczy — fakturę, zwrot, subskrypcję lub klienta — tak, jak ma je [API](https://pay.perly.io/docs/api.md). Kwoty w walucie są w centach (`total` 4900 to 49.00): podziel przez 100 w mapowaniu. Kwoty w monetach są w najmniejszych jednostkach monety, obok jej `decimals`.

## Moduły

| Moduł | Co podać | Co dostaniesz |
| --- | --- | --- |
| Create an invoice | Kwotę (np. 49.00), opis; opcjonalnie walutę, e-mail klienta, adres powrotu, metadane | Fakturę ze stroną płatności (**Payment page URL**) dla kupującego |
| Create a payment link | Cenę albo nazwę i kwotę nowego produktu | Stronę, która go sprzedaje — udostępniaj gdziekolwiek |
| Get an invoice | Identyfikator faktury | Jej stan, co dotarło, stronę płatności |
| Search customers | E-mail albo nic — dla wszystkich | Klientów, najnowsi pierwsi |
| Make an API call | Ścieżka jak `/invoices`, metoda i treść JSON, jeśli trzeba | Odpowiedź API taka, jaka jest, do wszystkiego, czego nie robią inne moduły |

## Przepisy

### Płatność → wiersz w Google Sheets

1. **Wyzwalacz** — Perly Pay → **Watch paid invoices**. Dodaj webhook; uruchom scenariusz raz i opłać fakturę testową, żeby Make poznał pola.
2. **Akcja** — Google Sheets → **Add a Row**, w arkuszu z kolumnami w rodzaju Data, E-mail, Kwota, Moneta.
3. **Zmapuj** — Data → Invoice: Paid at, E-mail → Customer email, Kwota → `Total (cents) / 100`, Moneta → Payment: Coin. Włącz.

### Płatność → rola na Discordzie

Discord musi wiedzieć, kto zapłacił. Umieść identyfikator Discord kupującego w fakturze, gdy ją tworzysz, i odczytaj go z powrotem, gdy faktura zostanie opłacona.

1. **Scenariusz 1: faktura** — Wyzwalacz: Twój formularz rejestracji z e-mailem i identyfikatorem Discord. Perly Pay → **Create an invoice**, klucz metadanych `discord_user_id`, wartość — odpowiedź z formularza. Potem wyślij kupującemu **Payment page URL**.
2. **Scenariusz 2: rola** — Perly Pay → **Watch paid invoices**. Discord → **Add a Role to a Member** (albo **Make an API call** do Discorda): Twój serwer, rola, a członek = Invoice: Metadata → `discord_user_id`.
3. **Odbierz rolę** — Dla subskrypcji **Watch ended subscriptions** tak samo zdejmuje rolę.

## Testowanie

Na połączeniu testowym utwórz fakturę (modułem lub w panelu) i opłać ją monetami testowymi albo przez API po identyfikatorze faktury:

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

Po kilku sekundach scenariusz się uruchomi. Jego History pokazuje każde uruchomienie i to, co dotarło.

## Prawdziwe płatności

- Włącz tryb produkcyjny w Perly Pay i podłącz klucze publiczne portfela.
- Dodaj połączenie z kluczem `sk_live_…`. W każdym scenariuszu dodaj na nim nowy webhook dla wyzwalacza i przełącz na nie pozostałe moduły Perly Pay.
- Opłać jedną małą prawdziwą fakturę i zobacz, jak dociera.
