Guía de pasarela de pago
Integración de la API de Razorpay para sitios web de reservas de viajes
Razorpay es una pasarela de pago para India que acepta tarjetas, UPI, netbanking y monederos en rupias. Esta guía explica cómo funciona un pago con Razorpay en una reserva de vuelo, hotel o tour, y el estado real en PHPTRAVELS: Razorpay hoy no es un conector listo para usar, pero se puede añadir como integración personalizada sobre el código fuente que usted posee.
- Tarjetas, UPI, netbanking, monederos
- Orden, Checkout, captura
- Verificación de firma y webhook
- Reembolsos totales y parciales
Razorpay de un vistazo
Qué es Razorpay y en qué punto está en PHPTRAVELS
Razorpay es una pasarela de pago india. Una empresa de viajes que vende a clientes de India la usa para aceptar los métodos que esperan en el pago: tarjetas de débito y crédito, UPI, netbanking y monederos populares, cobrados y liquidados en rupias indias en la cuenta Razorpay del propio comercio.
PHPTRAVELS es una plataforma de reservas de viajes autoalojada que incluye todo el código fuente. Sus pasarelas de pago listas para usar proceden de una lista en vivo que se activa con sus propias credenciales de comercio. Razorpay no está hoy en esa lista, así que todavía no hay un interruptor para ella en el panel de administración.
Eso no significa que no pueda usarla. Como el código es suyo, Razorpay puede añadirse como Integración de API personalizada, y para India ya hay una pasarela lista: Cashfree. La página Integración de pasarelas de pago muestra todas las pasarelas que puede activar ahora.

