Voltar

VibeFox Flutterwave for OpenCart — Ajuda

Requisitos

OpenCart: 3.0.x (testado na versão 3.0.5.0) ou 4.0.2 e superior (testado na versão 4.1.0.3).

PHP: 8.0 ou superior.

Conta no Flutterwave: você precisa das chaves secretas da sua conta no Flutterwave, no painel do Flutterwave em Settings, API keys: FLWSECK_TEST-… para o modo de teste e FLWSECK-… para o modo real. Somente as chaves secretas são usadas. As chaves públicas e de criptografia não são necessárias. Você também configura um webhook com um hash secreto de sua escolha (veja Configuração).

Moedas: o pedido é sempre cobrado na moeda do pedido. A extensão não restringe países ou moedas por conta própria; o Flutterwave mostra um erro se a sua conta não aceitar a moeda. Você pode limitar onde o Flutterwave é oferecido com Geo Zone e Total.

Chave de licença do VibeFox: comprada em vibefox.net. Uma chave funciona em um único domínio.

Instalação

O download é um único arquivo zip com os pacotes para as duas versões do OpenCart. Descompacte-o no seu computador. Ele contém o README.txt, o pacote do OpenCart 3 wcp_flutterwave_payment-oc3-(version).ocmod.zip e o pacote do OpenCart 4 wcp_flutterwave_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_flutterwave_payment-oc3-(version).ocmod.zip. A extensão não tem 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 Flutterwave Payment e clique em Install (o botão verde +). Seu usuário administrador precisa ter o direito de modificar a lista de extensões de pagamento.

3. Clique em Edit (o botão de lápis) para abrir a página de configurações. Cole sua chave de licença do 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 suas chaves secretas, configure o webhook no painel do Flutterwave e informe o mesmo hash secreto na extensão (veja Configuração).

5. Ative Enable/Disable e clique em Save. Faça um teste de pagamento no modo de teste e depois ative Live mode.

OpenCart 4

1. No painel administrativo, acesse Extensions > Installer, clique em Upload e escolha o arquivo wcp_flutterwave_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. Localize VibeFox Flutterwave 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 secretas e o webhook como nos passos 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 no modo de teste.

Configuração

Todas as configurações estão na página da extensão: Extensions > Extensions > Payments > VibeFox Flutterwave Payment > Edit. As seções são listadas à esquerda; o botão Save abaixo da lista salva a página inteira. Acima das configurações, a página mostra Live mode: real payments are accepted. ou Test mode: no real money is charged. Ela avisa quando a chave secreta do modo atual está vazia, quando o campo da chave real contém uma chave de teste (FLWSECK_TEST-…) no modo real, ou quando o campo da chave de teste contém uma chave real (FLWSECK-…) no modo de teste; nesse caso o método de pagamento fica oculto na finalização de compra até que o problema seja corrigido. Ela também avisa quando nenhum hash secreto de webhook está definido: os webhooks são então rejeitados e os pagamentos só são confirmados quando o cliente volta à sua loja. Sem o direito de modificar a extensão, a página mostra as configurações, mas não consegue salvá-las.

Ao salvar, Title deve ter de 1 a 128 caracteres, Sort Order deve estar vazio ou ser um número inteiro, Total deve estar vazio ou ser um número igual ou maior que 0, e a zona geográfica e os status de pedido selecionados precisam existir. Caso contrário, nada é salvo e a página mostra o que corrigir. Problemas com as chaves não impedem o salvamento.

Flutterwave

Enable/Disable: Enable Flutterwave Payment ativa ou desativa o método de pagamento. Padrão: desativado.

Title: o título do método de pagamento que os clientes veem na finalização de compra. Ele também é o nome do método de pagamento salvo no pedido. Padrão: Flutterwave. Obrigatório, até 128 caracteres.

Description: a descrição do método de pagamento exibida na etapa Confirm Order, acima do botão de confirmação. Padrão: Pay securely via Card, Bank Transfer, USSD, Mobile Money via Flutterwave.

