VibeFox Razorpay for OpenCart — Ajuda
Requisitos
OpenCart: 3.0.x (testado na versão 3.0.5.0) ou 4.0.2 ou superior (testado na versão 4.1.0.3).
PHP: 8.0 ou posterior.
Conta Razorpay: você precisa do Key ID e do Key Secret da sua conta Razorpay para o modo de teste e, para o modo de produção, assim que sua conta estiver ativada. Recomendamos fortemente um webhook com um segredo de sua escolha (veja Configuração). Pagamentos em moedas diferentes de INR exigem que International Payments esteja ativado na sua conta Razorpay.
Chave de licença VibeFox: comprada em vibefox.net. Uma chave funciona em um domínio.
Instalação
O download é um único arquivo zip com os pacotes das duas versões do OpenCart. Descompacte-o no seu computador. Ele contém o README.txt, o pacote do OpenCart 3, wcp_razorpay_payment-oc3-(version).ocmod.zip, e o pacote do OpenCart 4, wcp_razorpay_payment.ocmod.zip. Instale somente o pacote da sua versão do OpenCart. A chave de licença é a mesma para as duas versões.
OpenCart 3
1. No painel administrativo, acesse Extensions > Installer, clique em Upload e escolha o arquivo wcp_razorpay_payment-oc3-(version).ocmod.zip. A extensão não possui modificações OCMOD, portanto Extensions > Modifications não precisa ser atualizado. Em vez do instalador, você também pode copiar o conteúdo da pasta upload deste pacote para a pasta raiz da sua loja.
2. Acesse Extensions > Extensions e escolha o tipo Payments. Localize VibeFox Razorpay Payment e clique em Install (o botão verde +). Seu usuário administrador precisa ter permissão para modificar a lista de extensões de pagamento.
3. Clique em Edit (o botão com o lápis) para abrir a página de configurações. Cole sua chave de licença VibeFox em License key, no bloco de licença no topo da página, e clique em Activate (veja Chave de licença).
4. Informe seu Test Key ID e seu Test Key Secret, configure o webhook no Razorpay Dashboard e informe o segredo dele (veja Configuração).
5. Ative Enable/Disable e clique em Save. Faça um pagamento de teste com Test mode ativado. Quando estiver pronto, informe as chaves Live e desative Test mode.
OpenCart 4
1. No painel administrativo, acesse Extensions > Installer, clique em Upload e escolha o arquivo wcp_razorpay_payment.ocmod.zip. Não renomeie o arquivo: o OpenCart 4 obtém o código da extensão a partir do nome do arquivo, e um pacote renomeado não funciona.
2. O pacote aparece na lista de extensões instaladas, na mesma página. Clique em Install (o botão verde +) ao lado dele.
3. Acesse Extensions > Extensions e escolha o tipo Payments. Encontre VibeFox Razorpay Payment, clique em Install (o botão verde +) e depois em Edit (o botão de lápis).
4. Informe a chave de licença, as chaves do Razorpay e o webhook como nas etapas 3 a 5 do OpenCart 3. A página de configurações e os seus campos são iguais nas duas versões. Só a URL do webhook é diferente (veja Webhook).
Uma nova instalação começa com o método de pagamento desativado e o modo de teste ativado.
Configuração
Todas as configurações ficam na página da extensão: Extensions > Extensions > Payments > VibeFox Razorpay Payment > Edit. As seções aparecem listadas à esquerda; o botão Save abaixo da lista salva a página inteira. Sem a permissão para modificar a extensão, a página mostra as configurações, mas não consegue salvá-las.
Acima das configurações, a página explica que o pedido só recebe um status depois que o pagamento é verificado com o Razorpay, e exibe avisos: as chaves do modo atual estão ausentes (nesse caso o Razorpay não aparece na finalização de compra), o Key ID não começa com rzp_test_ no modo de teste ou com rzp_live_ no modo de produção, o modo de teste está ativado, o segredo do webhook está vazio ou a moeda padrão da loja não é INR e exige International Payments na sua conta Razorpay. Os avisos são atualizados após cada salvamento.
Ao salvar, Title precisa ter de 1 a 128 caracteres (Enter a title for the payment method (1 to 128 characters).), Sort Order precisa ser um número inteiro (números negativos são permitidos), Total precisa ser um número igual ou maior que 0, e a zona geográfica e cada status de pedido precisam existir. Caso contrário, nada é salvo. Os espaços colados junto com os Key IDs são removidos.
Razorpay
Enable/Disable: Enable Razorpay Payment Gateway ativa ou desativa o método de pagamento. Padrão: desativado.
Title: o nome do método de pagamento que o cliente vê na finalização de compra. Ele também é o nome do método de pagamento salvo no pedido. Padrão: UPI, Cards, NetBanking. Obrigatório, até 128 caracteres.
Description: o texto exibido ao cliente na etapa Confirm Order, acima do botão de confirmação. Padrão: Pay securely via UPI, Credit/Debit Card, or Internet Banking through Razorpay.
Sort Order: a posição do Razorpay entre os métodos de pagamento na finalização de compra. Deixe em branco ou informe um número inteiro.
Geo Zone: oferecer o Razorpay apenas para endereços de pagamento na zona geográfica selecionada. Padrão: All zones. As zonas geográficas são configuradas em System > Localisation > Geo Zones.
Total: o total da finalização de compra, na moeda padrão da loja, que um pedido precisa atingir para que o Razorpay seja oferecido: um número igual ou maior que 0. Deixe em branco para oferecer o Razorpay em qualquer valor total.
Chaves de API
Obtenha suas chaves no Razorpay Dashboard, em Account & Settings > API Keys (a página tem um link para lá). Mude o Dashboard para o modo de teste para gerar as chaves de teste (rzp_test_...). As chaves de produção (rzp_live_...) ficam disponíveis após a ativação da sua conta.
Test mode: usa as chaves do modo de teste, portanto nenhum dinheiro real é cobrado. Padrão: ativado. Desative para receber pagamentos reais. Pagamentos, capturas e reembolsos de um pedido sempre usam as chaves do modo em que o pedido foi pago, então trocar o modo depois não afeta os pedidos existentes. Enquanto estiver ativado, os clientes veem Razorpay Test mode: no real money will be charged. na etapa Confirm Order e na página de pagamento.
Test Key ID: o Key ID do Razorpay Dashboard no modo de teste. Começa com rzp_test_.
Test Key Secret: o Key Secret do Razorpay Dashboard no modo de teste.
Live Key ID: o Key ID do Razorpay Dashboard no modo de produção. Começa com rzp_live_.
Live Key Secret: o Key Secret do Razorpay Dashboard no modo de produção.
Os segredos salvos nunca são exibidos novamente. O campo fica vazio e mostra Saved — leave empty to keep it. Informe um valor novo somente se quiser alterá-lo. Para remover um valor salvo, marque Clear the saved value on save abaixo do campo e clique em Save.
Pagamento
Payment Action: o momento em que o dinheiro é cobrado. Padrão: Authorize & Capture.
Webhook
O webhook confirma os pagamentos mesmo quando o cliente fecha o navegador logo após pagar, e registra os reembolsos feitos no Razorpay Dashboard. No Razorpay Dashboard, acesse Account & Settings > Webhooks e adicione um webhook no modo de teste e outro no modo de produção. Use a URL exibida em Webhook URL nesta seção. No OpenCart 3 ela tem a forma https://your-store/index.php?route=extension/payment/wcp_razorpay_payment/webhook; no OpenCart 4, https://your-store/index.php?route=extension/wcp_razorpay_payment/payment/wcp_razorpay_payment.webhook. Ela é montada a partir do endereço da loja da sua instalação do OpenCart. Copie-a exatamente como as configurações a mostram. Informe no Razorpay um segredo de sua escolha e selecione estes eventos (eles também estão listados nesta seção):
Webhook Secret: o segredo que você informou ao criar o webhook. Use o mesmo segredo para o webhook de teste e o de produção, pois a extensão tem um único campo para os dois. Webhooks sem uma assinatura válida são rejeitados. Sem o webhook, um pagamento só é confirmado quando o cliente volta do pop-up, ou quando o cliente inicia novamente o pagamento do mesmo carrinho mais tarde.
Pedidos
O OpenCart cria o pedido na etapa Confirm Order sem status (um pedido ausente). O pedido só recebe um status depois que o Razorpay confirma o pagamento. Um pagamento com falha ou abandonado deixa o pedido sem status, e o carrinho é mantido. O OpenCart não tem os status Authorized nem On hold, então você escolhe status existentes; as notas do pedido explicam o motivo. Cada campo abaixo lista os seus status de pedido do OpenCart.
Order Status After Payment: o pagamento foi capturado e o valor e a moeda coincidem. Padrão: Processando.
Authorized Status: Authorize Only: o dinheiro está reservado, ainda não capturado. Padrão: Pendente.
On Hold (Review) Status: revisão manual: o valor ou a moeda pagos diferem do total do pedido, chegou um pagamento para um pedido cancelado, ou a assinatura do pop-up era válida, mas o pagamento não pôde ser verificado pela API do Razorpay. Padrão: Pendente. Você pode criar seus próprios status em System > Localisation > Order Statuses e selecioná-los aqui.
Cancelled Status: a extensão nunca define este status. Ele serve apenas para indicar à extensão quais pedidos estão cancelados: um pagamento capturado depois para um desses pedidos o coloca em revisão em vez de reabri-lo; um pagamento autorizado apenas adiciona uma nota. Padrão: Cancelado.
Refunded Status: definido quando o pagamento é reembolsado integralmente, pela aba do pedido ou no Razorpay Dashboard. Padrão: Reembolsado.
Avançado
Enable Logging: o log é gravado em razorpay_p_debug.log.php, na pasta de logs do OpenCart (storage/logs). O arquivo não pode ser aberto pela web. Erros e avisos são sempre registrados; esta opção acrescenta os detalhes de depuração. Chaves, assinaturas e dados de contato do cliente nunca são registrados. Padrão: desativado.
Log: mostra o tamanho e as entradas mais recentes do log. Clique em Clear log para esvaziá-lo.
Delete Data on Uninstall: quando ativado, desinstalar a extensão remove as configurações do gateway e o log. Os pedidos e suas transações e reembolsos do Razorpay são sempre mantidos. Padrão: desativado.
Importar / Exportar
Export: Download JSON salva as configurações em um arquivo JSON. As chaves secretas não são exportadas.
Import: cole um JSON exportado anteriormente e clique em Import para restaurar as configurações. As chaves secretas salvas são mantidas.
Finalização de compra
Na etapa Payment Method, o cliente escolhe o método de pagamento (por padrão, UPI, Cards, NetBanking). Na etapa Confirm Order, o cliente vê sua descrição e a nota After "Confirm Order" the Razorpay Checkout window opens to pay securely (UPI, cards, NetBanking, wallets). O OpenCart cria o pedido nesta etapa, ainda sem status. Quando o cliente clica em Confirm Order, a extensão cria um pedido no Razorpay para o valor e a moeda exatos do pedido e abre a página Razorpay payment da sua loja. A janela do Razorpay Checkout abre automaticamente ali, com o nome, o e-mail e o telefone do cliente já preenchidos. No OpenCart 4, o cliente escolhe o método de pagamento com o botão Choose do bloco de métodos de pagamento, na janela Payment method options, e clica em Confirm Order na parte inferior da página de finalização de compra. O pagamento aparece no Razorpay como Order # seguido do número do pedido. Se a janela for fechada, o cliente pode clicar em Pay Now para abri-la novamente ou em Choose another payment method para voltar à finalização de compra. O carrinho é mantido.
Após um pagamento bem-sucedido, o cliente vê Please wait while we process your payment... A extensão verifica a assinatura do Razorpay, busca o pagamento na API do Razorpay e compara o valor e a moeda com o pedido. O pedido só é marcado como pago depois que o Razorpay confirma. Em seguida, ele recebe o status da forma padrão do OpenCart, com os e-mails habituais do pedido e a atualização do estoque, e o cliente vê a página de sucesso do pedido do OpenCart. Se a assinatura for válida, mas o pagamento não puder ser obtido naquele momento, o pedido recebe o On Hold (Review) Status e o webhook o confirma depois.
No OpenCart 3, um novo pedido é criado sempre que a etapa Confirm Order é exibida. No OpenCart 4, um único pedido é mantido para a finalização de compra e atualizado, então, depois que a janela é fechada ou após Choose another payment method, o cliente paga o mesmo pedido. Antes de um novo pagamento começar, a extensão verifica os pedidos Razorpay abertos do mesmo carrinho: um que já esteja pago, por exemplo porque o cliente fechou o navegador e não há webhook, é aplicado no lugar de pedir um segundo pagamento, e os demais deixam de ser oferecidos. Se o cliente pagar o mesmo pedido novamente, o pedido Razorpay dele é reaproveitado quando valor, moeda e modo não tiverem mudado; caso contrário, é criado um novo. Se o carrinho já estiver pago por outro pedido, o cliente vai direto para a página de sucesso.
Mensagens que o cliente pode ver:
No OpenCart 4, se o pedido da finalização de compra tiver sido fechado pela loja ou já estiver pago para outro carrinho (por exemplo, o carrinho mudou desde então, inclusive com uma nova quantidade), o cliente volta à finalização de compra com a mensagem Your previous order is already closed or paid. Please confirm the order again: the cart will be paid with a new order., e o próximo Confirm Order paga um novo pedido. No OpenCart 4, as mensagens que levam de volta à finalização de compra, como esta, Payment session not found. Please try again. e We could not verify your payment., são exibidas acima da página de finalização de compra.
O webhook também funciona enquanto a loja está em modo de manutenção: no OpenCart 3, as requisições das extensões de pagamento são liberadas, e no OpenCart 4 a extensão adiciona uma ação de inicialização para o webhook e para o resultado do pop-up.
A extensão aceita apenas pagamentos únicos. Não há assinaturas nem pagamentos recorrentes, nem cartões salvos, nem Razorpay Magic Checkout, Payment Links ou Route (pagamentos divididos), nem widgets de ofertas ou de parcelamento.
Pedidos e reembolsos
Status de pedido
Sem status (pedido ausente): o cliente não pagou, a tentativa de pagamento falhou ou o Razorpay ainda não confirmou o pagamento. Em Sales > Orders, esses pedidos aparecem apenas com o filtro Order Status definido como Missing Orders.
Order Status After Payment (padrão Processando): o pagamento foi capturado e confirmado. Uma nota mostra o ID do pagamento no Razorpay (pay_...), o valor e como ele foi confirmado (callback, webhook, sincronização ou administrador).
Authorized Status (padrão Pendente): o pagamento foi apenas autorizado (Authorize Only). Capture-o para concluir o pedido.
On Hold (Review) Status (padrão Pendente): definido nestes casos, cada um com uma nota: o valor ou a moeda pagos não correspondiam ao pedido, o pagamento foi capturado para um pedido cancelado, ou o pagamento não pôde ser verificado pela API do Razorpay naquele momento. Confira o pedido e então processe-o ou reembolse o pagamento.
Cancelled Status: um pagamento que chega depois para um pedido cancelado não o reabre automaticamente: um pagamento autorizado não é capturado e recebe apenas uma nota, e um pagamento capturado coloca o pedido em revisão. Uma notificação repetida do pagamento que já quitou o pedido não muda nada, mesmo que você tenha cancelado o pedido depois.
Refunded Status (padrão Reembolsado): o pagamento foi reembolsado integralmente.
Se chegar um pagamento adicional para um pedido já pago, o pedido não é alterado. Uma nota pede que você o reembolse no Razorpay Dashboard, caso isso não tenha sido intencional. Um pagamento tardio de um pedido mais antigo de um carrinho já pago deixa esse pedido antigo sem status, e o pedido pago recebe a nota. Um payment.failed tardio para um pedido pago apenas adiciona uma nota.
As notas são entradas do History do pedido que o cliente não vê.
Aba VibeFox Razorpay Payment
Em Sales > Orders, abra um pedido pago com o Razorpay. Na parte inferior da página do pedido, ao lado de History e Additional, a aba VibeFox Razorpay Payment mostra o Payment ID com o rótulo Test mode para pagamentos de teste, o Razorpay order, o Status do pagamento, Paid / refunded (o valor cobrado pelo Razorpay e o valor reembolsado), o botão de captura, o formulário de reembolso, o histórico de reembolsos e as Razorpay notes do pedido. A aba é exibida para usuários que têm acesso à extensão. Captura e reembolsos exigem a permissão para modificar a extensão (definida em System > Users > User Groups).
Captura (Authorize Only)
Abra o pedido no Authorized Status, clique em Capture Razorpay payment na aba e confirme Capture the authorized Razorpay payment? O pagamento é capturado no modo em que foi autorizado, e o pedido passa para Order Status After Payment, sem notificar o cliente e sem alterar o estoque, como em uma mudança manual de status. Se o Razorpay recusar, a aba e as notas mostram Razorpay capture failed: com o motivo. Uma captura feita no Razorpay Dashboard conclui o pedido pelo webhook.
Reembolsos
Na aba, informe o Amount (é preenchido o valor ainda não reembolsado), opcionalmente um Reason (optional), e clique em Refund via Razorpay. Confirme a pergunta Refund this amount through Razorpay? This cannot be undone. São suportados reembolsos integrais e parciais. Os reembolsos são feitos no valor e na moeda cobrados pelo Razorpay; portanto, após uma divergência de valor, você pode reembolsar até o que o cliente realmente pagou, e não o total do pedido. Um valor maior mostra Invalid refund amount: at most seguido do valor. O reembolso é enviado com as chaves do modo em que o pagamento foi feito. Se o Razorpay não aceitar o reembolso, a aba mostra Razorpay refund failed: com o motivo, e nenhum reembolso é registrado. Um reembolso bem-sucedido é adicionado ao histórico de reembolsos e às notas, com o ID do reembolso no Razorpay, o valor e o status. Um reembolso integral define o pedido como Refunded Status sem notificar o cliente e sem devolver produtos ao estoque. Um reembolso parcial não altera o status. Os reembolsos estão disponíveis depois que o pagamento é capturado.
Devoluções de produtos em Sales > Returns não devolvem dinheiro pelo Razorpay.
Reembolsos feitos no Razorpay Dashboard chegam pelo webhook e são registrados uma única vez no histórico de reembolsos (marcados como Razorpay Dashboard) e nas notas. Quando o pedido é reembolsado integralmente, seu status passa a ser Refunded Status. Um reembolso feito no Dashboard em outra moeda ou acima do valor reembolsável não é registrado automaticamente; uma nota pede que você o registre manualmente.
Chave de licença
A extensão funciona com uma chave de licença VibeFox obtida em vibefox.net. O bloco de licença License — VibeFox Razorpay Payment é o primeiro bloco de Extensions > Extensions > Payments > VibeFox Razorpay Payment > Edit, acima das configurações. Cole a chave em License key e clique em Activate. Depois disso, o bloco mostra a chave mascarada, o status (por exemplo, a data até a qual a licença está ativa e o seu domínio) e os botões Check now para verificar o status novamente, Change key para informar outra chave e Remove key para remover a chave desta loja. Abaixo deles estão a linha Product: opencart-payment-razorpay e o link Manage licenses and domains in your account, que abre a sua conta do vibefox.net. Apenas usuários administradores com a permissão Modify para a extensão podem alterar a chave. Os textos do bloco seguem o idioma do administrador (inglês e russo estão incluídos).
Se a chave não for aceita, o bloco informa o motivo, por exemplo Key not found, This key belongs to another product, Domain limit reached ou License expired on seguido de uma data. Depois que o endereço da loja mudar, ou depois que você liberar uma vaga de domínio na sua conta, clique em Check now. Se o servidor de licenças não puder ser acessado, a extensão continua funcionando com o último status conhecido.
Uma chave funciona em um domínio: o endereço da loja da configuração do OpenCart. Remover a chave da loja não libera a vaga de domínio. Libere-a na sua conta do vibefox.net.
Sem uma chave ativa, o Razorpay não é exibido aos clientes na finalização de compra. Se um pagamento for iniciado mesmo assim, o cliente vê This payment method is not available. Please choose another one. Um usuário administrador conectado ao administrativo no mesmo navegador ainda vê o método de pagamento na loja, marcado como (unlicensed — visible to admins only), para que você possa configurar e testar a extensão antes de comprar uma chave. No OpenCart 4 essa prévia não está disponível: a loja não vê o login no administrativo, então, sem uma chave ativa, o método de pagamento fica oculto para todos. Depois de abrir a página Edit uma vez, um lembrete aparece no Dashboard do administrativo. Feche-o com × para ocultá-lo por 7 dias. Os pedidos existentes não são afetados: pagamentos já iniciados continuam sendo confirmados, e capturas e reembolsos funcionam.
Quando uma licença expira, a extensão continua funcionando, mas atualizações e suporte exigem renovação. O status é verificado de novo automaticamente quando você abre o Dashboard ou a página Edit do administrativo: uma vez por dia nos primeiros 14 dias após a chave ser informada, depois uma vez por semana. Não é necessário nenhum cron job. Desinstalar a extensão sempre remove a chave de licença e o status da licença.
Solução de problemas
O Razorpay não aparece na finalização de compra: verifique se a licença está ativa, se Enable/Disable está ativado e se o modo atual tem as duas chaves: Test Key ID e Test Key Secret no modo de teste, Live Key ID e Live Key Secret no modo de produção. A página de configurações mostra um aviso quando elas estão ausentes. Verifique também se o endereço de pagamento está na Geo Zone selecionada e se o pedido atinge o Total definido nas configurações.
O pagamento foi aprovado, mas o pedido continua sem status: o webhook não está funcionando. No Razorpay Dashboard, verifique se o webhook existe no modo que você usa (Test ou Live), se a URL dele é exatamente a exibida em Webhook URL e se os cinco eventos estão selecionados. Confira se Webhook Secret é o mesmo segredo do Razorpay. O pedido também recebe o status quando o cliente volta do pop-up ou inicia novamente o pagamento do mesmo carrinho.
O webhook responde Webhook secret not configured: Webhook Secret está vazio. Informe o segredo do webhook do Razorpay. O Razorpay enviará o evento novamente mais tarde.
O webhook responde Invalid signature ou Missing signature: o segredo nas configurações é diferente do segredo do webhook do Razorpay. Informe o mesmo segredo nos dois lugares, para o webhook de teste e para o de produção.
O webhook responde Retry later: a extensão não conseguiu confirmar uma captura pela API do Razorpay, o status do pedido não pôde ser definido, ou o carrinho estava sendo atualizado por outra requisição naquele mesmo momento. O Razorpay reenvia o evento automaticamente. O motivo está no Log.
A URL do webhook mostra Method not allowed no navegador: isso é normal. A URL aceita apenas requisições do Razorpay.
Um pedido está no status de revisão: leia as notas na aba VibeFox Razorpay Payment. O valor ou a moeda não correspondiam ao pedido, o pagamento chegou para um pedido cancelado, ou ele não pôde ser verificado pela API do Razorpay naquele momento e aguarda o webhook.
O cliente vê um erro ao pagar: consulte o campo Log na página da extensão. Os erros são registrados mesmo com Enable Logging desativado. Chaves incorretas exibem a mensagem de que o método de pagamento não está disponível no momento. Outros motivos do Razorpay são exibidos após Razorpay could not accept this payment:.
O pop-up não abre: o script do Razorpay Checkout foi bloqueado por um bloqueador de conteúdo ou pela conexão. O cliente vê uma mensagem e pode recarregar a página.
Não há formulário de captura ou de reembolso na aba: a aba informa o motivo: o pagamento ainda não foi capturado, está reembolsado integralmente, seu grupo de usuários não tem permissão para modificar a extensão, ou as chaves do modo em que o pagamento foi feito não estão configuradas (The payment was made in Test mode, but the Test Key ID / Key Secret are not configured. ou o mesmo para o modo de produção). Informe as chaves desse modo e tente novamente.
Desinstalação
Acesse Extensions > Extensions, escolha o tipo Payments e clique em Uninstall (o botão vermelho −) ao lado de VibeFox Razorpay Payment. A chave de licença e o status da licença desta extensão são sempre removidos. O OpenCart sempre remove as próprias configurações da extensão: Enable/Disable, Sort Order, Geo Zone, Total e os status de pedido da seção Orders, que voltam aos padrões em uma reinstalação. No OpenCart 4, também são removidos os eventos da extensão e a sua ação de inicialização, que deixa o webhook passar no modo de manutenção. Se Delete Data on Uninstall estiver ativado, as demais configurações do gateway (título, descrição, modo de teste, chaves, ação de pagamento, segredo do webhook, registro) e o log são removidos. Se estiver desativado, elas são mantidas para uma reinstalação futura. As transações e os reembolsos do Razorpay são sempre mantidos, portanto pedidos pagos antes ainda podem ser capturados e reembolsados após uma reinstalação. Os pedidos existentes mantêm suas notas de pagamento.
No OpenCart 4, para remover também os arquivos da extensão, acesse Extensions > Installer depois da desinstalação e clique em Uninstall (o botão laranja −) ao lado de VibeFox Razorpay Payment na lista de extensões instaladas. Depois, clique em Delete (o botão vermelho com a lixeira) para remover o pacote enviado.
Razorpay é uma marca registrada de seu respectivo proprietário. Esta extensão não é afiliada nem endossada pelo Razorpay.
