Guide de passerelle de paiement
Intégration API Razorpay pour les sites de réservation de voyages
Razorpay est une passerelle de paiement indienne qui accepte les cartes, l'UPI, le netbanking et les portefeuilles en roupies. Ce guide explique comment fonctionne un paiement Razorpay pour une réservation de vol, d'hôtel ou de circuit, et la situation réelle dans PHPTRAVELS : Razorpay n'est pas un connecteur prêt à l'emploi aujourd'hui, mais il peut être ajouté comme intégration personnalisée sur le code source dont vous êtes propriétaire.
- Cartes, UPI, netbanking, portefeuilles
- Commande, Checkout, capture
- Contrôles de signature et de webhook
- Remboursements totaux et partiels
Razorpay en bref
Ce qu'est Razorpay et sa place dans PHPTRAVELS
Razorpay est une passerelle de paiement indienne. Une entreprise de voyage qui vend à des clients en Inde l'utilise pour proposer à la caisse les moyens de paiement attendus : cartes de débit et de crédit, UPI, netbanking et portefeuilles courants, le tout débité et réglé en roupies sur le compte Razorpay du marchand.
PHPTRAVELS est une plateforme de réservation de voyages auto-hébergée, livrée avec son code source complet. Ses passerelles de paiement prêtes à l'emploi proviennent d'une liste en direct que vous activez avec vos propres identifiants marchand. Razorpay n'est pas dans cette liste aujourd'hui, il n'existe donc pas encore de bouton pour l'activer dans l'administration.
Cela ne veut pas dire que vous ne pouvez pas l'utiliser. Comme le code vous appartient, Razorpay peut être ajouté comme Intégration d'API sur mesure, et pour l'Inde une passerelle prête existe déjà : Cashfree. La page Intégration de passerelles de paiement liste toutes les passerelles que vous pouvez activer dès maintenant.