Sort Order: a posição do Flutterwave entre os métodos de pagamento na finalização de compra. Deixe em branco ou informe um número inteiro.

Geo Zone: oferecer o Flutterwave somente 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 compra, na moeda padrão da loja, que um pedido precisa atingir para que o Flutterwave seja oferecido. Deixe em branco para oferecer o Flutterwave em qualquer total.

Chaves de API

Copie as chaves secretas do painel do Flutterwave, em Settings, API keys (a seção tem um link). O modo de teste e o modo real têm chaves diferentes.

Live mode: aceita pagamentos reais. Desative-o para o modo de teste. O modo de teste usa a chave secreta de teste e nenhum dinheiro real é cobrado. O modo real usa a chave secreta real. Padrão: desativado (modo de teste). Enquanto o modo de teste estiver ativo, os clientes veem TEST MODE - no real payments will be processed. na etapa Confirm Order.

Test Secret Key: sua chave secreta de teste do Flutterwave (FLWSECK_TEST-...).

Live Secret Key: sua chave secreta real do Flutterwave (FLWSECK-...).

As chaves salvas e o hash secreto nunca são exibidos novamente. O campo fica vazio e mostra Saved — leave empty to keep it. Digite um novo valor somente se quiser alterá-lo. Para remover um valor salvo, marque Clear the saved value abaixo do campo e clique em Save.

Webhook

O webhook confirma os pagamentos mesmo quando o cliente não volta à sua loja. No painel do Flutterwave, em Settings, Webhooks, informe a URL exibida em Webhook URL nesta seção e um hash secreto de sua escolha, tanto no modo de teste quanto no modo real. No OpenCart 3, a URL tem esta aparência: https://your-store/index.php?route=extension/payment/wcp_flutterwave_payment/webhook; no OpenCart 4, ela tem esta aparência: https://your-store/index.php?route=extension/wcp_flutterwave_payment/payment/wcp_flutterwave_payment.webhook. Ela é formada a partir do endereço da sua loja. Ela precisa estar acessível pela internet via HTTPS. Copie a URL exatamente como as configurações a mostram. A extensão reage a este evento:

charge.completed: uma cobrança foi concluída. A extensão consulta novamente a transação no Flutterwave com a chave secreta do modo em que o pagamento foi feito e aplica o resultado.

Os demais eventos são ignorados.

Secret Hash: o hash secreto do webhook. Ele precisa corresponder ao valor das configurações de webhook do seu painel do Flutterwave. O Flutterwave o envia com cada webhook, e o mesmo valor é usado para o modo de teste e o modo real. Webhooks sem um hash secreto válido são rejeitados. Sem o webhook, um pagamento só é confirmado quando o cliente volta à sua loja.

Pagamento

Payment Options: métodos de pagamento separados por vírgula a serem exibidos na página do Flutterwave, por exemplo card, banktransfer, ussd, mobilemoney. Deixe em branco para exibir todos os métodos habilitados na sua conta. A lista é organizada ao salvar (minúsculas, sem duplicatas).

Autocomplete Orders: pedidos pagos recebem o Complete Order Status em vez do Paid Order Status. Padrão: desativado.

Pedidos

O OpenCart cria o pedido na etapa Confirm Order sem status (um pedido ausente). Ele só recebe um status depois que o Flutterwave confirma o pagamento pela API. Cada campo abaixo lista os seus status de pedido do OpenCart.

Paid Order Status: o status após um pagamento confirmado. Padrão: Processando.

Complete Order Status: o status após um pagamento confirmado quando Autocomplete Orders está ativado. Padrão: Completo.

Awaiting Payment Status: o cliente voltou enquanto o pagamento ainda estava pendente no Flutterwave (transferência bancária, USSD, dinheiro móvel). O pedido mantém este status até que o webhook o confirme. Padrão: Pendente.

On Hold (Review) Status: pagamentos cujo valor ou moeda não correspondem ao pedido, ou que chegam depois que o pedido foi cancelado, recebem este status e uma nota explicando o motivo. Padrão: Pendente, porque o OpenCart não tem o status On hold. Você pode criar um status próprio em System > Localisation > Order Statuses e selecioná-lo aqui.

