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.

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
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
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.
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
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
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:
- CashfreeGuia de configuração do Cashfree
- Stripe
- PayPal
- xMoney
- Fawaterk
- Paystack
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.
Cashfree
StripeGuia de integraçãoPayPalGuia de integração
xMoney
Fawaterk
Paystack
Flutterwave
Adyen
MyFatoorah
SSLcommerz
Razorpay- Todas as integrações
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.
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 .
Continue a explorar
Mais sobre a plataforma
- Integração de gateways de pagamentoCheckout, 3D Secure, reembolsos e webhooks
- API de gateway de pagamentoComo pagamentos com cartão, 3-D Secure, capturas e estornos funcionam via API
- Integração de API personalizadaConecte qualquer API de fornecedor ou parceiro ao PHPTRAVELS
- Pagamentos com StripeCheckout com cartão e carteira, reembolsos e repasses
- Pagamentos com PayPalCheckout com PayPal para voos, hotéis e passeios
- Carteira B2B para agentesDepósitos, limites de crédito e um razão por agente
