On me demande de créer un système de réservation en ligne avec paiement en ligne et je me demande quoi faire dans le cas où 2 clients réservent pour la même chambre en même temps.

Par exemple:
En même temps:

Client1 et Client2 ont réservé pour une chambre standard qui n'a qu'une seule chambre disponible. (La disponibilité des chambres affichera qu'il y a encore 1 chambre disponible). Et puis ils ont appuyé sur le bouton «confirmer» en même temps.

5
KiiroSora09 25 nov. 2011 à 05:36

3 réponses

Meilleure réponse

Utilisez une construction de verrouillage (probablement au niveau de la base de données dans ce cas) pour vous assurer qu'une seule confirmation passera à la fois. Vous devriez toujours le faire s'il est possible d'avoir une condition de course comme celle-ci. De cette façon, vous saurez toujours qui a été le premier et vous pouvez dire à l'autre utilisateur qu'il a été trop lent à confirmer.

Une autre chose que vous voudrez peut-être ajouter est un délai de paiement. Dans de nombreux systèmes, lorsque vous confirmez quelque chose, vous aurez un certain temps pour effectuer un paiement pour obtenir la réservation. Si vous ne payez pas dans ce délai, la confirmation expirera et la chambre sera à nouveau disponible.

4
Matti Virkkunen 25 nov. 2011 à 01:39

Il y a deux façons de lutter contre cela.

  1. Si l'utilisateur sélectionne une salle, supprimez-la temporairement comme disponible sur votre interface Web. Les visiteurs suivants ne pourront alors pas sélectionner cette chambre pour la réservation. Si le premier utilisateur ne termine pas la transaction, la salle redevient disponible.
  2. Mettez un verrou sur la base de données comme mentionné ci-dessus afin qu'un seul enregistrement puisse être écrit à la fois
0
Martin Bean 25 nov. 2011 à 02:05

Utilisez un système "provisoire" qui marque la réservation comme provisoire pendant, disons, 10 minutes. Ces créneaux deviennent alors indisponibles pour les demandes suivantes. Si la réservation n'est pas terminée dans le délai imparti, le créneau est à nouveau libéré. Si vous saisissez tous les détails du client avant de réserver l'emplacement, le taux d'abandon devrait rester faible.

Vous devez communiquer le délai et son «statut provisoire» au booker. Si vous avez des étapes ultérieures où le visiteur pourrait s'arrêter, un simple chronomètre JS décomptant le temps aiderait et pousserait également le booker tout au long du processus.

Alternativement, autorisez la double réservation jusqu'à ce que le dernier bouton «payer» soit enfoncé au premier moment. La deuxième méthode se convertirait mieux, la première méthode est plus "correcte".

0
Martin Dower 30 nov. 2011 à 17:03
8264063