Failed Status: um pagamento pendente de um pedido em espera falhou no Flutterwave. Padrão: Falhou.

Refunded Status: definido após o pagamento ser totalmente reembolsado pela página do pedido. Padrão: Reembolsado.

Avançado

Debug log: registra os eventos da API do Flutterwave para depuração em flwv_debug.log.php, na pasta de logs do OpenCart (storage/logs). O arquivo não pode ser aberto pela web e, ao atingir 5 MB, é movido para flwv_debug.old.log.php. Erros e avisos são sempre registrados. Chaves, o hash secreto e dados dos clientes 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: ao desinstalar a extensão, remove suas configurações e logs. Os dados de pagamento salvos nos pedidos são sempre mantidos. Padrão: desativado.

Importar / Exportar

Export: Download JSON salva as configurações em um arquivo JSON. As chaves secretas e o hash secreto não são exportados.

Import: cole um JSON exportado anteriormente e clique em Import para restaurar as configurações. As chaves salvas e o hash secreto são mantidos.

Finalização de compra

Na etapa Payment Method, o cliente escolhe o método de pagamento (por padrão, Flutterwave). Na etapa Confirm Order, o cliente vê a sua descrição e a nota You will be redirected to the Flutterwave checkout page. O OpenCart cria o pedido nessa etapa, ainda sem status. No OpenCart 4, o cliente escolhe o método de pagamento pelo botão Choose do bloco do método de pagamento, na janela Payment method options, e clica em Confirm Order na parte inferior da página de finalização de compra. Quando o cliente clica em Confirm Order, a extensão cria um pagamento do Flutterwave pelo total do pedido na moeda do pedido, com o e-mail do cliente, o telefone e o nome do endereço de pagamento, o nome e o logotipo da sua loja e Payment for order seguido do número do pedido, e envia o cliente para a página de checkout do Flutterwave. É necessário um e-mail válido. Lá, o cliente paga com um dos métodos habilitados na sua conta (ou com os listados em Payment Options).

Depois de pagar, o cliente volta à sua loja. O pedido só é marcado como pago quando o Flutterwave o confirma: pelo webhook ou por uma verificação no servidor quando o cliente retorna. Em seguida, o pedido recebe seu 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 o pagamento ainda estiver pendente, por exemplo uma transferência bancária, um pagamento USSD ou dinheiro móvel, o pedido recebe Awaiting Payment Status e a página também mostra Your payment is being confirmed by Flutterwave. You will receive an e-mail as soon as it is confirmed. Quando o Flutterwave confirma o pagamento, o pedido passa para o status de pago e o cliente é notificado por e-mail. Se o pedido foi colocado em análise, por exemplo porque o valor pago não corresponde ao pedido, a página mostra Your payment was received and your order is being reviewed. We will contact you if anything is needed. Se um pagamento pendente falhar depois e o cliente voltar ao pedido, a página mostra Your Flutterwave payment was not completed. Please contact us about this order.

Se o Flutterwave não puder ser acessado quando o cliente voltar, uma página Payment confirmation diz Your payment is being confirmed by Flutterwave. Your order will be confirmed as soon as Flutterwave confirms it — please do not pay again. com os botões Check again e Back to checkout. O webhook define o status do pedido assim que chega.

Se o pagamento for recusado, o cliente volta à finalização de compra com Your payment was declined. You can try again or choose another payment method. Se o cliente cancelar na página do Flutterwave, a mensagem é Payment was cancelled. You can try again or choose another payment method. Se o pagamento não foi concluído, a mensagem é The payment was not completed. You can try again or choose another payment method. Se o pagamento não pôde ser verificado, a mensagem é Payment verification failed. Please contact support. O pedido permanece sem status e o carrinho é mantido, para que o cliente possa pagar novamente. No OpenCart 4, essas mensagens são exibidas acima da página de finalização de compra.

