Leitfaden Zahlungsgateway
Razorpay-API-Integration für Reisebuchungs-Websites
Razorpay ist ein Zahlungsgateway für Indien, das Karten, UPI, Netbanking und Wallets in Rupien akzeptiert. Dieser Leitfaden erklärt, wie eine Razorpay-Zahlung bei einer Flug-, Hotel- oder Tourbuchung abläuft, und nennt den ehrlichen Stand in PHPTRAVELS: Razorpay ist heute kein fertiger Connector, lässt sich aber als individuelle Integration auf dem Quellcode ergänzen, der Ihnen gehört.
- Karten, UPI, Netbanking, Wallets
- Order, Checkout, Capture
- Signatur- und Webhook-Prüfung
- Volle und teilweise Erstattungen
Razorpay auf einen Blick
Was Razorpay ist und wo es in PHPTRAVELS steht
Razorpay ist ein indisches Zahlungsgateway. Reiseunternehmen mit Kunden in Indien nutzen es, um die erwarteten Zahlungsarten anzubieten: Debit- und Kreditkarten, UPI, Netbanking und gängige Wallets, abgerechnet und ausgezahlt in Indischen Rupien auf das eigene Razorpay-Konto des Händlers.
PHPTRAVELS ist eine selbst gehostete Reisebuchungsplattform mit komplettem Quellcode. Die fertigen Zahlungsgateways stammen aus einer Live-Liste und werden mit Ihren eigenen Händlerzugangsdaten aktiviert. Razorpay steht heute nicht in dieser Liste, daher gibt es im Admin noch keinen Schalter dafür.
Das heißt nicht, dass Sie es nicht nutzen können. Da der Code Ihnen gehört, lässt sich Razorpay als Individuelle API-Integration ergänzen, und für Indien gibt es bereits ein fertiges Gateway: Cashfree. Die Seite Zahlungs-Gateway-Integration listet alle Gateways, die Sie sofort aktivieren können.

