Volver

VibeFox Flutterwave for OpenCart — Ayuda

Requisitos

OpenCart: 3.0.x (probado en 3.0.5.0) o 4.0.2 y posteriores (probado en 4.1.0.3).

PHP: 8.0 o posterior.

Cuenta de Flutterwave: necesitas las claves secretas de tu cuenta de Flutterwave, en el panel de Flutterwave, en Settings, API keys: FLWSECK_TEST-… para el modo de prueba y FLWSECK-… para el modo real. Solo se usan las claves secretas. Las claves públicas y de cifrado no son necesarias. También configuras un webhook con un hash secreto que elijas (ver Configuración).

Monedas: el pedido siempre se cobra en la moneda del pedido. La extensión no restringe por sí misma países ni monedas; Flutterwave muestra un error si tu cuenta no admite la moneda. Puedes limitar dónde se ofrece Flutterwave con Geo Zone y Total.

Clave de licencia de VibeFox: se compra en vibefox.net. Una clave funciona en un dominio.

Instalación

El paquete de descarga es un único archivo zip con los paquetes para ambas versiones de OpenCart. Descomprímelo en tu ordenador. Contiene README.txt, el paquete de OpenCart 3 wcp_flutterwave_payment-oc3-(version).ocmod.zip y el paquete de OpenCart 4 wcp_flutterwave_payment.ocmod.zip. Instala solo el paquete de tu versión de OpenCart. La clave de licencia es la misma para ambas versiones.

OpenCart 3

1. En la administración, ve a Extensions > Installer, haz clic en Upload y elige el archivo wcp_flutterwave_payment-oc3-(version).ocmod.zip. La extensión no tiene modificaciones OCMOD, así que no hace falta actualizar Extensions > Modifications. En lugar del instalador, también puedes copiar el contenido de la carpeta upload de este paquete en la carpeta raíz de tu tienda.

2. Ve a Extensions > Extensions y elige el tipo Payments. Busca VibeFox Flutterwave Payment y haz clic en Install (el botón verde +). Tu usuario de administración necesita permiso para modificar la lista de extensiones de pago.

3. Haz clic en Edit (el botón del lápiz) para abrir la página de ajustes. Pega tu clave de licencia de VibeFox en License key, en el bloque de licencia de la parte superior de la página, y haz clic en Activate (consulta Clave de licencia).

4. Introduce tus claves secretas, configura el webhook en el panel de Flutterwave e introduce el mismo hash secreto en la extensión (consulta Configuración).

5. Activa Enable/Disable y haz clic en Save. Prueba un pago en modo de prueba y después activa Live mode.

OpenCart 4

1. En la administración, ve a Extensions > Installer, haz clic en Upload y elige el archivo wcp_flutterwave_payment.ocmod.zip. No cambies el nombre del archivo: OpenCart 4 toma el código de la extensión del nombre del archivo, y un paquete renombrado no funciona.

2. El paquete aparece en la lista de extensiones instaladas en la misma página. Haz clic en Install (el botón verde +) junto a él.

3. Ve a Extensions > Extensions y elige el tipo Payments. Busca VibeFox Flutterwave Payment, haz clic en Install (el botón verde +) y después en Edit (el botón del lápiz).

4. Introduce la clave de licencia, las claves secretas y el webhook como en los pasos 3 a 5 de OpenCart 3. La página de ajustes y sus campos son los mismos en ambas versiones. Solo la URL del webhook es diferente (consulta Webhook).

Una instalación nueva empieza con el método de pago desactivado y en modo de prueba.

Configuración