Fiche technique de Razorpay
- Ce que c'est
- Une passerelle de paiement pour les entreprises en Inde
- Moyens de paiement
- Cartes, UPI, netbanking et portefeuilles
- Devise
- Débite et règle en INR ; les montants sont envoyés en paise
- Clés API
- Key ID et Key Secret, distinctes pour le mode test et le mode production
- Statut dans PHPTRAVELS
- Pas un connecteur prêt à l'emploi. Disponible comme intégration personnalisée sur le code source inclus
- Prêt en Inde aujourd'hui
- Cashfree, activé dans l'administration avec votre propre compte Cashfree
Flux de paiement
Un paiement Razorpay pour une réservation de voyage, étape par étape
Une intégration Razorpay répartit le travail entre le navigateur du voyageur et votre serveur. Le navigateur affiche le Checkout ; le serveur crée la commande, vérifie le résultat et décide quand la réservation est confirmée.
- 01
Votre serveur
Créer une commande
Quand le voyageur clique sur Payer, votre serveur appelle l'Orders API avec le montant en paise, la devise et un receipt égal à la référence de réservation. Razorpay renvoie un order_id.
- 02
Navigateur
Ouvrir Razorpay Checkout
La page de réservation ouvre le Checkout avec votre Key ID et cet order_id, de sorte que le voyageur paie exactement le montant fixé par votre serveur.
- 03
Navigateur
Le voyageur paie
Le voyageur choisit une carte, l'UPI, le netbanking ou un portefeuille et effectue l'étape éventuellement demandée par sa banque. Le paiement est alors autorisé.
- 04
Navigateur
Le Checkout renvoie trois valeurs
En cas de succès, le Checkout renvoie razorpay_payment_id, razorpay_order_id et razorpay_signature, et la page les transmet à votre serveur.
- 05
Votre serveur
Vérifier la signature
Votre serveur recalcule la signature à partir de order_id et payment_id avec la Key Secret. Seule une signature identique est considérée comme un vrai paiement.
- 06
Votre serveur
Capturer le paiement
Avec la capture automatique, Razorpay capture pour vous. Avec la capture manuelle, votre serveur capture une fois que la compagnie aérienne, l'hôtel ou le fournisseur de circuit a confirmé, afin que personne ne soit débité pour une réservation échouée.
- 07
Votre serveur
Confirmer la réservation
La réservation passe à payée, le billet ou le bon d'échange est émis et le payment_id Razorpay est enregistré avec la référence de réservation.
- 08
Votre serveurDe serveur à serveur
Recevoir le webhook
Razorpay envoie aussi des événements comme payment.captured à l'URL de votre webhook. Cela couvre le voyageur qui ferme l'onglet avant que la page puisse rendre compte.
Signatures et webhooks
Deux contrôles qui rendent une intégration Razorpay fiable
Tout ce qui arrive du navigateur ou d'internet peut être falsifié. Une intégration Razorpay ne fait confiance à un paiement qu'après avoir vérifié une signature créée avec un secret qui ne quitte jamais votre serveur.
1// 1. After Checkout: verify the payment signature 2$orderId = $booking["razorpay_order_id"]; // from your own record 3$paymentId = $_POST["razorpay_payment_id"]; 4$signature = $_POST["razorpay_signature"]; 5$expected = hash_hmac("sha256", $orderId . "|" . $paymentId, $keySecret); 6if (!hash_equals($expected, $signature)) { rejectPayment(); } 7markPaid($booking["ref"], $paymentId); 8 9// 2. Webhook: verify X-Razorpay-Signature over the raw body10$body = file_get_contents("php://input");11$header = $_SERVER["HTTP_X_RAZORPAY_SIGNATURE"] ?? "";12$expect = hash_hmac("sha256", $body, $webhookSecret);13if (!hash_equals($expect, $header)) { http_response_code(400); exit; }14$event = json_decode($body, true);15if (alreadyHandled($event)) exit; // repeat delivery16switch ($event["event"]) {17 case "payment.captured": confirmBooking($event); break;18 case "refund.processed": markRefunded($event); break;19}
Pseudo-code illustratif pour montrer la logique, pas un fichier prêt à l'emploi. Suivez la documentation et les SDK de Razorpay pour les appels exacts.
Signature du paiement
Le HMAC SHA256 de order_id, d'une barre verticale et de payment_id, avec votre Key Secret comme clé, doit être égal à razorpay_signature. Comparez avec une fonction à temps constant.
Signature du webhook
Chaque webhook porte un en-tête X-Razorpay-Signature : un HMAC SHA256 du corps brut de la requête, avec pour clé le secret de webhook défini dans le tableau de bord Razorpay.
Livraisons répétées
Les webhooks peuvent arriver plusieurs fois ou dans le désordre. Enregistrez les identifiants d'événement et de paiement et ignorez un événement déjà appliqué à la réservation.
Les secrets restent côté serveur
Seul le Key ID va au navigateur. La Key Secret et le secret du webhook restent dans la configuration du serveur, jamais dans le code de la page ni dans une application mobile.
Remboursements et annulations
Les remboursements de voyage couvrent rarement le montant total
Frais d'annulation, règles de non-présentation et itinéraires partiellement annulés font qu'un remboursement de voyage est souvent partiel. La Refunds API de Razorpay gère les deux cas, et l'intégration détermine le montant selon vos règles de réservation.
Remboursement total
Une annulation gratuite restitue la totalité du montant capturé au moyen de paiement utilisé par le voyageur.
Remboursement partiel
Après des frais d'annulation, le serveur ne rembourse que le solde. Le montant est envoyé en paise, comme la commande d'origine.
Une partie d'un itinéraire
Annulez une nuit d'hôtel ou un passager et remboursez cette part ; d'autres remboursements partiels peuvent suivre jusqu'au total capturé.
refund.processed
Le webhook de remboursement prévient votre serveur quand le remboursement est effectué, pour que la réservation et le voyageur voient le bon statut.
Enregistré avec la réservation
Chaque identifiant de remboursement est conservé avec la référence de réservation et le payment_id d'origine pour votre service comptable.
Exemple : annulation avec frais
- Capturé
- ₹12,500.00 amount: 1250000
- Frais d'annulation
- ₹1,500.00 amount: 150000
- Montant remboursé
- ₹11,000.00 amount: 1100000
Chiffres donnés à titre d'exemple. Razorpay prend les montants dans la plus petite unité de la devise : 100 paise font une roupie.
Comment connecter Razorpay
Trois façons d'encaisser avec ou sans Razorpay
Choisissez la voie qui convient à votre équipe et à votre date de lancement. Les trois laissent l'argent sur votre propre compte marchand ; PHPTRAVELS n'intervient jamais dans le règlement.
Option 1
Vos développeurs l'ajoutent
PHPTRAVELS est livré avec le code source complet : vos propres développeurs peuvent ajouter Razorpay comme nouvelle passerelle à côté des existantes : création de commande, Checkout à l'étape de paiement, contrôle de signature, capture, webhooks et remboursements.
- Développez et testez avec les clés du mode test de Razorpay
- Réutilisez la référence de réservation comme receipt de la commande
- Passez aux clés de production quand les réservations de test réussissent
Option 2
PHPTRAVELS le développe
Nos développeurs peuvent construire pour vous le connecteur Razorpay comme Intégration d'API sur mesure. Vous envoyez vos besoins, recevez le coût et le calendrier avant le début des travaux, puis le code source testé à la livraison.
- Devis avant le début des travaux
- Développé sur le mode test de Razorpay
- Livré sous forme de code source qui vous appartient
Option 3
Utiliser dès maintenant une passerelle prête
Si vous devez d'abord lancer, activez une passerelle déjà présente dans la plateforme. Pour l'Inde, c'est Cashfree. Les passerelles prêtes à l'emploi aujourd'hui comprennent :
- CashfreeGuide de configuration de Cashfree
- Stripe
- PayPal
- xMoney
- Fawaterk
- Paystack
Passerelles prêtes
Passerelles de paiement que vous pouvez activer aujourd'hui
Cette liste provient en direct du répertoire des passerelles PHPTRAVELS. Chacune s'active dans l'administration avec votre propre compte et vos clés.
Cashfree
StripeGuide d'intégrationPayPalGuide d'intégration
xMoney
Fawaterk
Paystack
Flutterwave
Adyen
MyFatoorah
SSLcommerz
Razorpay- Toutes les intégrations
Envie de comprendre les appels derrière chacune ? Lisez le guide API de passerelle de paiement, comparez les guides Paiements Stripe et Paiements PayPal, ou voyez comment les agents paient depuis un Portefeuille agent B2B sur le portail B2B.
Pas comme connecteur prêt à l'emploi. Razorpay n'est pas dans la liste des passerelles PHPTRAVELS aujourd'hui, vous ne pouvez donc pas l'activer dans l'administration. Comme le code source complet est inclus, il peut être ajouté comme intégration de passerelle de paiement personnalisée, par vos développeurs ou par les nôtres.
Cashfree est une passerelle prête dans PHPTRAVELS, avec un guide de configuration sur docs.phptravels.com/payments/cashfree. Vous l'activez dans l'administration avec votre propre compte Cashfree. D'autres passerelles prêtes, comme Stripe et PayPal, figurent sur la page des passerelles de paiement.
Razorpay accepte les cartes, l'UPI, le netbanking et les portefeuilles pour des paiements en roupies indiennes. Les moyens affichés à la caisse dépendent de ce qui est activé sur votre propre compte Razorpay.
Razorpay prend les montants dans la plus petite unité de la devise : le total de la réservation en roupies est donc multiplié par 100 avant la création de la commande. Le montant d'un remboursement est envoyé de la même façon.
Le Checkout renvoie un identifiant de paiement, l'identifiant de commande et une signature. Votre serveur calcule un HMAC SHA256 de l'identifiant de commande et de l'identifiant de paiement avec votre Key Secret, et n'accepte le paiement que si le résultat correspond à la signature.
La capture automatique est plus simple. La capture manuelle permet de ne capturer qu'une fois la réservation confirmée par la compagnie aérienne, l'hôtel ou le fournisseur de circuit : une réservation échouée peut alors être libérée plutôt que remboursée. Le choix dépend de vos produits et de vos fournisseurs.
Oui. La Refunds API de Razorpay prend en charge les remboursements totaux et partiels : des frais d'annulation peuvent être retenus et le solde restitué. Le webhook refund.processed prévient votre serveur quand le remboursement est terminé.
Oui. Le compte marchand, son Key ID et sa Key Secret ainsi que son règlement vous appartiennent. PHPTRAVELS ne fournit jamais d'identifiants de passerelle et ne manipule jamais vos fonds. Développez avec les clés du mode test et passez aux clés de production lors du lancement.
Cela dépend du périmètre nécessaire: paiement, capture manuelle, remboursements, paiements d'agents. PHPTRAVELS établit un devis avant de commencer un travail personnalisé. La plateforme elle-même est une licence unique à partir .
Continuez à explorer
Plus sur la plateforme
- Intégration de passerelles de paiementPaiement, 3D Secure, remboursements et webhooks
- API de passerelle de paiementComment fonctionnent paiements par carte, 3-D Secure, captures et remboursements via une API
- Intégration d'API sur mesureConnectez toute API fournisseur ou partenaire à PHPTRAVELS
- Paiements StripePaiement par carte et portefeuille, remboursements
- Paiements PayPalPaiement PayPal pour vols, hôtels et circuits
- Portefeuille agent B2BDépôts, plafonds de crédit et grand livre par agent
