# Make

> Ödemeler her Make senaryosunda: ödenen faturalar, iadeler, abonelikler ve müşteriler için anında tetikleyiciler; fatura ve ödeme bağlantısı oluşturan ve bulan modüller.

Perly Pay uygulaması ödemelerini Make'e getirir. Ödenen bir fatura bir tabloyu doldurabilir, CRM'i güncelleyebilir ya da Discord'da rol verebilir; bir form fatura oluşturup ödeme sayfasını gönderebilir. Barındırılacak bir şey yok, kod yok.

> **Not:** Test ve canlı anahtar iki ayrı bağlantıdır. Test bağlantısındaki bir senaryo yalnızca test ödemelerini görür.

## Bağlantı

1. **Anahtarı al** — Perly Pay'de: Dashboard → Developers → API keys. [Test modu](https://pay.perly.io/docs/test-mode.md) için `sk_test_…`, gerçek para için `sk_live_…`.
2. **Perly Pay'i senaryoya ekle** — Uygulama Make uygulama listesine yolda. Orada olana kadar davet bağlantısı için [bize yaz](https://pay.perly.io/tr/contact); onu bir kez aç, sonra modül eklerken **Perly Pay**'i ara.
3. **Bağla** — Bir bağlantı ekle (**Add**) ve anahtarı yapıştır. Testi canlıdan ayırt edebileceğin bir ad ver.

## Anında tetikleyiciler

| Modül | Ne zaman | Olay |
| --- | --- | --- |
| Watch paid invoices | Tamamen ödendi, gönderen kontrol edildi. Erişim verme ya da ürünü gönderme zamanı. | `invoice.fulfilled` |
| Watch underpaid invoices | Alıcı faturanın istediğinden az gönderdi. | `invoice.underpaid` |
| Watch opened refunds | Bir [iade](https://pay.perly.io/docs/refunds.md) açtın. | `refund.requested` |
| Watch confirmed refunds | Gönderdiğin iade ağda onaylandı. | `refund.confirmed` |
| Watch started subscriptions | Bir [abonelik](https://pay.perly.io/docs/subscriptions.md) başladı. | `subscription.created` |
| Watch renewed subscriptions | Abone sonraki dönemi ödedi. | `subscription.renewed` |
| Watch ended subscriptions | Abonelik sona erdi. Erişimi kaldırma zamanı. | `subscription.ended` |
| Watch new customers | Yeni bir alıcı. | `customer.created` |

Make'te bir tetikleyicinin webhook'unu eklediğinde, Dashboard → Developers → Webhooks'ta **Make: Paid invoices** gibi bir webhook belirir; Make'te silince kaybolur. Senaryo çalışmadan önce Make her teslimatı senin anahtarınla Perly Pay'den alır ve Perly Pay her teslimatı yalnızca bir kez verir; bu yüzden Perly Pay'den gelmeyen ya da yeniden gönderilen bir istek hiçbir şeyi çalıştırmaz. Her webhook, bir modun sahip olabileceği 16 webhook'tan biridir.

Her tetikleyici olayı ve ilgili nesneyi — fatura, iade, abonelik ya da müşteri — [API](https://pay.perly.io/docs/api.md)'deki haliyle verir. Para birimi tutarları sent cinsindendir (`total` 4900, 49.00 demek): eşlemede 100'e böl. Coin tutarları coinin en küçük biriminde, yanında `decimals` ile.

## Modüller

| Modül | Ne verirsin | Ne alırsın |
| --- | --- | --- |
| Create an invoice | Tutar (49.00 gibi), açıklama; istersen para birimi, müşteri e-postası, dönüş adresi, metadata | Alıcı için ödeme sayfalı (**Payment page URL**) bir fatura |
| Create a payment link | Bir fiyat ya da yeni bir ürünün adı ve tutarı | Onu satan bir sayfa — istediğin yerde paylaş |
| Get an invoice | Fatura kimliği | Durumu, gelenler, ödeme sayfası |
| Search customers | E-posta ya da hiçbir şey — hepsi için | Müşteriler, en yeniler önce |
| Make an API call | `/invoices` gibi bir yol, bir yöntem ve gerekiyorsa JSON gövdesi | API'nin yanıtı olduğu gibi; diğer modüllerin yapmadığı her şey için |

## Tarifler

### Ödeme → Google Sheets'te bir satır

1. **Tetikleyici** — Perly Pay → **Watch paid invoices**. Webhook'u ekle; senaryoyu bir kez çalıştır ve bir test faturası öde ki Make alanları öğrensin.
2. **Eylem** — Google Sheets → **Add a Row**, Tarih, E-posta, Tutar, Coin gibi sütunları olan bir tabloda.
3. **Eşle** — Tarih → Invoice: Paid at, E-posta → Customer email, Tutar → `Total (cents) / 100`, Coin → Payment: Coin. Aç.

### Ödeme → Discord'da rol

Discord'un kimin ödediğini bilmesi gerekir. Faturayı oluştururken alıcının Discord kimliğini faturaya koy ve fatura ödendiğinde geri oku.

1. **Senaryo 1: fatura** — Tetikleyici: e-posta ve Discord kimliği soran kayıt formun. Perly Pay → **Create an invoice**, metadata anahtarı `discord_user_id`, değeri formdaki cevap. Sonra alıcıya **Payment page URL**'yi gönder.
2. **Senaryo 2: rol** — Perly Pay → **Watch paid invoices**. Discord → **Add a Role to a Member** (ya da Discord'a **Make an API call**): sunucun, rol ve üye = Invoice: Metadata → `discord_user_id`.
3. **Rolü geri al** — Abonelik için **Watch ended subscriptions** aynı şekilde rolü kaldırır.

## Test

Test bağlantısında bir fatura oluştur (modülle ya da panelde) ve test coinleriyle ya da fatura kimliğiyle API üzerinden öde:

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

Birkaç saniye içinde senaryo çalışır. History her çalışmayı ve neyin geldiğini gösterir.

## Gerçek ödemeler

- Perly Pay'de canlı modu aç ve cüzdanın açık anahtarlarını bağla.
- `sk_live_…` anahtarıyla bir bağlantı ekle. Her senaryoda bu bağlantıda tetikleyici için yeni bir webhook ekle ve diğer Perly Pay modüllerini ona geçir.
- Küçük, gerçek bir fatura öde ve gelişini izle.