Todos los ajustes están en la página de la extensión: Extensions > Extensions > Payments > VibeFox Flutterwave Payment > Edit. Las secciones aparecen a la izquierda; el botón Save situado debajo de la lista guarda toda la página. Encima de los ajustes, la página muestra Live mode: real payments are accepted. o Test mode: no real money is charged. Te avisa cuando la clave secreta del modo actual está vacía, cuando el campo de la clave de producción contiene una clave de prueba (FLWSECK_TEST-…) en modo real, o cuando el campo de la clave de prueba contiene una clave real (FLWSECK-…) en modo de prueba; en ese caso el método de pago queda oculto en la finalización de compra hasta que se corrija. También te avisa cuando no hay ningún hash secreto de webhook: entonces los webhooks se rechazan y los pagos solo se confirman cuando el cliente vuelve a tu tienda. Sin el permiso para modificar la extensión, la página muestra los ajustes pero no puede guardarlos.

Al guardar, Title debe tener entre 1 y 128 caracteres, Sort Order debe estar vacío o ser un número entero, Total debe estar vacío o ser un número igual o mayor que 0, y la zona geográfica y los estados de pedido seleccionados deben existir. Si no, no se guarda nada y la página muestra qué corregir. Los problemas con las claves no impiden guardar.

Flutterwave

Enable/Disable: Enable Flutterwave Payment activa o desactiva el método de pago. Predeterminado: desactivado.

Title: el título del método de pago que ven los clientes en la finalización de compra. También es el nombre del método de pago guardado en el pedido. Predeterminado: Flutterwave. Obligatorio, hasta 128 caracteres.

Description: la descripción del método de pago que se muestra en el paso Confirm Order, encima del botón de confirmar. Predeterminado: Pay securely via Card, Bank Transfer, USSD, Mobile Money via Flutterwave.

Sort Order: la posición de Flutterwave entre los métodos de pago de la finalización de compra. Déjalo vacío o escribe un número entero.

Geo Zone: ofrece Flutterwave solo a las direcciones de pago de la zona geográfica seleccionada. Predeterminado: All zones. Las zonas geográficas se configuran en System > Localisation > Geo Zones.

Total: el total de la compra, en la moneda predeterminada de la tienda, que un pedido debe alcanzar para que se ofrezca Flutterwave. Déjalo vacío para ofrecer Flutterwave con cualquier total.

Claves de API

Copia las claves secretas desde el panel de Flutterwave, en Settings, API keys (la sección tiene un enlace). El modo de prueba y el modo real tienen claves distintas.

Live mode: acepta pagos reales. Desactívalo para el modo de prueba. El modo de prueba usa la clave secreta de prueba y no se cobra dinero real. El modo real usa la clave secreta real. Predeterminado: desactivado (modo de prueba). Mientras el modo de prueba esté activo, los clientes ven TEST MODE - no real payments will be processed. en el paso Confirm Order.

Test Secret Key: tu clave secreta de prueba de Flutterwave (FLWSECK_TEST-...).

Live Secret Key: tu clave secreta real de Flutterwave (FLWSECK-...).

Las claves guardadas y el hash secreto nunca se vuelven a mostrar. El campo queda vacío y muestra Saved — leave empty to keep it. Escribe un valor nuevo solo si quieres cambiarlo. Para eliminar un valor guardado, marca Clear the saved value debajo del campo y haz clic en Save.

Webhook

El webhook confirma los pagos aunque el cliente no vuelva a tu tienda. En el panel de Flutterwave, en Settings, Webhooks, introduce la URL que aparece en Webhook URL de esta sección y un hash secreto que elijas, tanto en modo de prueba como en modo real. En OpenCart 3 la URL tiene este aspecto: https://your-store/index.php?route=extension/payment/wcp_flutterwave_payment/webhook, y en OpenCart 4 tiene este aspecto: https://your-store/index.php?route=extension/wcp_flutterwave_payment/payment/wcp_flutterwave_payment.webhook. Se construye a partir de la dirección de tu tienda. Debe ser accesible desde internet por HTTPS. Copia la URL exactamente como la muestran los ajustes. La extensión reacciona a este evento:

charge.completed: se completó un cobro. La extensión vuelve a leer la transacción en Flutterwave con la clave secreta del modo en que se hizo el pago y aplica el resultado.

Los demás eventos se ignoran.

