# Make

> Make のどのシナリオにも支払いを：支払い済みの請求書、返金、サブスクリプション、顧客のインスタントトリガー。請求書や支払いリンクを作成・検索するモジュール。

Perly Pay アプリは、あなたの支払いを Make に届けます。支払い済みの請求書で表を埋めたり、CRM を更新したり、Discord のロールを付与したり。フォームから請求書を作って支払いページを送ることもできます。ホスティングは不要、コードもありません。

> **注:** テストキーと本番キーは別々の接続です。テストの接続のシナリオには、テストの支払いしか見えません。

## 接続

1. **キーを取得** — Perly Pay で：Dashboard → Developers → API keys。[テストモード](https://pay.perly.io/docs/test-mode.md)には `sk_test_…`、本物のお金には `sk_live_…`。
2. **シナリオに Perly Pay を追加** — アプリは Make のアプリ一覧に掲載予定です。それまでは招待リンクを[お問い合わせ](https://pay.perly.io/ja/contact)からご依頼ください。一度開けば、モジュールを追加するときに **Perly Pay** が見つかります。
3. **接続する** — 接続を **Add** してキーを貼ります。テストと本番を区別できる名前を付けてください。

## インスタントトリガー

| モジュール | タイミング | イベント |
| --- | --- | --- |
| Watch paid invoices | 全額支払い済み、送金者を確認済み。アクセスの付与や発送のタイミング。 | `invoice.fulfilled` |
| Watch underpaid invoices | 購入者の送金額が請求額より少ない。 | `invoice.underpaid` |
| Watch opened refunds | あなたが[返金](https://pay.perly.io/docs/refunds.md)を開始した。 | `refund.requested` |
| Watch confirmed refunds | あなたが送った返金がネットワークで承認された。 | `refund.confirmed` |
| Watch started subscriptions | [サブスクリプション](https://pay.perly.io/docs/subscriptions.md)が始まった。 | `subscription.created` |
| Watch renewed subscriptions | 会員が次の期間を支払った。 | `subscription.renewed` |
| Watch ended subscriptions | サブスクリプションが終了した。アクセスを外すタイミング。 | `subscription.ended` |
| Watch new customers | 新しい購入者。 | `customer.created` |

Make でトリガーの Webhook を追加すると、Dashboard → Developers → Webhooks に **Make: Paid invoices** のような Webhook が現れ、Make で削除すると消えます。シナリオが動く前に、Make は各配信をあなたのキーで Perly Pay から受け取り、Perly Pay は各配信を一度だけ渡します。Perly Pay 以外からのリクエストや、もう一度送られたリクエストでは何も起動しません。各 Webhook は、モードごとに持てる 16 個のうちの 1 つです。

各トリガーは、イベントと対象のオブジェクト（請求書、返金、サブスクリプション、顧客）を [API](https://pay.perly.io/docs/api.md) と同じ形で返します。通貨の金額はセント単位（`total` 4900 は 49.00）なので、マッピングで 100 で割ってください。通貨（コイン）の金額は最小単位で、隣に `decimals` があります。

## モジュール

| モジュール | 渡すもの | 得られるもの |
| --- | --- | --- |
| Create an invoice | 金額（49.00 のように）、説明。任意で通貨、顧客のメール、戻り先アドレス、メタデータ | 購入者向けの支払いページ（**Payment page URL**）付きの請求書 |
| Create a payment link | 価格、または新しい商品の名前と金額 | それを販売するページ — どこにでも共有できます |
| Get an invoice | 請求書の ID | その状態、届いた額、支払いページ |
| Search customers | メールアドレス、またはすべてなら空欄 | 顧客、新しい順 |
| Make an API call | `/invoices` のようなパス、メソッド、必要なら JSON ボディ | API の応答をそのまま。ほかのモジュールでできないことに |

## レシピ

### 支払い → Google Sheets の行

1. **トリガー** — Perly Pay → **Watch paid invoices**。Webhook を追加し、シナリオを一度実行してテストの請求書を支払うと、Make がフィールドを覚えます。
2. **アクション** — Google Sheets → **Add a Row**、日付、メール、金額、通貨のような列がある表で。
3. **マッピング** — 日付 → Invoice: Paid at、メール → Customer email、金額 → `Total (cents) / 100`、通貨 → Payment: Coin。オンにします。

### 支払い → Discord のロール

Discord は誰が支払ったかを知る必要があります。請求書を作るときに購入者の Discord ID を入れ、支払い済みになったら読み戻します。

1. **シナリオ 1：請求書** — トリガー：メールと Discord ID を集める登録フォーム。Perly Pay → **Create an invoice**、メタデータのキーは `discord_user_id`、値はフォームの回答。続いて購入者に **Payment page URL** を送ります。
2. **シナリオ 2：ロール** — Perly Pay → **Watch paid invoices**。Discord → **Add a Role to a Member**（または Discord への **Make an API call**）：あなたのサーバー、ロール、メンバー = Invoice: Metadata → `discord_user_id`。
3. **ロールを外す** — サブスクリプションなら、**Watch ended subscriptions** で同じようにロールを外します。

## テスト

テストの接続で請求書を作成し（モジュールかダッシュボードで）、テスト用の通貨で、または請求書 ID を使って API で支払います：

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

数秒でシナリオが動きます。History に各実行と届いた内容が表示されます。

## 本番の支払い

- Perly Pay で本番モードをオンにし、ウォレットの公開鍵を接続します。
- `sk_live_…` キーで接続を追加します。各シナリオで、その接続にトリガー用の新しい Webhook を追加し、他の Perly Pay モジュールもそちらに切り替えます。
- 少額の本番の請求書を 1 件支払い、届く様子を確認します。