O OpenCart 3 cria um novo pedido sempre que a etapa Confirm Order é exibida; o OpenCart 4 atualiza o pedido da finalização de compra, por isso uma nova tentativa paga o mesmo pedido. Cada tentativa recebe sua própria referência. Antes de um novo pagamento, os pagamentos abertos e pendentes deste pedido e de outros pedidos do mesmo carrinho das últimas 24 horas são verificados no Flutterwave. Se algum estiver pago, ele confirma o seu pedido e o cliente vai para a página de sucesso em vez de pagar novamente. Se outro pedido do mesmo carrinho já tiver sido pago com o Flutterwave, também não é iniciado um novo pagamento. Um link de pagamento antigo que seja pago depois ainda é aceito. Se o mesmo carrinho for pago duas vezes, por exemplo em duas abas do navegador, somente o primeiro pagamento define o status do seu pedido: o outro pedido fica sem status, e o pedido pago recebe uma nota pedindo que você reembolse o segundo pagamento no painel do Flutterwave.

O OpenCart 4 mantém o pedido na finalização de compra até que a página de sucesso seja exibida. Se esse pedido foi fechado sem pagamento nesse meio tempo (por exemplo, porque o pagamento pendente dele falhou ou você o cancelou), o cliente volta à finalização de compra com a mensagem sobre o pagamento recusado, e o próximo Confirm Order paga um novo pedido do carrinho. Se você fechou o pedido depois de pago, a mensagem é This order can no longer be paid (it was closed by the store). Please confirm your order again. Se esse pedido já estiver pago, mas o carrinho mudou desde então, incluindo uma nova quantidade, a mensagem é Your previous order is already paid. Please confirm the order again: the cart will be paid with a new order. Um pedido pago nunca é exibido como pago para um carrinho diferente.

Se o Flutterwave não conseguir iniciar o pagamento, o cliente permanece na etapa Confirm Order com uma mensagem curta, por exemplo Flutterwave is temporarily unavailable. Please try again in a moment or choose another payment method. O motivo técnico é gravado no log.

O webhook e a URL de retorno também funcionam enquanto a loja está em modo de manutenção, porque o OpenCart 3 deixa passar as requisições das extensões de pagamento, e no OpenCart 4 a extensão adiciona para elas uma ação de inicialização (startup action).

A extensão aceita apenas pagamentos únicos. Não há checkout embutido ou em modal no seu site, nem cartões salvos, assinaturas, pagamentos divididos ou planos de pagamento. Links de pagamento hospedados não podem ser cancelados pela API do Flutterwave, então um link antigo ainda pode ser pago.

Pedidos e reembolsos

Status do pedido

Sem status (missing order): o cliente foi enviado ao Flutterwave e não pagou, o pagamento foi recusado ou cancelado, ou o Flutterwave ainda não confirmou o pagamento. Em Sales > Orders, esses pedidos só aparecem com o filtro Order Status definido como Missing Orders.

Paid Order Status (padrão Processando) ou Complete Order Status (padrão Completo): o pagamento foi confirmado. O Complete Order Status é usado quando Autocomplete Orders está ativado. Uma nota mostra o valor, o método de pagamento, a referência do Flutterwave, a transação e o modo.

Awaiting Payment Status (padrão Pendente): o cliente voltou enquanto o pagamento ainda estava pendente no Flutterwave. O pedido passa para o status de pago quando o Flutterwave confirma o pagamento.

On Hold (Review) Status (padrão Pendente): o valor ou a moeda verificados não correspondiam ao pedido, ou o pagamento chegou depois que o pedido recebeu um status sem pagamento, por exemplo Cancelado. O valor e a moeda realmente pagos são registrados, e a nota explica isso. Atenda o pedido ou reembolse o pagamento. Se o pedido já tinha outro status de processamento, apenas uma nota é adicionada.

Failed Status (padrão Falhou): o Flutterwave informou que a última tentativa de pagamento de um pedido em espera falhou ou foi cancelada. A nota mostra o motivo. Tentativas anteriores e pedidos pagos não são alterados.

Refunded Status (padrão Reembolsado): o pagamento foi totalmente reembolsado pela extensão.