Secret Hash: el hash secreto del webhook. Debe coincidir con el valor de los ajustes del webhook en tu panel de Flutterwave. Flutterwave lo envía con cada webhook, y se usa el mismo valor para el modo de prueba y el modo real. Los webhooks sin un hash secreto válido se rechazan. Sin el webhook, un pago solo se confirma cuando el cliente vuelve a tu tienda.

Pago

Payment Options: métodos de pago separados por comas que se muestran en la página de Flutterwave, por ejemplo card, banktransfer, ussd, mobilemoney. Déjalo vacío para mostrar todos los métodos activados en tu cuenta. La lista se limpia al guardar (minúsculas, sin duplicados).

Autocomplete Orders: los pedidos pagados reciben el Complete Order Status en lugar del Paid Order Status. Predeterminado: desactivado.

Pedidos

OpenCart crea el pedido en el paso Confirm Order sin estado (un pedido sin estado). Solo recibe un estado después de que Flutterwave haya confirmado el pago a través de la API. Cada campo siguiente enumera tus estados de pedido de OpenCart.

Paid Order Status: el estado después de un pago confirmado. Predeterminado: Procesando.

Complete Order Status: el estado después de un pago confirmado cuando Autocomplete Orders está activado. Predeterminado: Completado.

Awaiting Payment Status: el cliente volvió mientras el pago seguía pendiente en Flutterwave (transferencia bancaria, USSD, dinero móvil). El pedido conserva este estado hasta que el webhook lo confirme. Predeterminado: Pendiente.

On Hold (Review) Status: los pagos cuyo importe o moneda no coinciden con el pedido, o que llegan después de que el pedido se cancelara, reciben este estado y una nota que explica el motivo. Predeterminado: Pendiente, porque OpenCart no tiene el estado On hold. Puedes crear tu propio estado en System > Localisation > Order Statuses y seleccionarlo aquí.

Failed Status: un pago pendiente de un pedido en espera fracasó en Flutterwave. Predeterminado: Fallido.

Refunded Status: se asigna después de que el pago se reembolse por completo desde la página del pedido. Predeterminado: Reembolsado.

Avanzado

Debug log: registra los eventos de la API de Flutterwave para depurar en flwv_debug.log.php, en la carpeta de registros de OpenCart (storage/logs). El archivo no se puede abrir desde la web y, al llegar a 5 MB, se traslada a flwv_debug.old.log.php. Los errores y las advertencias siempre se registran. Las claves, el hash secreto y los datos de los clientes nunca se registran. Predeterminado: desactivado.

Log: muestra el tamaño y las últimas entradas del registro. Haz clic en Clear log para vaciarlo.

Delete data on uninstall: elimina los ajustes y los registros de la extensión al desinstalarla. Los datos de pago guardados en los pedidos siempre se conservan. Predeterminado: desactivado.

Importar / Exportar

Export: Download JSON guarda los ajustes en un archivo JSON. Las claves secretas y el hash secreto no se exportan.

Import: pega el JSON exportado previamente y haz clic en Import para restaurar los ajustes. Las claves guardadas y el hash secreto se conservan.

Finalización de compra

En el paso Payment Method, el cliente elige el método de pago (por defecto, Flutterwave). En el paso Confirm Order, el cliente ve tu descripción y la nota You will be redirected to the Flutterwave checkout page. OpenCart crea el pedido en este paso, todavía sin estado. En OpenCart 4 el cliente elige el método de pago con el botón Choose del bloque de métodos de pago, en la ventana Payment method options, y hace clic en Confirm Order al final de la página de finalización de compra. Cuando el cliente hace clic en Confirm Order, la extensión crea un pago de Flutterwave por el total del pedido en la moneda del pedido, con el correo electrónico del cliente, el teléfono y el nombre de la dirección de pago, el nombre y el logotipo de tu tienda, y Payment for order seguido del número de pedido, y envía al cliente a la página de pago de Flutterwave. Es necesario un correo electrónico válido. Allí, el cliente paga con uno de los métodos activados en tu cuenta (o con los indicados en Payment Options).

