# WooCommerce

> Un moyen de paiement pour WooCommerce : bitcoin et USDC/USDT directement sur votre portefeuille, commandes marquées payées par un webhook signé.

Le plugin Perly Pay ajoute la crypto à la page de commande classique et au bloc Checkout. Chaque commande devient une facture Perly Pay ; l’acheteur la paie par-dessus votre boutique ou sur sa propre page ; un webhook signé marque la commande comme payée. WordPress 6.5+, WooCommerce 8.6+, PHP 8.1+. Rien à installer sur le serveur : le [SDK PHP](https://pay.perly.io/docs/sdks.md) est inclus.

> **Note:** Les factures sont en USD ou en EUR. Dans une boutique dans une autre devise, le moyen de paiement reste masqué, et ses réglages expliquent pourquoi.

## Installation

1. **Obtenez le zip** — Le plugin est en route vers WordPress.org. D’ici là, [écrivez-nous](https://pay.perly.io/fr/contact) pour recevoir `perly-pay-woocommerce.zip`.
2. **Installez** — Dans WordPress : Extensions → Ajouter → Téléverser une extension, choisissez le zip, activez. WooCommerce doit être actif.
3. **Ouvrez les réglages** — WooCommerce → Réglages → Paiements → **Perly Pay**.

## Réglages

| Réglage | Valeur |
| --- | --- |
| Secret key (clé secrète) | Depuis Dashboard → Developers → API keys. `sk_test_…` pour le [mode test](https://pay.perly.io/docs/test-mode.md), `sk_live_…` pour l’argent réel. Les réglages indiquent dans quel mode vous êtes. |
| Webhook signing secret (secret de signature) | `whsec_…`. **Set up webhook** le remplit pour vous. |
| Payment page (page de paiement) | **Overlay** ouvre la caisse par-dessus votre boutique (pay.js). **Redirect** y envoie l’acheteur. Sur téléphone, c’est toujours la page elle-même. |
| Status when paid (statut une fois payé) | Celui de WooCommerce (En cours ; Terminée pour les téléchargements), toujours En cours, ou toujours Terminée. |
| Title, Description (titre, description) | Ce que les acheteurs voient au moment de payer. |
| Debug log (journal de débogage) | Événements et erreurs dans WooCommerce → État → Journaux. Jamais de clés, de secrets ni de données d’acheteurs. |

1. **Collez la clé** — Puis touchez **Test connection** : il indique si la clé marche, son mode, et si le webhook de cette boutique existe dans Perly Pay.
2. **Configurez le webhook** — Touchez **Set up webhook**. Il ajoute l’adresse de la boutique (affichée au-dessus des boutons, `…/wp-json/perly-pay/v1/webhook`) dans Perly Pay et enregistre son secret. Ou ajoutez-la vous-même dans Developers → Webhooks et collez le secret.
3. **Autorisez l’overlay** — Dans Dashboard → Settings, ajoutez l’adresse de la boutique à **Sites that may embed the checkout**. Sans cela, l’overlay propose d’ouvrir la caisse dans un nouvel onglet.
4. **Activez** — Cochez **Take crypto with Perly Pay** et enregistrez.

## Test

Avec une clé `sk_test_…`, passez une commande dans votre boutique et choisissez Perly Pay. La commande attend en **Attente paiement**. Payez la facture avec des monnaies de test, ou depuis l’API — son id figure dans les notes de la commande :

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

En quelques secondes, la commande passe à **En cours**, avec une note indiquant le réseau, le montant et un lien vers la transaction. `{"outcome":"short"}` et `{"outcome":"over"}` testent les autres cas une fois une monnaie choisie sur la page de la facture.

## Comment les commandes suivent les paiements

| Dans Perly Pay | La commande |
| --- | --- |
| Payé et l’expéditeur contrôlé (`invoice.fulfilled`) | Payée : le statut choisi, le stock réduit, l’e-mail à l’acheteur. Une note par transfert, avec sa transaction. |
| Vu, payé en partie, payé mais encore en contrôle | Une note. Toujours en attente de paiement. |
| Retenu pour [vérification](https://pay.perly.io/docs/screening.md) | En attente, avec la raison. Décidez dans Perly Pay. |
| Expiré ou annulé, rien de payé | Annulée. |
| Expiré avec un paiement partiel | En attente : remboursez-le ou acceptez-le dans Perly Pay. |
| Remboursé | Remboursée en entier, ou une note pour un remboursement partiel. |

Chaque événement est appliqué une seule fois, à la commande pour laquelle il a été créé, et un « expiré » tardif n’annule jamais un paiement. Si l’acheteur revient sur la page de remerciement avant le webhook, le plugin interroge l’API et met la commande à jour aussitôt.

## Remboursements

Remboursez depuis l’écran de la commande comme d’habitude : le plugin ouvre un [remboursement](https://pay.perly.io/docs/refunds.md) dans Perly Pay, dans la monnaie payée (une partie pour un remboursement partiel). Perly Pay demande une adresse à l’acheteur par e-mail et la contrôle ; les notes de la commande indiquent ensuite quoi envoyer et où. Vous envoyez depuis votre portefeuille et collez l’id de transaction dans Perly Pay — Perly Pay ne détient jamais l’argent.

## Passer en réel

- Activez le mode réel dans Perly Pay et connectez les clés publiques de votre portefeuille.
- Collez une clé `sk_live_…`. Les clés et webhooks réels sont distincts de ceux de test : touchez à nouveau **Set up webhook**.
- Ajoutez l’adresse https de votre boutique réelle à **Sites that may embed the checkout** en mode réel.
- Passez une petite commande réelle et remboursez-la.
