Aller au contenu

Créer une demande de paiement

Ce guide détaille la création de demandes de paiement et le workflow complet.

Endpoint

POST /api/payment-requests/

Corps de la requête

Champ Type Requis Description
request_type string Oui IMPRINT ou DEPOSIT
amount decimal DEPOSIT: oui Montant (ex: 150.00)
currency string Non Devise ISO 4217 (défaut: EUR)
guest_email string Oui Email du client
guest_first_name string Oui Prénom du client
guest_last_name string Oui Nom du client
guest_phone string Non Téléphone du client
language string Non Langue du formulaire : fr, en, de (défaut: fr)
reservation_ref string Oui Référence de la réservation dans votre PMS
reservation_data object Non Données supplémentaires (dates, chambre, etc.)

Exemple : Pré-paiement (DEPOSIT)

Le client sera débité du montant indiqué.

curl -X POST \
  -H "X-API-Key: votre-clé-api" \
  -H "Content-Type: application/json" \
  -d '{
    "request_type": "DEPOSIT",
    "amount": 250.00,
    "currency": "EUR",
    "guest_email": "jean.dupont@email.com",
    "guest_first_name": "Jean",
    "guest_last_name": "Dupont",
    "guest_phone": "+33612345678",
    "language": "fr",
    "reservation_ref": "RES-2026-100",
    "reservation_data": {
      "checkin": "2026-07-01",
      "checkout": "2026-07-05",
      "room_type": "Double Supérieure",
      "room_number": "204",
      "nights": 4,
      "total_stay": 800.00
    }
  }' \
  https://votre-domaine.com/api/payment-requests/
{
  "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "reference": "DEP-2026-0100",
  "status": "NOT_INITIATED",
  "payment_link": "/payment/a1b2c3d4-e5f6-7890-abcd-ef1234567890/"
}

Exemple : Empreinte bancaire (IMPRINT)

La carte du client est enregistrée sans débit. Le montant représente le maximum capturable en cas de no-show.

curl -X POST \
  -H "X-API-Key: votre-clé-api" \
  -H "Content-Type: application/json" \
  -d '{
    "request_type": "IMPRINT",
    "amount": 350.00,
    "guest_email": "marie.martin@email.com",
    "guest_first_name": "Marie",
    "guest_last_name": "Martin",
    "reservation_ref": "RES-2026-101",
    "language": "en"
  }' \
  https://votre-domaine.com/api/payment-requests/
{
  "uuid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
  "reference": "IMP-2026-0050",
  "status": "NOT_INITIATED",
  "payment_link": "/payment/b2c3d4e5-f6a7-8901-bcde-f12345678901/"
}

Workflow après création

1. Votre PMS crée la demande via l'API
2. Vous envoyez le payment_link au client
   (par email via votre PMS ou via M-Pay)
3. Le client clique sur le lien et remplit le formulaire
4. Le prestataire traite le paiement
5. M-Pay reçoit la notification (IPN)
   et met à jour le statut
6. Votre PMS consulte le statut via l'API
   GET /api/payment-requests/statuses/

Envoi du lien par email

Deux options :

Option 1 : M-Pay envoie l'email

Si la fonctionnalité est activée dans la configuration du tenant (confirmation_email = true), M-Pay enverra automatiquement un email au client avec le lien de paiement.

Option 2 : Votre PMS envoie l'email

Construisez l'URL complète à partir du payment_link retourné :

https://votre-domaine.com{payment_link}

Intégrez ce lien dans votre propre email de confirmation de réservation.

Champ reservation_data

Le champ reservation_data est un objet JSON libre. Il est stocké tel quel et affiché dans l'interface d'administration. Voici un exemple complet :

{
  "checkin": "2026-07-01",
  "checkout": "2026-07-05",
  "nights": 4,
  "room_type": "Suite Junior",
  "room_number": "301",
  "total_stay": 1200.00,
  "adults": 2,
  "children": 1,
  "board": "half_board",
  "source": "booking.com",
  "notes": "Arrivée tardive prévue"
}

Bonnes pratiques

Incluez au minimum checkin, checkout et room_type dans reservation_data. Ces informations sont affichées dans les emails de confirmation envoyés au client.

Erreurs possibles

Code Erreur Cause
400 DEPOSIT requests require an amount greater than 0 Pré-paiement sans montant
401 Unauthorized Clé API invalide

Devises supportées

Code Devise
EUR Euro
CHF Franc Suisse
USD Dollar US