Después de pagar, el cliente vuelve a tu tienda. El pedido solo se marca como pagado cuando Flutterwave lo confirma: mediante el webhook o mediante una comprobación en el servidor cuando el cliente vuelve. Después, el pedido recibe su estado de la forma habitual de OpenCart, con los correos electrónicos de pedido habituales y la actualización del stock, y el cliente ve la página de pedido realizado de OpenCart. Si el pago sigue pendiente, por ejemplo un pago por transferencia bancaria, USSD o dinero móvil, el pedido recibe Awaiting Payment Status y la página también muestra Your payment is being confirmed by Flutterwave. You will receive an e-mail as soon as it is confirmed. Cuando Flutterwave confirma el pago, el pedido pasa al estado de pagado y se envía un correo electrónico al cliente. Si el pedido se retuvo para revisión, por ejemplo porque el importe pagado no coincide con el pedido, la página muestra Your payment was received and your order is being reviewed. We will contact you if anything is needed. Si un pago pendiente fracasa después y el cliente vuelve al pedido, la página muestra Your Flutterwave payment was not completed. Please contact us about this order.

Si Flutterwave no responde cuando el cliente vuelve, una página Payment confirmation dice Your payment is being confirmed by Flutterwave. Your order will be confirmed as soon as Flutterwave confirms it — please do not pay again. con los botones Check again y Back to checkout. El webhook asigna el estado del pedido en cuanto llega.

Si el pago es rechazado, el cliente vuelve a la finalización de compra con Your payment was declined. You can try again or choose another payment method. Si el cliente cancela en la página de Flutterwave, el mensaje es Payment was cancelled. You can try again or choose another payment method. Si el pago no se completó, el mensaje es The payment was not completed. You can try again or choose another payment method. Si el pago no pudo verificarse, el mensaje es Payment verification failed. Please contact support. El pedido queda sin estado y el carrito se conserva, así que el cliente puede volver a pagar. En OpenCart 4 estos mensajes se muestran encima de la página de finalización de compra.

OpenCart 3 crea un pedido nuevo cada vez que se muestra el paso Confirm Order; OpenCart 4 actualiza el pedido de la finalización de compra, de modo que un nuevo intento paga el mismo pedido. Cada intento recibe su propia referencia. Antes de un pago nuevo, los pagos abiertos y pendientes de este pedido y de otros pedidos del mismo carrito de las últimas 24 horas se comprueban en Flutterwave. Si alguno resulta estar pagado, confirma su pedido y el cliente va a la página de éxito en lugar de pagar de nuevo. Si otro pedido del mismo carrito ya se ha pagado con Flutterwave, tampoco se inicia un pago nuevo. Un enlace de pago anterior que se pague más tarde sigue siendo aceptado. Si el mismo carrito se paga dos veces, por ejemplo en dos pestañas del navegador, solo el primer pago asigna estado a su pedido: el otro pedido queda sin estado, y el pedido pagado recibe una nota pidiéndote que reembolses el segundo pago en el panel de Flutterwave.

OpenCart 4 mantiene el pedido en la finalización de compra hasta que se muestra la página de éxito. Si ese pedido se cerró sin pago mientras tanto (por ejemplo, porque su pago pendiente fracasó o lo cancelaste), el cliente vuelve a la finalización de compra con el mensaje sobre el pago rechazado, y el siguiente Confirm Order paga un pedido nuevo del carrito. Si cerraste el pedido después de que estuviera pagado, el mensaje es This order can no longer be paid (it was closed by the store). Please confirm your order again. Si ese pedido ya está pagado pero el carrito ha cambiado desde entonces, incluida una nueva cantidad, el mensaje es Your previous order is already paid. Please confirm the order again: the cart will be paid with a new order. Un pedido pagado nunca se muestra como pagado para un carrito diferente.

Si Flutterwave no puede iniciar el pago, el cliente se queda en el paso Confirm Order con un mensaje breve, por ejemplo Flutterwave is temporarily unavailable. Please try again in a moment or choose another payment method. El motivo técnico se escribe en el registro.