Ficha de Razorpay
- Qué es
- Una pasarela de pago para empresas de India
- Métodos de pago
- Tarjetas, UPI, netbanking y monederos
- Moneda
- Cobra y liquida en INR; los importes se envían en paise
- Claves de API
- Key ID y Key Secret, distintas para modo de prueba y modo real
- Estado en PHPTRAVELS
- No es un conector listo. Disponible como integración personalizada sobre el código fuente incluido
- Listo hoy en India
- Cashfree, activado en el panel con su propia cuenta de Cashfree
Flujo de pago
Un pago con Razorpay para una reserva de viaje, paso a paso
Una integración de Razorpay reparte el trabajo entre el navegador del viajero y su servidor. El navegador muestra Checkout; el servidor crea la orden, comprueba el resultado y decide cuándo se confirma la reserva.
- 01
Su servidor
Crear una orden
Cuando el viajero pulsa Pagar, su servidor llama a la Orders API con el importe en paise, la moneda y un receipt con la referencia de la reserva. Razorpay devuelve un order_id.
- 02
Navegador
Abrir Razorpay Checkout
La página de reserva abre Checkout con su Key ID y ese order_id, de modo que el viajero paga exactamente el importe que fijó su servidor.
- 03
Navegador
El viajero paga
El viajero elige tarjeta, UPI, netbanking o un monedero y completa cualquier paso que pida su banco. El pago queda autorizado.
- 04
Navegador
Checkout devuelve tres valores
Si todo va bien, Checkout devuelve razorpay_payment_id, razorpay_order_id y razorpay_signature, y la página los envía a su servidor.
- 05
Su servidor
Verificar la firma
Su servidor recalcula la firma a partir de order_id y payment_id con el Key Secret. Solo una firma que coincide se trata como pago real.
- 06
Su servidor
Capturar el pago
Con captura automática, Razorpay captura por usted. Con captura manual, su servidor captura cuando la aerolínea, el hotel o el proveedor del tour han confirmado, para que nadie pague una reserva fallida.
- 07
Su servidor
Confirmar la reserva
La reserva pasa a pagada, se emite el billete o el voucher y el payment_id de Razorpay se guarda junto a la referencia de la reserva.
- 08
Su servidorDe servidor a servidor
Recibir el webhook
Razorpay también envía eventos como payment.captured a su URL de webhook. Esto cubre al viajero que cierra la pestaña antes de que la página pudiera informar.
Firmas y webhooks
Dos comprobaciones que mantienen fiable una integración de Razorpay
Todo lo que llega desde el navegador o por internet puede ser falso. Una integración de Razorpay solo confía en un pago después de comprobar una firma hecha con un secreto que nunca sale de su servidor.
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}
Pseudocódigo ilustrativo para mostrar la lógica, no un archivo listo para usar. Siga la documentación y los SDK de Razorpay para las llamadas exactas.
Firma del pago
El HMAC SHA256 de order_id, una barra vertical y payment_id, con su Key Secret como clave, debe ser igual a razorpay_signature. Compare con una función de tiempo constante.
Firma del webhook
Cada webhook lleva una cabecera X-Razorpay-Signature: un HMAC SHA256 del cuerpo bruto de la petición, con la clave del secreto de webhook que defina en el panel de Razorpay.
Entregas repetidas
Los webhooks pueden llegar más de una vez o desordenados. Registre los ids del evento y del pago e ignore un evento que ya aplicó a la reserva.
Los secretos se quedan en el servidor
Solo el Key ID va al navegador. El Key Secret y el secreto del webhook viven en la configuración del servidor, nunca en el código de la página ni en una app móvil.
Reembolsos y cancelaciones
Los reembolsos de viajes rara vez son por el importe completo
Las penalizaciones por cancelación, las reglas de no presentación y los itinerarios cancelados en parte hacen que un reembolso suela ser parcial. La Refunds API de Razorpay cubre ambos casos y la integración decide el importe según sus reglas de reserva.
Reembolso total
Una cancelación gratuita devuelve todo el importe capturado al método con el que pagó el viajero.
Reembolso parcial
Tras una penalización por cancelación, el servidor reembolsa solo el saldo. El importe se envía en paise, igual que la orden original.
Parte de un itinerario
Cancele una noche de hotel o un pasajero y reembolse esa parte; pueden seguir más reembolsos parciales hasta el total capturado.
refund.processed
El webhook de reembolso avisa a su servidor cuando el reembolso se ha completado, para que la reserva y el viajero vean el estado correcto.
Guardado junto a la reserva
Cada id de reembolso se conserva con la referencia de la reserva y el payment_id original para su equipo de contabilidad.
Ejemplo: cancelación con penalización
- Capturado
- ₹12,500.00 amount: 1250000
- Penalización por cancelación
- ₹1,500.00 amount: 150000
- Importe reembolsado
- ₹11,000.00 amount: 1100000
Solo cifras de ejemplo. Razorpay recibe los importes en la unidad mínima de la moneda, así que 100 paise equivalen a una rupia.
Cómo conectar Razorpay
Tres formas de cobrar, con Razorpay o sin él
Elija la ruta que encaje con su equipo y su fecha de lanzamiento. En las tres el dinero va a su propia cuenta de comercio; PHPTRAVELS nunca interviene en la liquidación.
Opción 1
Lo añaden sus desarrolladores
PHPTRAVELS incluye todo el código fuente, así que sus propios desarrolladores pueden añadir Razorpay como una pasarela nueva junto a las existentes: creación de la orden, Checkout en el paso de pago, verificación de firma, captura, webhooks y reembolsos.
- Desarrolle y pruebe con claves del modo de prueba de Razorpay
- Reutilice la referencia de la reserva como receipt de la orden
- Pase a claves reales cuando las reservas de prueba funcionen
Opción 2
Lo construye PHPTRAVELS
Nuestros desarrolladores pueden crear el conector de Razorpay para usted como Integración de API personalizada. Usted envía los requisitos, recibe el coste y el plazo antes de empezar y obtiene al final el código fuente probado.
- Presupuesto antes de empezar
- Desarrollado contra el modo de prueba de Razorpay
- Entregado como código fuente de su propiedad
Opción 3
Use una pasarela lista ahora
Si necesita lanzar primero, active una pasarela que ya esté en la plataforma. Para India es Cashfree. Entre las pasarelas listas hoy están:
- CashfreeGuía de configuración de Cashfree
- Stripe
- PayPal
- xMoney
- Fawaterk
- Paystack
Pasarelas listas
Pasarelas de pago que puede activar hoy
Esta lista llega en vivo del directorio de pasarelas de PHPTRAVELS. Cada una se activa en el panel con su propia cuenta y claves.
Cashfree
StripeGuía de integraciónPayPalGuía de integración
xMoney
Fawaterk
Paystack
Flutterwave
Adyen
MyFatoorah
SSLcommerz
Razorpay- Todas las integraciones
¿Quiere entender las llamadas detrás de cualquiera de ellas? Lea la guía de API de pasarela de pago, compare las guías de Pagos con Stripe y Pagos con PayPal, o vea cómo pagan los agentes desde un Monedero B2B para agentes en el portal B2B.
No como conector listo para usar. Razorpay no está hoy en la lista de pasarelas de PHPTRAVELS, así que no puede activarla en el panel. Como se incluye todo el código fuente, puede añadirse como integración personalizada de pasarela de pago, por sus desarrolladores o por los nuestros.
Cashfree es una pasarela lista en PHPTRAVELS y tiene una guía de configuración en docs.phptravels.com/payments/cashfree. La activa en el panel con su propia cuenta de Cashfree. Otras pasarelas listas, como Stripe y PayPal, aparecen en la página de pasarelas de pago.
Razorpay acepta tarjetas, UPI, netbanking y monederos para pagos en rupias indias. Los métodos que aparecen en el checkout dependen de lo que tenga activado en su propia cuenta de Razorpay.
Razorpay recibe los importes en la unidad mínima de la moneda, así que el total de una reserva en rupias se multiplica por 100 antes de crear la orden. El importe de un reembolso se envía igual.
Checkout devuelve un id de pago, el id de la orden y una firma. Su servidor calcula un HMAC SHA256 del id de orden y el id de pago con su Key Secret y solo acepta el pago si el resultado coincide con la firma.
La captura automática es más sencilla. La manual permite capturar solo cuando la aerolínea, el hotel o el proveedor del tour confirman la reserva, de modo que una reserva fallida se libera en lugar de reembolsarse. La elección depende de sus productos y proveedores.
Sí. La Refunds API de Razorpay admite reembolsos totales y parciales, de modo que puede retener una penalización por cancelación y devolver el resto. El webhook refund.processed avisa a su servidor cuando el reembolso está completo.
Sí. La cuenta de comercio, su Key ID y Key Secret y su liquidación son suyos. PHPTRAVELS nunca proporciona credenciales de pasarela ni maneja su dinero. Desarrolle con claves de prueba y cambie a claves reales al salir en producción.
Depende del alcance que necesite, como checkout, captura manual, reembolsos y pagos de agentes. PHPTRAVELS presupuesta el trabajo personalizado antes de empezar. La plataforma en sí es una licencia única desde.
Sigue explorando
Más sobre la plataforma
- Integración de pasarelas de pagoCheckout, 3D Secure, reembolsos y webhooks
- API de pasarela de pagoCómo funcionan los pagos con tarjeta, 3-D Secure, capturas y reembolsos mediante una API
- Integración de API personalizadaConecta cualquier API de proveedor o socio a PHPTRAVELS
- Pagos con StripeCobro con tarjeta y monedero, reembolsos y pagos
- Pagos con PayPalPago con PayPal para vuelos, hoteles y tours
- Monedero B2B para agentesDepósitos, límites de crédito y un libro mayor por agente
