# WooCommerce

> Eine Zahlungsart für WooCommerce: Bitcoin und USDC/USDT direkt in Ihre Wallet, die Bestellung markiert ein signierter Webhook als bezahlt.

Das Plugin von Perly Pay bringt Krypto in den klassischen Checkout und in den Checkout-Block. Jede Bestellung wird zu einer Rechnung in Perly Pay; der Käufer bezahlt sie über dem Shop oder auf einer eigenen Seite; ein signierter Webhook markiert die Bestellung als bezahlt. WordPress 6.5+, WooCommerce 8.6+, PHP 8.1+. Auf dem Server müssen Sie nichts installieren: Das [PHP-SDK](https://pay.perly.io/docs/sdks.md) ist schon enthalten.

> **Hinweis:** Rechnungen sind in USD oder EUR. In einem Shop mit anderer Währung ist die Zahlungsart ausgeblendet, und ihre Einstellungen erklären, warum.

## Installation

1. **Zip holen** — Das Plugin ist auf dem Weg zu WordPress.org. Bis es dort ist, [schreiben Sie uns](https://pay.perly.io/de/contact) für `perly-pay-woocommerce.zip`.
2. **Installieren** — In WordPress: Plugins → Neues Plugin hinzufügen → Plugin hochladen, Zip wählen, aktivieren. WooCommerce muss aktiv sein.
3. **Einstellungen öffnen** — WooCommerce → Einstellungen → Zahlungen → **Perly Pay**.

## Einstellungen

| Feld | Was hinein gehört |
| --- | --- |
| Geheimer Schlüssel | Dashboard → Developers → API keys. `sk_test_…` für den [Testmodus](https://pay.perly.io/docs/test-mode.md), `sk_live_…` für echtes Geld. Die Einstellungen zeigen, in welchem Modus Sie sind. |
| Signatur-Secret des Webhooks | `whsec_…`. **Webhook einrichten** füllt es selbst aus. |
| Zahlungsseite | **Fenster** öffnet den Checkout über dem Shop (pay.js). **Weiterleitung** schickt den Käufer auf seine Seite. Auf Handys öffnet sich immer die Seite selbst. |
| Status nach der Zahlung | Wie WooCommerce entscheidet (In Bearbeitung; Fertiggestellt bei Downloads), immer In Bearbeitung oder immer Fertiggestellt. |
| Titel, Beschreibung | Was Käufer im Checkout sehen. |
| Debug-Protokoll | Ereignisse und Fehler unter WooCommerce → Status → Protokolle. Nie Schlüssel, Secrets oder Käuferdaten. |

1. **Schlüssel einfügen** — Und auf **Verbindung testen** klicken: Sie sehen, ob der Schlüssel funktioniert, seinen Modus und ob der Webhook dieses Shops in Perly Pay existiert.
2. **Webhook einrichten** — Klicken Sie auf **Webhook einrichten**. Es fügt die Adresse des Shops (sie steht über den Buttons, `…/wp-json/perly-pay/v1/webhook`) in Perly Pay hinzu und speichert das Secret. Oder fügen Sie sie selbst unter Developers → Webhooks hinzu und setzen Sie das Secret ein.
3. **Fenster erlauben** — Fügen Sie unter Dashboard → Settings die Adresse des Shops bei **Sites that may embed the checkout** hinzu. Ohne das bietet das Fenster an, den Checkout in einem neuen Tab zu öffnen.
4. **Einschalten** — Haken Sie **Krypto mit Perly Pay annehmen** an und speichern Sie.

## Testen

Mit einem Schlüssel `sk_test_…` bestellen Sie in Ihrem eigenen Shop und wählen Perly Pay. Die Bestellung wartet als **Zahlung ausstehend**. Bezahlen Sie die Rechnung mit Test-Coins oder über die API – ihre ID steht in den Bestellnotizen:

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

Nach wenigen Sekunden wird die Bestellung **In Bearbeitung**, mit einer Notiz: Netzwerk, Betrag und Link zur Transaktion. `{"outcome":"short"}` und `{"outcome":"over"}` testen die anderen Fälle, sobald auf der Rechnungsseite eine Coin gewählt ist.

## Wie Bestellungen den Zahlungen folgen

| In Perly Pay | Bestellung |
| --- | --- |
| Bezahlt, Absender geprüft (`invoice.fulfilled`) | Bezahlt: der gewählte Status, Bestand reduziert, E-Mail an den Käufer. Eine Notiz mit jeder Überweisung und ihrer Transaktion. |
| Gesehen, teilweise bezahlt, bezahlt und noch in Prüfung | Eine Notiz. Wartet weiter. |
| Zur [Prüfung](https://pay.perly.io/docs/screening.md) angehalten | In Wartestellung, mit Grund. Entscheiden Sie in Perly Pay. |
| Abgelaufen oder storniert, nichts bezahlt | Storniert. |
| Abgelaufen, teilweise bezahlt | In Wartestellung: in Perly Pay erstatten oder annehmen. |
| Erstattet | Vollständig rückerstattet oder eine Notiz über den Teil. |

Jedes Ereignis wird einmal angewendet, auf die Bestellung, für die es erstellt wurde, und ein spätes „abgelaufen“ storniert nie eine Zahlung. Kommt der Käufer vor dem Webhook auf die Dankeseite zurück, fragt das Plugin die API und aktualisiert die Bestellung sofort.

## Erstattungen

Erstatten Sie wie immer von der Bestellseite: Das Plugin eröffnet eine [Erstattung](https://pay.perly.io/docs/refunds.md) in Perly Pay in der Coin, mit der bezahlt wurde (einen Teil bei einer Teilerstattung). Perly Pay bittet den Käufer per E-Mail um eine Adresse und prüft sie; die Bestellnotizen sagen, was wohin zu senden ist. Sie senden aus Ihrer Wallet und fügen die Transaktions-ID in Perly Pay ein – Perly Pay hält nie Geld.

## Live gehen

- Schalten Sie in Perly Pay den Live-Modus ein und verbinden Sie die öffentlichen Schlüssel Ihrer Wallet.
- Fügen Sie einen Schlüssel `sk_live_…` ein. Live-Schlüssel und -Webhooks sind von den Test-Pendants getrennt: Klicken Sie noch einmal auf **Webhook einrichten**.
- Fügen Sie die https-Adresse des Live-Shops im Live-Modus bei **Sites that may embed the checkout** hinzu.
- Machen Sie eine kleine echte Bestellung und erstatten Sie sie.