El webhook y la URL de retorno también funcionan mientras la tienda está en modo mantenimiento, porque OpenCart 3 deja pasar las solicitudes de las extensiones de pago, y la extensión añade para ellas una acción de inicio en OpenCart 4.

La extensión acepta solo pagos únicos. No tiene un checkout integrado ni modal en tu sitio, ni tarjetas guardadas, suscripciones, pagos divididos ni planes de pago. Los enlaces de pago alojados no se pueden cancelar a través de la API de Flutterwave, así que un enlace antiguo todavía puede pagarse.

Pedidos y reembolsos

Estados de pedido

Sin estado (missing order): el cliente fue enviado a Flutterwave y no ha pagado, el pago fue rechazado o cancelado, o Flutterwave todavía no ha confirmado el pago. En Sales > Orders, estos pedidos solo aparecen con el filtro Order Status configurado en Missing Orders.

Paid Order Status (predeterminado Procesando) o Complete Order Status (predeterminado Completado): el pago fue confirmado. Se usa Complete Order Status cuando Autocomplete Orders está activado. Una nota muestra el importe, el método de pago, la referencia de Flutterwave, la transacción y el modo.

Awaiting Payment Status (predeterminado Pendiente): el cliente volvió mientras el pago seguía pendiente en Flutterwave. El pedido pasa al estado de pagado cuando Flutterwave confirma el pago.

On Hold (Review) Status (predeterminado Pendiente): el importe o la moneda verificados no coinciden con el pedido, o el pago llegó después de que al pedido se le hubiera asignado un estado sin pago, por ejemplo Cancelado. Se registran el importe y la moneda realmente pagados, y la nota lo explica. Procesa el pedido o reembolsa el pago. Si el pedido ya tenía otro estado de procesamiento, solo se añade una nota.

Failed Status (predeterminado Fallido): Flutterwave informó de que el último intento de pago de un pedido en espera fracasó o fue cancelado. La nota muestra el motivo. Los intentos anteriores y los pedidos pagados no se modifican.

Refunded Status (predeterminado Reembolsado): el pago se reembolsó por completo a través de la extensión.

Si se recibe un segundo pago para un pedido que ya está pagado, el pedido no cambia. Una nota te pide que reembolses el duplicado en el panel de Flutterwave.

Las notas son entradas del History del pedido que el cliente no ve.

Pestaña VibeFox Flutterwave Payment

En Sales > Orders, abre un pedido pagado con Flutterwave. En la parte inferior de la página del pedido, junto a History y Additional, la pestaña VibeFox Flutterwave Payment muestra la Transaction reference, el Mode (Test o Live), el Status del pago, el Transaction ID, la Flutterwave reference, el Payment type, los importes Paid / refunded, el formulario de reembolso, el historial de reembolsos y las Flutterwave notes del pedido. La pestaña se muestra a los usuarios que tienen acceso a la extensión.

Reembolsos

En la pestaña, introduce el Amount (se rellena el importe que aún no se ha reembolsado), opcionalmente un Reason (optional), y haz clic en Refund via Flutterwave. Confirma la pregunta Refund this amount through Flutterwave? This cannot be undone. Se admiten reembolsos totales y parciales. Necesitas el permiso para modificar la extensión (se configura en System > Users > User Groups). Los reembolsos se hacen por el importe y la moneda que cobró Flutterwave, así que tras una diferencia de importe o de moneda puedes reembolsar hasta lo que pagó realmente el cliente, no el total del pedido. El reembolso se envía con la clave secreta del modo en que se hizo el pago (prueba o real), por lo que esa clave debe estar configurada. Si Flutterwave rechaza el reembolso, la pestaña muestra el error y no se registra ningún reembolso. Un reembolso correcto se añade al historial de reembolsos y a las notas, con el ID del reembolso y su estado (completado, o iniciado con el estado que informe Flutterwave). Un reembolso total asigna al pedido el Refunded Status sin notificar al cliente y sin devolver los productos al stock, como un cambio manual de estado. Un reembolso parcial no cambia el estado. Los reembolsos están disponibles una vez que Flutterwave ha confirmado el pago.