Se um segundo pagamento for recebido para um pedido que já está pago, o pedido não é alterado. Uma nota pede que você reembolse a duplicata no painel do Flutterwave.

As notas são entradas do History do pedido que o cliente não vê.

Aba VibeFox Flutterwave Payment

Em Sales > Orders, abra um pedido pago com o Flutterwave. Na parte inferior da página do pedido, ao lado de History e Additional, a aba VibeFox Flutterwave Payment mostra a Transaction reference, o Mode (Test ou Live), o Status do pagamento, o Transaction ID, a Flutterwave reference, o Payment type, os valores Paid / refunded, o formulário de reembolso, o histórico de reembolsos e as Flutterwave notes do pedido. A aba é mostrada aos usuários que têm acesso à extensão.

Reembolsos

Na aba, informe o Amount (o valor ainda não reembolsado é preenchido), opcionalmente um Reason (optional), e clique em Refund via Flutterwave. Confirme a pergunta Refund this amount through Flutterwave? This cannot be undone. São aceitos reembolsos totais e parciais. Você precisa do direito de modificar a extensão (definido em System > Users > User Groups). Os reembolsos são feitos no valor e na moeda cobrados pelo Flutterwave, então, após uma divergência de valor ou moeda, você pode reembolsar até o que o cliente realmente pagou, e não o total do pedido. O reembolso é enviado com a chave secreta do modo em que o pagamento foi feito (teste ou real), por isso essa chave precisa estar configurada. Se o Flutterwave recusar o reembolso, a aba mostra o erro e nenhum reembolso é registrado. Um reembolso bem-sucedido é adicionado ao histórico de reembolsos e às notas, com o ID do reembolso e o status (concluído, ou iniciado com o status informado pelo Flutterwave). Um reembolso total define o Refunded Status no pedido sem notificar o cliente e sem devolver os produtos ao estoque, como uma alteração manual de status. Um reembolso parcial não altera o status. Os reembolsos ficam disponíveis assim que o Flutterwave confirma o pagamento.

As devoluções de produtos em Sales > Returns não devolvem dinheiro pelo Flutterwave. Os reembolsos feitos no painel do Flutterwave não são sincronizados de volta com o OpenCart. Se necessário, atualize o status do pedido manualmente.

Chave de licença

