Demo ao vivo

Guia de gateway de pagamento

Integração da API Razorpay para sites de reservas de viagem

O Razorpay é um gateway de pagamento da Índia que aceita cartões, UPI, netbanking e carteiras digitais em rupias. Este guia explica como um pagamento Razorpay funciona numa reserva de voo, hotel ou passeio e qual é a situação real no PHPTRAVELS: o Razorpay não é um conector pronto hoje, mas pode ser adicionado como integração personalizada sobre o código-fonte que você possui.

  • Cartões, UPI, netbanking, carteiras
  • Pedido, Checkout, captura
  • Verificação de assinatura e webhook
  • Estornos totais e parciais

Razorpay em resumo

O que é o Razorpay e qual é o seu lugar no PHPTRAVELS

O Razorpay é um gateway de pagamento indiano. Uma empresa de viagens que vende para clientes na Índia o usa para aceitar no checkout os meios de pagamento que esses clientes esperam: cartões de débito e crédito, UPI, netbanking e carteiras populares, tudo cobrado e liquidado em rupias na conta Razorpay do próprio lojista.

O PHPTRAVELS é uma plataforma de reservas de viagem auto-hospedada, com o código-fonte completo incluído. Seus gateways de pagamento prontos vêm de uma lista ao vivo que você ativa com as suas próprias credenciais de lojista. O Razorpay não está nessa lista hoje, então ainda não há um botão para ele no painel de administração.

Isso não significa que você não possa usá-lo. Como o código é seu, o Razorpay pode ser adicionado como Integração de API personalizada, e para a Índia já existe um gateway pronto: o Cashfree. A página Integração de gateways de pagamento lista todos os gateways que você pode ativar agora.

Ilustração de um pagamento de viagem online: um checkout de reserva enviando um pagamento com cartão a um gateway de pagamento e voltando ao sistema de reservas

Ficha técnica do Razorpay

O que é
Um gateway de pagamento para empresas na Índia
Meios de pagamento
Cartões, UPI, netbanking e carteiras
Moeda
Cobra e liquida em INR; os valores são enviados em paise
Chaves de API
Key ID e Key Secret, separadas para o modo de teste e o modo real
Situação no PHPTRAVELS
Não é um conector pronto. Disponível como integração personalizada sobre o código-fonte incluído
Pronto na Índia hoje
Cashfree, ativado no painel com a sua própria conta Cashfree
Guia de configuração do Cashfree

Fluxo de pagamento

Um pagamento Razorpay numa reserva de viagem, passo a passo

Uma integração com o Razorpay divide o trabalho entre o navegador do viajante e o seu servidor. O navegador mostra o Checkout; o servidor cria o pedido, verifica o resultado e decide quando a reserva é confirmada.

  1. 01

    Seu servidor

    Criar um pedido

    Quando o viajante clica em Pagar, seu servidor chama a Orders API com o valor em paise, a moeda e um receipt igual à referência da reserva. O Razorpay devolve um order_id.

  2. 02

    Navegador

    Abrir o Razorpay Checkout

    A página de reserva abre o Checkout com a sua Key ID e esse order_id, de modo que o viajante pague exatamente o valor definido pelo seu servidor.

  3. 03

    Navegador

    O viajante paga

    O viajante escolhe cartão, UPI, netbanking ou carteira e conclui qualquer etapa exigida pelo banco. O pagamento agora está autorizado.

  4. 04

    Navegador

    O Checkout devolve três valores

    Em caso de sucesso, o Checkout devolve razorpay_payment_id, razorpay_order_id e razorpay_signature, e a página os envia ao seu servidor.

  5. 05

    Seu servidor

    Verificar a assinatura

    Seu servidor recalcula a assinatura a partir do order_id e do payment_id com a Key Secret. Só uma assinatura idêntica é tratada como pagamento real.

  6. 06

    Seu servidor

    Capturar o pagamento

    Com captura automática, o Razorpay captura por você. Com captura manual, seu servidor captura depois que a companhia aérea, o hotel ou o fornecedor do passeio confirmar, para que ninguém seja cobrado por uma reserva que falhou.

  7. 07

    Seu servidor

    Confirmar a reserva

    A reserva passa a paga, o bilhete ou voucher é emitido e o payment_id do Razorpay é guardado junto à referência da reserva.

  8. 08

    Seu servidorServidor a servidor

    Receber o webhook

    O Razorpay também envia eventos como payment.captured à URL do seu webhook. Isso cobre o viajante que fecha a aba antes de a página conseguir avisar.

Assinaturas e webhooks

Duas verificações que mantêm uma integração Razorpay confiável

Tudo o que chega do navegador ou pela internet pode ser forjado. Uma integração com o Razorpay só confia em um pagamento depois de verificar uma assinatura feita com um segredo que nunca sai do seu 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 a lógica, não um arquivo pronto para uso. Siga a documentação e os SDKs do Razorpay para as chamadas exatas.

  • Assinatura do pagamento

    O HMAC SHA256 de order_id, uma barra vertical e payment_id, com a sua Key Secret como chave, deve ser igual a razorpay_signature. Compare com uma função de tempo constante.

  • Assinatura do webhook

    Cada webhook traz um cabeçalho X-Razorpay-Signature: um HMAC SHA256 do corpo bruto da requisição, com a chave do segredo de webhook definido no painel do Razorpay.

  • Entregas repetidas

    Webhooks podem chegar mais de uma vez ou fora de ordem. Registre os IDs do evento e do pagamento e ignore um evento que já foi aplicado à reserva.

  • Segredos ficam no servidor

    Só a Key ID vai para o navegador. A Key Secret e o segredo do webhook ficam na configuração do servidor, nunca no código da página nem em um app móvel.