Las devoluciones de productos en Sales > Returns no devuelven dinero a través de Flutterwave. Los reembolsos hechos en el panel de Flutterwave no se sincronizan de vuelta con OpenCart. Si hace falta, actualiza el estado del pedido manualmente.

Clave de licencia

La extensión funciona con una clave de licencia de VibeFox de vibefox.net. El bloque de licencia License — VibeFox Flutterwave Payment es el primer bloque de Extensions > Extensions > Payments > VibeFox Flutterwave Payment > Edit, encima de los ajustes. Pega la clave en License key y haz clic en Activate. Después, el bloque muestra la clave enmascarada, el estado (por ejemplo, la fecha hasta la que la licencia está activa, y tu dominio) y los botones Check now para volver a comprobar el estado, Change key para introducir otra clave y Remove key para eliminar la clave de esta tienda. Debajo aparecen la línea Product: opencart-payment-flutterwave y el enlace Manage licenses and domains in your account, que abre tu cuenta de vibefox.net. Solo los usuarios administradores con permiso Modify para la extensión pueden cambiar la clave. Los textos del bloque siguen el idioma de la administración (se incluyen inglés y ruso).

Si la clave no se acepta, el bloque indica el motivo, por ejemplo Key not found, This key belongs to another product, Domain limit reached o License expired on seguido de una fecha. Después de cambiar la dirección de la tienda, o después de liberar un hueco de dominio en tu cuenta, haz clic en Check now. Si el servidor de licencias no responde, la extensión sigue funcionando con el último estado conocido.

Una clave funciona en un dominio: la dirección de la tienda de la configuración de OpenCart. Quitar la clave de la tienda no libera su hueco de dominio. Libéralo en tu cuenta de vibefox.net.

Sin una clave activa, Flutterwave no se muestra a los clientes en la finalización de compra. Si de todos modos se inicia un pago, el cliente ve This payment method is not available. Please choose another one. Un usuario administrador que haya iniciado sesión en la administración en el mismo navegador sigue viendo el método de pago en la tienda, marcado como (unlicensed — visible to admins only), para que puedas configurar y probar la extensión antes de comprar una clave. En OpenCart 4 esta vista previa no está disponible: la tienda no detecta el inicio de sesión del administrador, así que sin una clave activa el método de pago queda oculto para todos. Después de abrir la página Edit una vez, aparece un recordatorio en el Dashboard de la administración. Ciérralo con × para ocultarlo durante 7 días. Los pedidos existentes no se ven afectados: los pagos ya iniciados se siguen confirmando y los reembolsos funcionan.

Cuando una licencia caduca, la extensión sigue funcionando, pero las actualizaciones y el soporte necesitan una renovación. El estado se vuelve a comprobar automáticamente al abrir el Dashboard de la administración o la página Edit: una vez al día durante los primeros 14 días después de introducir la clave, y después una vez por semana. No hace falta configurar ninguna tarea cron. Desinstalar la extensión elimina siempre la clave de licencia y el estado de la licencia.

Solución de problemas

Flutterwave no aparece en la finalización de compra: comprueba que la licencia está activa, que Enable/Disable está activado y que la clave secreta del modo actual está rellena y coincide con el modo: una clave de prueba (FLWSECK_TEST-…) en modo de prueba, una clave real (FLWSECK-…) en modo real. La página de ajustes muestra una advertencia en caso contrario. Comprueba también que la dirección de pago está en la Geo Zone seleccionada y que el pedido alcanza el Total configurado en los ajustes.

El pago se realizó, pero el pedido sigue sin estado: el webhook no funciona. En el panel de Flutterwave, comprueba que la URL del webhook es exactamente la que aparece en Webhook URL, en el modo que utilizas (prueba o real), y que su hash secreto es el mismo que Secret Hash en la extensión. Las transferencias bancarias, USSD y el dinero móvil pendientes siguen pendientes hasta que Flutterwave los confirme. El pedido también recibe su estado cuando el cliente vuelve a la tienda después de pagar. Activa Debug log y revisa el campo Log en la página de la extensión.

