# La page de paiement

Payiz dessine tout : le choix de l’opérateur, le numéro, le suivi, le reçu. Vous créez le paiement, vous y envoyez le client, et le webhook vous dit la suite.

## Quand la choisir

- **La page de paiement** : Payiz dessine tout. Vous envoyez le lien, ou vous y renvoyez le client. (`payment_url`)
- **[Le widget](https://docs.payiz.app/widget)** : La fenêtre de Payiz, posée dans votre page. Le client ne la quitte pas. (`payiz.js`)
- **[Le paiement direct](https://docs.payiz.app/paiement-direct)** : Vous dessinez tout. Payiz lance la demande sur le téléphone et vous dit la suite. (`payer`)

Pas de serveur du tout ? Un lien de paiement de l’espace ouvre la même page, sans une ligne de code : **Encaisser**, puis envoyez son adresse.

## Créer le paiement

Votre serveur crée le paiement avec sa clé secrète. La réponse porte `payment_url` : la page de ce paiement-là, valable jusqu’à `expires_at`.

```bash
curl https://api.payiz.app/v1/payments \
  -H "Authorization: Bearer sk_test_…" \
  -H "Idempotency-Key: cmd-42" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 10000,
    "currency": "XOF",
    "description": "Commande 42",
    "reference": "cmd-42",
    "return_url": "https://boutique.bj/merci"
  }'
```

```json
{
  "object": "payment",
  "id": "pay_01j9x3kq7m4tzv8qhw2n",
  "status": "requires_payment",
  "payment_url": "https://pay.payiz.app/pay_01j9x3kq7m4tzv8qhw2n",
  "return_url": "https://boutique.bj/merci",
  "expires_at": 1790089092
}
```

## Y envoyer le client

Redirigez-le depuis votre site, ou envoyez l’adresse par WhatsApp, SMS ou e-mail. Il choisit son opérateur, saisit son numéro et valide sur son téléphone. Avec le [SDK Node](https://docs.payiz.app/sdk) :

```javascript
const paiement = await payiz.payments.create(
  {
    amount: 10000,
    currency: 'XOF',
    reference: 'cmd-42',
    return_url: 'https://boutique.bj/merci',
  },
  { idempotencyKey: 'cmd-42' },
)
redirect(paiement.payment_url)
```

## Le retour chez vous

Une fois payé, la page renvoie le client vers `return_url`. Ce retour se falsifie : il sert à dire merci, pas à livrer.

## Être prévenu

Livrez sur le webhook `payment.succeeded`, comme pour le widget et le paiement direct. Un échec du payeur arrive en `payment.attempt_failed` : le paiement reste payable, et la page lui propose de recommencer.

> Déclarer une adresse, vérifier la signature, dédoublonner : [Recevoir les webhooks](https://docs.payiz.app/webhooks).

