Demo en vivo

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.

Ilustración de un pago de viaje en línea: un checkout de reserva pasa un pago con tarjeta a una pasarela de pago y vuelve al sistema de reservas

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
Guía de configuración 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

verify-razorpay.php · ilustrativo
 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.

  1. 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
  2. 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
  3. 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:

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.

¿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.

Preguntas sobre Razorpay

Razorpay y PHPTRAVELS, respondido

Habla con ventas

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.