Estornos e cancelamentos

Estornos de viagem raramente são do valor total

Taxas de cancelamento, regras de no-show e itinerários cancelados em parte fazem com que o estorno de uma viagem seja muitas vezes parcial. A Refunds API do Razorpay cobre os dois casos, e a integração define o valor a partir das suas regras de reserva.

  • Estorno total

    Um cancelamento gratuito devolve todo o valor capturado ao meio que o viajante usou para pagar.

  • Estorno parcial

    Após uma taxa de cancelamento, o servidor estorna apenas o saldo. O valor é enviado em paise, como o pedido original.

  • Parte de um itinerário

    Cancele uma diária de hotel ou um passageiro e estorne essa parte; novos estornos parciais podem seguir até o total capturado.

  • refund.processed

    O webhook de estorno avisa o seu servidor quando o estorno foi concluído, para que a reserva e o viajante vejam o status correto.

  • Guardado junto à reserva

    Cada ID de estorno é mantido com a referência da reserva e o payment_id original para a sua equipe financeira.

  • Exemplo: cancelamento com taxa

    Capturado
    ₹12,500.00 amount: 1250000
    Taxa de cancelamento
    ₹1,500.00 amount: 150000
    Valor do estorno
    ₹11,000.00 amount: 1100000

    Valores apenas de exemplo. O Razorpay recebe valores na menor unidade da moeda, então 100 paise equivalem a uma rupia.

Como conectar o Razorpay

Três formas de receber pagamentos com ou sem o Razorpay

Escolha o caminho que combina com a sua equipe e a sua data de lançamento. Os três mantêm o dinheiro na sua própria conta de lojista; o PHPTRAVELS nunca participa da liquidação.

  1. Opção 1

    Seus desenvolvedores adicionam

    O PHPTRAVELS vem com o código-fonte completo, então os seus próprios desenvolvedores podem adicionar o Razorpay como um novo gateway ao lado dos existentes: criação do pedido, Checkout na etapa de pagamento, verificação de assinatura, captura, webhooks e estornos.

    • Desenvolva e teste com chaves do modo de teste do Razorpay
    • Reutilize a referência da reserva como receipt do pedido
    • Passe para as chaves reais quando as reservas de teste passarem
  2. Opção 2

    O PHPTRAVELS desenvolve

    Nossos desenvolvedores podem criar o conector do Razorpay para você como Integração de API personalizada. Você envia os requisitos, recebe o custo e o prazo antes do início do trabalho e, no final, o código-fonte testado.

    • Orçamento antes de começar o trabalho
    • Desenvolvido sobre o modo de teste do Razorpay
    • Entregue como código-fonte que é seu
  3. Opção 3

    Use agora um gateway pronto

    Se precisa lançar primeiro, ative um gateway que já está na plataforma. Para a Índia, é o Cashfree. Os gateways prontos hoje incluem:

Gateways prontos

Gateways de pagamento que você pode ativar hoje

Esta lista vem ao vivo do diretório de gateways do PHPTRAVELS. Cada um é ativado no painel com a sua própria conta e chaves.

Quer entender as chamadas por trás de qualquer um deles? Leia o guia de API de gateway de pagamento, compare os guias de Pagamentos com Stripe e Pagamentos com PayPal ou veja como os agentes pagam com uma Carteira B2B para agentes no portal B2B.

Perguntas sobre o Razorpay

Razorpay e PHPTRAVELS, respondido

Fale com vendas

Não como conector pronto. O Razorpay não está na lista de gateways do PHPTRAVELS hoje, então você não pode ativá-lo no painel. Como o código-fonte completo está incluído, ele pode ser adicionado como integração de gateway de pagamento personalizada, pelos seus desenvolvedores ou pelos nossos.

O Cashfree é um gateway pronto no PHPTRAVELS e tem um guia de configuração em docs.phptravels.com/payments/cashfree. Você o ativa no painel com a sua própria conta Cashfree. Outros gateways prontos, como Stripe e PayPal, estão listados na página de gateways de pagamento.

O Razorpay aceita cartões, UPI, netbanking e carteiras para pagamentos em rupias indianas. Quais meios aparecem no checkout depende do que está ativado na sua própria conta Razorpay.

O Razorpay recebe valores na menor unidade da moeda, então o total da reserva em rupias é multiplicado por 100 antes de o pedido ser criado. O valor de um estorno é enviado da mesma forma.

O Checkout devolve um ID de pagamento, o ID do pedido e uma assinatura. Seu servidor calcula um HMAC SHA256 do ID do pedido e do ID do pagamento com a sua Key Secret e só aceita o pagamento se o resultado for igual à assinatura.

A captura automática é mais simples. A captura manual permite capturar só depois que a companhia aérea, o hotel ou o fornecedor do passeio confirmar a reserva, de modo que uma reserva que falhou possa ser liberada em vez de estornada. A escolha depende dos seus produtos e fornecedores.

Sim. A Refunds API do Razorpay permite estornos totais e parciais, então uma taxa de cancelamento pode ser retida e o saldo devolvido. O webhook refund.processed avisa o seu servidor quando o estorno termina.

Sim. A conta de lojista, a Key ID e a Key Secret e a liquidação são suas. O PHPTRAVELS nunca fornece credenciais de gateway e nunca manipula o seu dinheiro. Desenvolva com chaves do modo de teste e passe para as chaves reais quando for ao ar.

Depende do escopo de que você precisa, como checkout, captura manual, estornos e pagamentos de agentes. O PHPTRAVELS faz o orçamento do trabalho personalizado antes de começar. A plataforma em si é uma licença única a partir .