Demo na żywo

Przewodnik po bramce płatności

Integracja API Razorpay dla serwisów rezerwacji podróży

Razorpay to indyjska bramka płatności, która przyjmuje karty, UPI, netbanking i portfele w rupiach. Ten przewodnik wyjaśnia, jak działa płatność Razorpay przy rezerwacji lotu, hotelu lub wycieczki, oraz jaki jest rzeczywisty status w PHPTRAVELS: Razorpay nie jest dziś gotowym konektorem, ale można go dodać jako własną integrację w kodzie źródłowym, którego jesteś właścicielem.

  • Karty, UPI, netbanking, portfele
  • Zamówienie, Checkout, przechwycenie
  • Weryfikacja podpisu i webhooka
  • Zwroty pełne i częściowe

Razorpay w skrócie

Czym jest Razorpay i jakie ma miejsce w PHPTRAVELS

Razorpay to indyjska bramka płatności. Firma turystyczna sprzedająca klientom w Indiach używa jej, aby przy kasie przyjmować metody, których ci klienci oczekują: karty debetowe i kredytowe, UPI, netbanking i popularne portfele, wszystko pobierane i rozliczane w rupiach na koncie Razorpay sprzedawcy.

PHPTRAVELS to samodzielnie hostowana platforma rezerwacji podróży z pełnym kodem źródłowym w zestawie. Gotowe bramki płatności pochodzą z listy na żywo, którą włączasz własnymi danymi dostępowymi sprzedawcy. Razorpay nie ma dziś na tej liście, więc w panelu administracyjnym nie ma jeszcze przełącznika do jego włączenia.

To nie znaczy, że nie możesz go używać. Ponieważ kod należy do Ciebie, Razorpay można dodać jako Integracja API na zamówienie, a dla Indii dostępna jest już gotowa bramka: Cashfree. Strona Integracja bramek płatniczych wymienia wszystkie bramki, które możesz włączyć od razu.

Ilustracja płatności za podróż online: kasa rezerwacji przekazuje płatność kartą do bramki płatności i wraca do systemu rezerwacji

Karta informacyjna Razorpay

Czym jest
Bramką płatności dla firm w Indiach
Metody płatności
Karty, UPI, netbanking i portfele
Waluta
Pobiera i rozlicza w INR; kwoty wysyła się w paise
Klucze API
Key ID i Key Secret, osobne dla trybu testowego i produkcyjnego
Status w PHPTRAVELS
Nie jest gotowym konektorem. Dostępny jako własna integracja w dołączonym kodzie źródłowym
Gotowe dziś w Indiach
Cashfree, włączany w panelu administracyjnym na Twoim koncie Cashfree
Przewodnik konfiguracji Cashfree

Przebieg płatności

Jedna płatność Razorpay za rezerwację podróży, krok po kroku

Integracja z Razorpay dzieli pracę między przeglądarkę podróżnego a Twój serwer. Przeglądarka pokazuje Checkout; serwer tworzy zamówienie, sprawdza wynik i decyduje, kiedy rezerwacja jest potwierdzona.

  1. 01

    Twój serwer

    Utworzenie zamówienia

    Gdy podróżny kliknie Zapłać, Twój serwer wywołuje Orders API z kwotą w paise, walutą i receipt ustawionym na numer rezerwacji. Razorpay zwraca order_id.

  2. 02

    Przeglądarka

    Otwarcie Razorpay Checkout

    Strona rezerwacji otwiera Checkout z Twoim Key ID i tym order_id, dzięki czemu podróżny płaci dokładnie tyle, ile ustalił Twój serwer.

  3. 03

    Przeglądarka

    Podróżny płaci

    Podróżny wybiera kartę, UPI, netbanking lub portfel i wykonuje ewentualny krok wymagany przez bank. Płatność jest teraz autoryzowana.

  4. 04

    Przeglądarka

    Checkout zwraca trzy wartości

    Po powodzeniu Checkout zwraca razorpay_payment_id, razorpay_order_id i razorpay_signature, a strona wysyła je na Twój serwer.

  5. 05

    Twój serwer

    Weryfikacja podpisu

    Twój serwer ponownie oblicza podpis z order_id i payment_id za pomocą Key Secret. Tylko zgodny podpis uznaje się za prawdziwą płatność.

  6. 06

    Twój serwer

    Przechwycenie płatności

    Przy automatycznym przechwyceniu Razorpay robi to za Ciebie. Przy ręcznym Twój serwer przechwytuje płatność po potwierdzeniu przez linię lotniczą, hotel lub dostawcę wycieczki, aby nikt nie płacił za nieudaną rezerwację.

  7. 07

    Twój serwer

    Potwierdzenie rezerwacji

    Rezerwacja zmienia status na opłaconą, wystawiany jest bilet lub voucher, a payment_id z Razorpay zapisywany jest przy numerze rezerwacji.

  8. 08

    Twój serwerSerwer do serwera

    Odebranie webhooka

    Razorpay wysyła też zdarzenia, takie jak payment.captured, na adres URL Twojego webhooka. Obejmuje to podróżnego, który zamknął kartę, zanim strona zdążyła zgłosić wynik.

