# Schnellstart mit npx

> Ein Befehl richtet Perly Pay in Ihrem Projekt ein: eine Bezahl-Route, eine Webhook-Route mit Signaturprüfung, einen Pay-Button und Ihren Testschlüssel.

`npx perly-pay init` liest Ihr Projekt, schreibt Code für sein Framework und bringt Sie bis auf einen Klick an eine Testzahlung heran. Es richtet nur den **Testmodus** ein; live schalten Sie im Dashboard.

## Ausführen

```bash
npx perly-pay init
```

Es erkennt Framework und Paketmanager, öffnet Dashboard → Developers und fragt nach einem Testschlüssel (`sk_test_…`). Einen Live-Schlüssel lehnt es ab.

## Was es schreibt

| Framework | Erkannt an | Dateien |
| --- | --- | --- |
| Next.js (App Router) | `next` | `lib/perly-pay.ts`, `app/api/perly-pay/checkout/route.ts`, `app/api/perly-pay/webhook/route.ts`, `components/PayButton.tsx`, `app/perly-pay/page.tsx` |
| Express | `express` | `lib/perly-pay.js`, `routes/perly-pay.js` |
| Hono | `hono` | `lib/perly-pay.ts`, `routes/perly-pay.ts` |
| Laravel | `artisan`, `laravel/framework` | `app/Http/Controllers/PerlyPayController.php`, `routes/perly-pay.php`, `config/perly-pay.php`, `resources/views/perly-pay/button.blade.php` |
| Node.js | jede andere `package.json` | `lib/perly-pay.js`, `perly-pay.js` (`node:http`) |

TypeScript oder JavaScript, ES-Module oder CommonJS – wie in Ihrem Projekt, und in `src/`, wenn der Code dort liegt. npm, pnpm, yarn, bun und Composer.

- **Bezahlen.** Der Button sendet ein Formular an `/perly-pay/checkout` (`/api/perly-pay/checkout` in Next.js). Es öffnet eine Rechnung und schickt den Käufer zum Bezahlen.
- **Webhook.** `/perly-pay/webhook` prüft `Perly-Signature` auf dem rohen Body. Bei `invoice.fulfilled` ruft es `grantAccess()` auf – das einzige TODO, das Sie schreiben.
- **Pläne.** Einmalverkäufe und Credit-Pakete, in `PLANS` oben im Hauptmodul. Der Plan, seine Credits und Ihre Nutzer-ID reisen in den Metadaten der Rechnung mit und kommen im Webhook zurück.
- **Schlüssel.** `PERLY_PAY_SECRET_KEY` und `PERLY_PAY_WEBHOOK_SECRET` in `.env.local` (Next.js) oder `.env`, und die Datei selbst in `.gitignore`. Verfolgt git die Datei schon, schreibt init den Schlüssel nicht hinein und zeigt, wie Sie die Verfolgung aufheben.

> **Hinweis:** init ersetzt nie eine vorhandene Datei oder einen vorhandenen Wert. `--force` ersetzt.

## Webhook anbinden

Perly Pay muss Ihre Webhook-Adresse erreichen. Fügen Sie sie unter Dashboard → Developers → Webhooks für `invoice.fulfilled` hinzu und setzen Sie ihr Secret `whsec_…` in `PERLY_PAY_WEBHOOK_SECRET`. Oder lassen Sie init beides erledigen:

```bash
npx perly-pay init --webhook-url https://your-app.example/perly-pay/webhook
```

Auf einem Laptop gibt ein Tunnel die öffentliche Adresse: `cloudflared tunnel --url http://localhost:3000`. Mehr unter [Webhooks](https://pay.perly.io/docs/webhooks.md).

## Eine Zahlung im Testmodus

1. **App starten** — Express und Node lesen `.env` mit `node --env-file=.env` oder dotenv.
2. **/perly-pay öffnen** — Klicken Sie auf **Pay with crypto**. Sie sind auf der Zahlungsseite.
3. **Simulate payment** — Die Rechnung wird bezahlt, dann erfüllt. Siehe [Testmodus](https://pay.perly.io/docs/test-mode.md).
4. **grantAccess arbeiten sehen** — Ihr Webhook erhält `invoice.fulfilled`. Jetzt schreiben Sie, was er freischaltet.

## Mit einem AI-Assistenten

`--yes` fragt nichts, daher führen Claude Code, Cursor oder Codex es für Sie aus. Geben Sie den Schlüssel und das, was Sie verkaufen:

```bash
npx perly-pay init --yes --key sk_test_… --product "Logo review" --amount 4900
```

`--json` gibt ein Ergebnis aus, das der Assistent lesen kann.

## Optionen

| Flag | Was es tut |
| --- | --- |
| `--yes`, `-y` | Ohne Rückfragen. Für AI-Assistenten und Skripte. |
| `--framework <name>` | `next`, `express`, `hono`, `laravel` oder `node`, wenn falsch erkannt. |
| `--key <sk_test_…>` | Ihr Testschlüssel. Standard: `PERLY_PAY_SECRET_KEY`, sonst wird gefragt. |
| `--webhook-url <url>` | Registriert die Adresse für `invoice.fulfilled` und speichert ihr Secret. |
| `--product <name>`, `--amount <cents>`, `--currency <code>` | Was Sie verkaufen, in USD oder EUR. `--amount 4900` sind $49.00. |
| `--install` | Installiert auch das SDK. Sonst wird der Befehl ausgegeben. |
| `--force` | Ersetzt vorhandene Dateien und Werte. |
| `--plugin`, `--mcp` | Zeigt, wie Sie das Claude-Code-Plugin und den Server `perly-pay-mcp` hinzufügen. |
| `--dry-run` | Sagt, was es tun würde, schreibt nichts. |
| `--json` | Gibt das Ergebnis als JSON aus. |
| `--api <origin>`, `--dir <path>` | Ein anderes Perly Pay (lokal), ein anderer Ordner. |

## Live gehen

- Verbinden Sie **Live**-Wallet-Schlüssel unter Dashboard → Wallets.
- Erstellen Sie einen Live-Schlüssel (`sk_live_…`) und einen Live-Webhook.
- Setzen Sie sie dort, wo die App läuft. Der Code bleibt, wie er ist. Den Rest der API finden Sie unter [SDKs](https://pay.perly.io/docs/sdks.md).