El webhook responde Invalid hash o Secret hash not configured: el hash secreto del panel de Flutterwave es distinto del de la extensión, o la extensión no tiene ninguno. Introduce el mismo valor en ambos sitios.

El webhook responde Verification failed, Busy, retry later u Order could not be updated, retry later: no se pudo contactar con Flutterwave para verificar el pago, la transacción todavía no es visible, otra solicitud estaba procesando el pedido, o no se pudo asignar su estado. Flutterwave reintenta el webhook. El registro muestra el motivo.

La URL del webhook muestra Empty body en el navegador: es normal. La URL solo acepta webhooks de Flutterwave.

El cliente ve Payment gateway is not properly configured: falta la clave secreta del modo actual, o pertenece al otro modo.

El cliente ve This payment method is not available: la sesión de finalización de compra ya no coincide con el pedido, o el método de pago se desactivó entretanto. El cliente recarga la finalización de compra.

El cliente ve We could not match this payment to an order: el enlace de retorno no corresponde a un pago de este pedido. Si el cliente fue cobrado, busca el pago en el panel de Flutterwave.

Flutterwave muestra un error en su página, o el cliente ve Flutterwave could not start the payment: es posible que tu cuenta de Flutterwave no admita la moneda del pedido o las opciones de pago seleccionadas.

El pedido está en estado retenido tras el pago: lee las notas de la pestaña VibeFox Flutterwave Payment (consulta Estados de pedido) y después procesa el pedido o reembolsa el pago.

No hay formulario de reembolso en la pestaña: la pestaña indica el motivo: el pago todavía no está confirmado, se ha reembolsado por completo, tu grupo de usuarios no tiene permiso para modificar la extensión, o la clave secreta del modo del pago no está configurada.

El reembolso falla con un mensaje sobre el modo: el pago se hizo en modo de prueba o real, y la clave secreta de ese modo no está configurada. Introdúcela e inténtalo de nuevo.

El reembolso responde Another operation on this payment is running: en ese momento se estaba enviando otro reembolso del mismo pedido. Espera un momento, revisa el historial de reembolsos y vuelve a intentarlo si hace falta.

Para desarrolladores, la extensión dispara los eventos de OpenCart flwv_payment_request (datos enviados a Flutterwave) y flwv_currency_decimals (precisión de la moneda).

Desinstalación

Ve a Extensions > Extensions, elige el tipo Payments y haz clic en Uninstall (el botón rojo −) junto a VibeFox Flutterwave Payment. La clave de licencia y el estado de licencia de esta extensión siempre se eliminan. OpenCart siempre elimina sus propios ajustes de la extensión: Enable/Disable, Sort Order, Geo Zone, Total y los estados de pedido de la sección Orders, que vuelven a sus valores predeterminados al reinstalar. También se elimina el evento de OpenCart de la extensión (en OpenCart 4, sus eventos y su acción de inicio, que deja pasar el webhook y la URL de retorno en modo mantenimiento). Si Delete data on uninstall está activado, se eliminan los demás ajustes (título, descripción, modo, claves, hash secreto, opciones de pago, autocompletado, interruptor del registro de depuración) y el registro. Si está desactivado, se conservan para una reinstalación posterior. Los registros de pagos y reembolsos de Flutterwave siempre se conservan, así que los pedidos pagados antes pueden reembolsarse también tras una reinstalación. Los pedidos existentes conservan sus notas de pago.

En OpenCart 4, para eliminar también los archivos de la extensión, ve a Extensions > Installer después de desinstalarla, haz clic en Uninstall (el botón naranja −) junto a VibeFox Flutterwave Payment en la lista de extensiones instaladas y, después, en Delete (el botón rojo de papelera) para eliminar el paquete subido.

Flutterwave es una marca comercial de su respectivo propietario. Esta extensión no está afiliada a Flutterwave ni cuenta con su respaldo.