Podpisy i webhooki

Dwie kontrole, które czynią integrację Razorpay wiarygodną

Wszystko, co przychodzi z przeglądarki lub z internetu, może być sfałszowane. Integracja z Razorpay ufa płatności dopiero po sprawdzeniu podpisu utworzonego sekretem, który nigdy nie opuszcza Twojego serwera.

verify-razorpay.php · poglądowo
 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}

Poglądowy pseudokod pokazujący logikę, nie gotowy plik do wklejenia. Dokładne wywołania znajdziesz w dokumentacji i SDK Razorpay.

  • Podpis płatności

    HMAC SHA256 z order_id, znaku pionowej kreski i payment_id, z kluczem Key Secret, musi być równy razorpay_signature. Porównuj funkcją o stałym czasie działania.

  • Podpis webhooka

    Każdy webhook zawiera nagłówek X-Razorpay-Signature: HMAC SHA256 surowej treści żądania, z kluczem w postaci sekretu webhooka ustawionego w panelu Razorpay.

  • Powtórne dostarczenia

    Webhooki mogą przychodzić więcej niż raz lub w złej kolejności. Zapisuj identyfikatory zdarzenia i płatności i ignoruj zdarzenie, które zostało już zastosowane do rezerwacji.

  • Sekrety zostają po stronie serwera

    Do przeglądarki trafia tylko Key ID. Key Secret i sekret webhooka znajdują się w konfiguracji serwera, nigdy w kodzie strony ani w aplikacji mobilnej.

Zwroty i anulacje

Zwroty za podróże rzadko obejmują pełną kwotę

Opłaty za anulowanie, zasady no-show i częściowo anulowane plany podróży sprawiają, że zwrot za podróż jest często częściowy. Refunds API Razorpay obsługuje oba przypadki, a integracja ustala kwotę na podstawie Twoich zasad rezerwacji.

  • Zwrot pełny

    Bezpłatne anulowanie zwraca całą przechwyconą kwotę na metodę, którą podróżny zapłacił.

  • Zwrot częściowy

    Po opłacie za anulowanie serwer zwraca tylko resztę. Kwotę wysyła się w paise, tak jak w oryginalnym zamówieniu.

  • Część planu podróży

    Anuluj jedną noc hotelową lub jednego pasażera i zwróć tę część; kolejne zwroty częściowe mogą następować do wysokości przechwyconej sumy.

  • refund.processed

    Webhook zwrotu informuje Twój serwer, kiedy zwrot został zrealizowany, aby rezerwacja i podróżny widzieli właściwy status.

  • Zapisany przy rezerwacji

    Każdy identyfikator zwrotu jest przechowywany z numerem rezerwacji i oryginalnym payment_id dla Twojego działu księgowości.

  • Przykład: anulowanie z opłatą

    Przechwycono
    ₹12,500.00 amount: 1250000
    Opłata za anulowanie
    ₹1,500.00 amount: 150000
    Kwota zwrotu
    ₹11,000.00 amount: 1100000

    Kwoty wyłącznie przykładowe. Razorpay przyjmuje kwoty w najmniejszej jednostce waluty, więc 100 paise to jedna rupia.

Jak podłączyć Razorpay

Trzy sposoby przyjmowania płatności z Razorpay lub bez niego