A extensão funciona com uma chave de licença do VibeFox obtida em vibefox.net. O bloco de licença License — VibeFox Flutterwave Payment é o primeiro bloco de Extensions > Extensions > Payments > VibeFox Flutterwave 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 ficam a linha Product: opencart-payment-flutterwave e o link Manage licenses and domains in your account, que abre a sua conta no vibefox.net. Somente usuários administradores com a permissão Modify sobre a extensão podem alterar a chave. Os textos do bloco seguem o idioma do painel administrativo (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 de alterar o endereço da loja, ou depois de 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 único domínio: o endereço da loja na configuração do OpenCart. Remover a chave da loja não libera a vaga de domínio. Libere a vaga na sua conta do vibefox.net.

Sem uma chave ativa, o Flutterwave não é mostrado 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 painel no mesmo navegador continua vendo 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é-visualização não está disponível: a loja não enxerga o login do administrador, 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 painel. Feche-o com × para ocultá-lo por 7 dias. Os pedidos existentes não são afetados: pagamentos já iniciados continuam sendo confirmados, e os reembolsos funcionam.

Quando uma licença expira, a extensão continua funcionando, mas atualizações e suporte exigem a renovação. O status é verificado novamente automaticamente quando você abre o Dashboard do painel ou a página Edit: uma vez por dia nos primeiros 14 dias após a chave ser informada, depois uma vez por semana. Não é necessário um cron job. Desinstalar a extensão sempre remove a chave de licença e o status da licença.

Solução de problemas

O Flutterwave não aparece na finalização de compra: verifique se a licença está ativa, se Enable/Disable está ativado e se a chave secreta do modo atual está preenchida e corresponde ao modo: uma chave de teste (FLWSECK_TEST-…) no modo de teste, uma chave real (FLWSECK-…) no modo real. A página de configurações mostra um aviso caso contrário. 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 feito, mas o pedido continua sem status: o webhook não está funcionando. No painel do Flutterwave, verifique se a URL do webhook é exatamente a exibida em Webhook URL, no modo que você usa (teste ou real), e se o hash secreto dela é igual ao Secret Hash na extensão. Transferências bancárias, USSD e dinheiro móvel pendentes continuam pendentes até que o Flutterwave os confirme. O pedido também recebe seu status quando o cliente volta à loja depois de pagar. Ative o Debug log e consulte o campo Log na página da extensão.

O webhook responde Invalid hash ou Secret hash not configured: o hash secreto no painel do Flutterwave é diferente do da extensão, ou a extensão não tem nenhum. Informe o mesmo valor nos dois lugares.

O webhook responde Verification failed, Busy, retry later ou Order could not be updated, retry later: não foi possível contatar o Flutterwave para verificar o pagamento, a transação ainda não está visível, o pedido estava sendo processado por outra requisição, ou seu status não pôde ser definido. O Flutterwave repete o webhook. O log mostra o motivo.

A URL do webhook mostra Empty body no navegador: isso é normal. A URL aceita apenas webhooks do Flutterwave.

O cliente vê Payment gateway is not properly configured: a chave secreta do modo atual está ausente ou pertence ao outro modo.

O cliente vê This payment method is not available: a sessão da finalização de compra não corresponde mais ao pedido, ou o método de pagamento foi desativado nesse meio tempo. O cliente recarrega a finalização de compra.

O cliente vê We could not match this payment to an order: o link de retorno não pertence a um pagamento deste pedido. Se o cliente foi cobrado, procure o pagamento no painel do Flutterwave.

O Flutterwave mostra um erro na página dele, ou o cliente vê Flutterwave could not start the payment: a sua conta no Flutterwave pode não aceitar a moeda do pedido ou as opções de pagamento selecionadas.

O pedido está no status de retenção após o pagamento: leia as notas na aba VibeFox Flutterwave Payment (veja Status do pedido) e depois atenda o pedido ou reembolse o pagamento.

Não há formulário de reembolso na aba: a aba informa o motivo: o pagamento ainda não foi confirmado, está totalmente reembolsado, seu grupo de usuários não tem o direito de modificar a extensão, ou a chave secreta do modo do pagamento não está configurada.

O reembolso falha com uma mensagem sobre o modo: o pagamento foi feito no modo de teste ou real, e a chave secreta desse modo não está configurada. Informe-a e tente novamente.

O reembolso responde Another operation on this payment is running: outro reembolso do mesmo pedido estava sendo enviado naquele momento. Aguarde um instante, confira o histórico de reembolsos e tente novamente, se necessário.

Para desenvolvedores, a extensão dispara os eventos do OpenCart flwv_payment_request (dados enviados ao Flutterwave) e flwv_currency_decimals (precisão da moeda).

Desinstalação

Acesse Extensions > Extensions, escolha o tipo Payments e clique em Uninstall (o botão vermelho −) ao lado de VibeFox Flutterwave Payment. A chave de licença e o status de 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 valores padrão em uma nova instalação. O evento do OpenCart da extensão também é removido (no OpenCart 4, os seus eventos e a sua ação de inicialização, que deixa passar o webhook e a URL de retorno no modo de manutenção). Se Delete data on uninstall estiver ativado, as demais configurações (título, descrição, modo, chaves, hash secreto, opções de pagamento, preenchimento automático, chave do debug log) e o log são removidos. Se estiver desativado, elas são mantidas para uma reinstalação posterior. Os registros de pagamentos e reembolsos do Flutterwave são sempre mantidos, de modo que pedidos pagos antes ainda podem ser 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 após a desinstalação, clique em Uninstall (o botão laranja −) ao lado de VibeFox Flutterwave Payment na lista de extensões instaladas e, em seguida, em Delete (o botão vermelho com a lixeira) para remover o pacote enviado.

Flutterwave é uma marca registrada de seu respectivo proprietário. Esta extensão não é afiliada nem endossada pelo Flutterwave.