Razorpay-Datenblatt
- Was es ist
- Ein Zahlungsgateway für Unternehmen in Indien
- Zahlungsarten
- Karten, UPI, Netbanking und Wallets
- Währung
- Abrechnung und Auszahlung in INR; Beträge werden in Paise gesendet
- API-Schlüssel
- Key ID und Key Secret, getrennt für Testmodus und Livemodus
- Status in PHPTRAVELS
- Kein fertiger Connector. Als individuelle Integration auf dem mitgelieferten Quellcode möglich
- Heute fertig für Indien
- Cashfree, im Admin mit Ihrem eigenen Cashfree-Konto aktiviert
Zahlungsablauf
Eine Razorpay-Zahlung für eine Reisebuchung, Schritt für Schritt
Eine Razorpay-Integration teilt die Arbeit zwischen dem Browser des Reisenden und Ihrem Server. Der Browser zeigt den Checkout; der Server legt die Order an, prüft das Ergebnis und entscheidet, wann die Buchung bestätigt wird.
- 01
Ihr Server
Order anlegen
Sobald der Reisende auf Bezahlen klickt, ruft Ihr Server die Orders API mit dem Betrag in Paise, der Währung und der Buchungsreferenz als Receipt auf. Razorpay liefert eine order_id zurück.
- 02
Browser
Razorpay Checkout öffnen
Die Buchungsseite öffnet den Checkout mit Ihrer Key ID und dieser order_id, sodass der Reisende genau den Betrag zahlt, den Ihr Server festgelegt hat.
- 03
Browser
Reisender zahlt
Der Reisende wählt Karte, UPI, Netbanking oder Wallet und erledigt jeden Schritt, den seine Bank verlangt. Die Zahlung ist nun autorisiert.
- 04
Browser
Checkout liefert drei Werte
Bei Erfolg gibt der Checkout razorpay_payment_id, razorpay_order_id und razorpay_signature zurück, und die Seite sendet sie an Ihren Server.
- 05
Ihr Server
Signatur prüfen
Ihr Server berechnet die Signatur aus order_id und payment_id mit dem Key Secret neu. Nur eine übereinstimmende Signatur gilt als echte Zahlung.
- 06
Ihr Server
Zahlung einziehen
Bei automatischem Capture zieht Razorpay selbst ein. Bei manuellem Capture zieht Ihr Server erst ein, wenn Airline, Hotel oder Touranbieter bestätigt hat, sodass niemand für eine gescheiterte Buchung belastet wird.
- 07
Ihr Server
Buchung bestätigen
Die Buchung wechselt auf bezahlt, Ticket oder Voucher werden ausgestellt und die Razorpay-payment_id wird zur Buchungsreferenz gespeichert.
- 08
Ihr ServerServer zu Server
Webhook empfangen
Razorpay sendet außerdem Ereignisse wie payment.captured an Ihre Webhook-URL. Das deckt den Reisenden ab, der den Tab schließt, bevor die Seite zurückmelden konnte.
Signaturen und Webhooks
Zwei Prüfungen, die eine Razorpay-Integration verlässlich machen
Alles, was vom Browser oder über das Internet eintrifft, kann gefälscht sein. Eine Razorpay-Integration vertraut einer Zahlung erst, nachdem sie eine Signatur geprüft hat, die mit einem Geheimnis erstellt wurde, das Ihren Server nie verlässt.
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}
Illustrativer Pseudocode zur Veranschaulichung der Logik, keine einsatzfertige Datei. Für die genauen Aufrufe gelten die Dokumentation und SDKs von Razorpay.
Zahlungssignatur
Der HMAC SHA256 aus order_id, einem Pipe-Zeichen und payment_id, mit Ihrem Key Secret als Schlüssel, muss razorpay_signature entsprechen. Vergleichen Sie mit einer zeitkonstanten Funktion.
Webhook-Signatur
Jeder Webhook trägt einen X-Razorpay-Signature-Header: ein HMAC SHA256 des rohen Request-Body, mit dem Webhook-Secret als Schlüssel, das Sie im Razorpay-Dashboard festlegen.
Mehrfache Zustellung
Webhooks können mehrfach oder in falscher Reihenfolge eintreffen. Speichern Sie Ereignis- und Zahlungs-IDs und ignorieren Sie ein Ereignis, das Sie bereits auf die Buchung angewendet haben.
Geheimnisse bleiben serverseitig
Nur die Key ID geht an den Browser. Key Secret und Webhook-Secret liegen in der Serverkonfiguration, nie im Seitenquelltext oder in einer mobilen App.
Erstattungen und Stornierungen
Reiseerstattungen sind selten der volle Betrag
Stornogebühren, No-Show-Regeln und teilweise stornierte Reisen führen oft zu Teilerstattungen. Die Refunds API von Razorpay deckt beides ab, und die Integration bestimmt den Betrag nach Ihren Buchungsregeln.
Volle Erstattung
Eine kostenlose Stornierung erstattet den gesamten eingezogenen Betrag auf die Zahlungsart, mit der der Reisende bezahlt hat.
Teilerstattung
Nach Abzug einer Stornogebühr erstattet der Server nur den Restbetrag. Der Betrag wird wie die ursprüngliche Order in Paise gesendet.
Teil einer Reise
Eine Hotelnacht oder einen Passagier stornieren und diesen Teil erstatten; weitere Teilerstattungen sind bis zur Höhe des eingezogenen Gesamtbetrags möglich.
refund.processed
Der Erstattungs-Webhook meldet Ihrem Server, wann die Erstattung durch ist, damit Buchung und Reisender den richtigen Status sehen.
Zur Buchung gespeichert
Jede Erstattungs-ID wird mit der Buchungsreferenz und der ursprünglichen payment_id für Ihre Buchhaltung aufbewahrt.
Beispiel: Stornierung mit Gebühr
- Eingezogen
- ₹12,500.00 amount: 1250000
- Stornogebühr
- ₹1,500.00 amount: 150000
- Erstattungsbetrag
- ₹11,000.00 amount: 1100000
Nur Beispielzahlen. Razorpay nimmt Beträge in der kleinsten Währungseinheit, 100 Paise entsprechen also einer Rupie.
So verbinden Sie Razorpay
Drei Wege, Zahlungen mit oder ohne Razorpay anzunehmen
Wählen Sie den Weg, der zu Ihrem Team und Ihrem Starttermin passt. Bei allen dreien bleibt das Geld auf Ihrem eigenen Händlerkonto; PHPTRAVELS ist nie Teil der Abwicklung.
Option 1
Ihre Entwickler ergänzen es
PHPTRAVELS wird mit komplettem Quellcode geliefert, daher können Ihre eigenen Entwickler Razorpay als neues Gateway neben den bestehenden ergänzen: Order-Anlage, Checkout im Zahlungsschritt, Signaturprüfung, Capture, Webhooks und Erstattungen.
- Entwickeln und testen mit Razorpay-Testmodus-Schlüsseln
- Buchungsreferenz als Order-Receipt wiederverwenden
- Auf Live-Schlüssel wechseln, sobald Testbuchungen bestehen
Option 2
PHPTRAVELS baut es
Unsere Entwickler können den Razorpay-Connector als Individuelle API-Integration für Sie bauen. Sie senden die Anforderungen, erhalten Kosten und Zeitplan vor Arbeitsbeginn und bekommen am Ende den getesteten Quellcode.
- Angebot vor Arbeitsbeginn
- Gegen den Razorpay-Testmodus entwickelt
- Als Quellcode geliefert, der Ihnen gehört
Option 3
Jetzt ein fertiges Gateway nutzen
Wenn Sie zuerst starten müssen, aktivieren Sie ein Gateway, das bereits in der Plattform enthalten ist. Für Indien ist das Cashfree. Zu den heute fertigen Gateways gehören:
- CashfreeCashfree-Einrichtungsanleitung
- Stripe
- PayPal
- xMoney
- Fawaterk
- Paystack
Fertige Gateways
Zahlungsgateways, die Sie heute aktivieren können
Diese Liste stammt live aus dem PHPTRAVELS-Gateway-Verzeichnis. Jedes Gateway wird im Admin mit Ihrem eigenen Konto und Ihren Schlüsseln aktiviert.
Cashfree
StripeIntegrationsleitfadenPayPalIntegrationsleitfaden
xMoney
Fawaterk
Paystack
Flutterwave
Adyen
MyFatoorah
SSLcommerz
Razorpay- Alle Integrationen
Sie möchten die Aufrufe hinter einem dieser Gateways verstehen? Lesen Sie den Leitfaden Payment-Gateway-API, vergleichen Sie die Leitfäden Stripe-Zahlungen und PayPal-Zahlungen oder sehen Sie, wie Agenten im B2B-Portal aus einem B2B-Agenten-Wallet zahlen.
Nicht als fertigen Connector. Razorpay steht heute nicht in der Gateway-Liste von PHPTRAVELS, daher können Sie es im Admin nicht aktivieren. Da der komplette Quellcode enthalten ist, lässt es sich als individuelle Zahlungsgateway-Integration ergänzen, von Ihren oder unseren Entwicklern.
Cashfree ist ein fertiges Gateway in PHPTRAVELS und hat eine Einrichtungsanleitung unter docs.phptravels.com/payments/cashfree. Sie aktivieren es im Admin mit Ihrem eigenen Cashfree-Konto. Weitere fertige Gateways wie Stripe und PayPal stehen auf der Seite der Zahlungsgateways.
Razorpay akzeptiert Karten, UPI, Netbanking und Wallets für Zahlungen in Indischen Rupien. Welche Arten im Checkout erscheinen, hängt davon ab, was in Ihrem eigenen Razorpay-Konto aktiviert ist.
Razorpay nimmt Beträge in der kleinsten Währungseinheit, daher wird ein Buchungsbetrag in Rupien vor der Order-Anlage mit 100 multipliziert. Ein Erstattungsbetrag wird genauso gesendet.
Der Checkout liefert eine Zahlungs-ID, die Order-ID und eine Signatur. Ihr Server berechnet mit Ihrem Key Secret einen HMAC SHA256 aus Order-ID und Zahlungs-ID und akzeptiert die Zahlung nur, wenn das Ergebnis der Signatur entspricht.
Automatisches Capture ist einfacher. Manuelles Capture erlaubt den Einzug erst nach Bestätigung durch Airline, Hotel oder Touranbieter, sodass eine gescheiterte Buchung freigegeben statt erstattet werden kann. Die Wahl hängt von Ihren Produkten und Anbietern ab.
Ja. Die Refunds API von Razorpay unterstützt volle und teilweise Erstattungen, sodass eine Stornogebühr einbehalten und der Rest zurückgezahlt werden kann. Der Webhook refund.processed meldet Ihrem Server, wann die Erstattung abgeschlossen ist.
Ja. Das Händlerkonto, seine Key ID und sein Key Secret sowie die Auszahlung gehören Ihnen. PHPTRAVELS stellt nie Gateway-Zugangsdaten bereit und verwaltet nie Ihr Geld. Entwickeln Sie mit Testmodus-Schlüsseln und wechseln Sie beim Livegang auf Live-Schlüssel.
Das hängt vom gewünschten Umfang, etwa Checkout, manuelles Capture, Erstattungen und Agentenzahlungen. PHPTRAVELS nennt individuelle Arbeiten vor Beginn ein Angebot. Die Plattform selbst ist eine einmalige Lizenz.
Weiter entdecken
Mehr zur Plattform
- Zahlungs-Gateway-IntegrationCheckout, 3D Secure, Erstattungen und Webhooks
- Payment-Gateway-APISo funktionieren Kartenzahlungen, 3-D Secure, Capture und Erstattungen über eine API
- Individuelle API-IntegrationJede Lieferanten- oder Partner-API an PHPTRAVELS anbinden
- Stripe-ZahlungenKarten- und Wallet-Zahlung mit Erstattungen
- PayPal-ZahlungenPayPal-Checkout für Flüge, Hotels und Touren
- B2B-Agenten-WalletEinzahlungen, Kreditlimits und ein Kontobuch je Agent