Wybierz drogę dopasowaną do swojego zespołu i terminu startu. We wszystkich trzech pieniądze trafiają na Twoje własne konto sprzedawcy; PHPTRAVELS nigdy nie uczestniczy w rozliczeniu.

  1. Opcja 1

    Dodają ją Twoi programiści

    PHPTRAVELS jest dostarczany z pełnym kodem źródłowym, więc Twoi programiści mogą dodać Razorpay jako nową bramkę obok istniejących: tworzenie zamówień, Checkout w kroku płatności, sprawdzanie podpisu, przechwytywanie, webhooki i zwroty.

    • Twórz i testuj z kluczami trybu testowego Razorpay
    • Użyj numeru rezerwacji jako receipt zamówienia
    • Przejdź na klucze produkcyjne, gdy rezerwacje testowe przejdą
  2. Opcja 2

    Buduje ją PHPTRAVELS

    Nasi programiści mogą zbudować dla Ciebie konektor Razorpay jako Integracja API na zamówienie. Przesyłasz wymagania, przed rozpoczęciem prac otrzymujesz koszt i harmonogram, a na koniec przetestowany kod źródłowy.

    • Wycena przed rozpoczęciem prac
    • Budowane na trybie testowym Razorpay
    • Dostarczane jako kod źródłowy należący do Ciebie
  3. Opcja 3

    Użyj gotowej bramki już teraz

    Jeśli najpierw musisz wystartować, włącz bramkę, która jest już w platformie. Dla Indii to Cashfree. Gotowe dziś bramki to między innymi:

Gotowe bramki

Bramki płatności, które możesz włączyć już dziś

Ta lista pochodzi na żywo z katalogu bramek PHPTRAVELS. Każdą włącza się w panelu administracyjnym na własnym koncie i własnych kluczach.

Chcesz zrozumieć wywołania stojące za którąkolwiek z nich? Przeczytaj przewodnik API bramki płatności, porównaj przewodniki Płatności Stripe i Płatności PayPal albo zobacz, jak agenci płacą z Portfel B2B agenta w portalu B2B.

Pytania o Razorpay

Razorpay i PHPTRAVELS, odpowiedzi

Kontakt ze sprzedażą

Nie jako gotowy konektor. Razorpay nie ma dziś na liście bramek PHPTRAVELS, więc nie można go włączyć w panelu administracyjnym. Ponieważ pełny kod źródłowy jest w zestawie, można go dodać jako własną integrację bramki płatności, przez Twoich programistów lub naszych.

Cashfree to gotowa bramka w PHPTRAVELS z przewodnikiem konfiguracji pod adresem docs.phptravels.com/payments/cashfree. Włączasz ją w panelu administracyjnym na własnym koncie Cashfree. Inne gotowe bramki, takie jak Stripe i PayPal, są wymienione na stronie bramek płatności.

Razorpay akceptuje karty, UPI, netbanking i portfele w płatnościach w rupiach indyjskich. To, które metody pojawią się przy kasie, zależy od tego, co jest włączone na Twoim koncie Razorpay.

Razorpay przyjmuje kwoty w najmniejszej jednostce waluty, więc suma rezerwacji w rupiach jest mnożona przez 100 przed utworzeniem zamówienia. Kwotę zwrotu wysyła się tak samo.

Checkout zwraca identyfikator płatności, identyfikator zamówienia i podpis. Twój serwer oblicza HMAC SHA256 z identyfikatora zamówienia i płatności za pomocą Key Secret i akceptuje płatność tylko wtedy, gdy wynik zgadza się z podpisem.

Automatyczne jest prostsze. Ręczne pozwala przechwycić płatność dopiero po potwierdzeniu rezerwacji przez linię lotniczą, hotel lub dostawcę wycieczki, więc nieudaną rezerwację można zwolnić zamiast zwracać. Wybór zależy od Twoich produktów i dostawców.

Tak. Refunds API Razorpay obsługuje zwroty pełne i częściowe, więc opłatę za anulowanie można zatrzymać, a resztę zwrócić. Webhook refund.processed informuje Twój serwer, kiedy zwrot jest zakończony.

Tak. Konto sprzedawcy, jego Key ID i Key Secret oraz rozliczenia należą do Ciebie. PHPTRAVELS nigdy nie dostarcza danych dostępowych bramki i nigdy nie obsługuje Twoich środków. Twórz z kluczami trybu testowego i przejdź na produkcyjne przy starcie.

Zależy od potrzebnego zakresu, takiego jak checkout, ręczne przechwytywanie, zwroty i płatności agentów. PHPTRAVELS wycenia prace na zamówienie przed ich rozpoczęciem. Sama platforma to licencja jednorazowa.