Plugin de OpenCart
La extensión Genius Checkout para OpenCart 4.x añade Genius Checkout como método de pago en tiendas OpenCart.
Instalación
- Descarga el zip desde tu panel de comerciante.
- Admin OpenCart → Extensions → Installer → Upload.
- Luego Extensions → Extensions → Payments → Genius Checkout → Install.
Configurar
Extensions → Payments → Genius Checkout → Edit:
| Ajuste | Valor |
|---|---|
| API Key | Tu clave gc_test_… o gc_live_… (campo de contraseña) |
| Webhook Secret | Mismo valor que en Panel GC → Developers → Webhooks (campo de contraseña) |
| Test Mode | Toggle mientras validas |
| Approved Order Status | Estado a aplicar en payment.completed (típicamente Processing) |
| Failed Order Status | Estado a aplicar en payment.failed (típicamente Failed) |
| Refunded Order Status | Estado a aplicar en payment.refunded / payment.partially_refunded |
| Geo Zone | Restringir a países (opcional) |
| Sort Order | Orden de visualización en la lista de métodos |
URL de webhook en el panel GC:
https://tu-opencart.example.com/index.php?route=extension/payment/genius_checkout/callbackSuscribe a: payment.completed, payment.failed, payment.refunded.
Flujo de checkout
- El comprador llega al checkout de OpenCart y elige Genius Checkout.
- El controller de catálogo renderiza un bloque Pay-now que hace POST a
confirm(). confirm()llama aPOST /api/v1/checkout-sessionscon el total de la orden, email del cliente, y URL de retorno apuntando aindex.php?route=checkout/success.- Respondemos con
{checkout_url, session_id}. El plugin redirige. - Tras el pago, el comprador es devuelto a la URL de éxito con
?gc_charge_id=…. - Asincrónicamente, GC empuja
payment.completed/payment.failedal callback; el plugin transiciona la orden.
Funcionalidades soportadas
| Capacidad | Estado |
|---|---|
| Reembolsos (total) | Sí — propagado vía webhook payment.refunded |
| Reembolsos parciales | A nivel de cable (manejado por el evento entrante payment.partially_refunded) |
| Tokenización | Tokens en la plataforma GC; OpenCart no renderiza picker de tarjetas guardadas hoy |
| Suscripciones | No de forma nativa — OpenCart no tiene motor de suscripciones |
Reembolsos
Los comercios GC inician reembolsos desde el panel GC o vía API; la orden OpenCart transiciona automáticamente al estado Refunded al llegar el webhook payment.refunded. Disparar reembolsos desde dentro de OpenCart está en el roadmap.
Seguridad de webhooks
Los webhooks entrantes están firmados con HMAC-SHA256. El receptor OpenCart verifica X-GC-Signature sobre {timestamp}.{body} (ventana de 5 minutos) y rechaza mismatches.
Solución de problemas
- El botón Pay-now no hace nada — abre la consola del navegador; falta de JS suele significar que un override del tema quitó la URL del callback. Re-ejecuta el paso de instalación.
- La orden no transiciona — confirma que la URL del webhook resuelve desde internet (OpenCart suele estar detrás de WAFs que descartan POSTs firmados).
alert()mostrándose en lugar de error estilizado — limpia la caché OC; el template v4.x usa un bloque.alertBootstrap que no renderiza hasta que se reconstruye el tema.
Publicación
Disponible en OpenCart Marketplace.
