Skip to content

Plugin de Magento 2

El módulo Genius Checkout para Magento 2 añade Genius Checkout como método de pago, con configuración admin, un renderer Knockout en el checkout, un picker de tarjetas guardadas para clientes con sesión iniciada, y manejo de reembolsos vía el flujo estándar de credit memo de Magento.

Instalación

bash
composer require geniuscheckout/magento2
bin/magento module:enable GeniusCheckout_Payment
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush

Configurar

Admin → Stores → Configuration → Sales → Payment Methods → Genius Checkout:

AjusteValor
EnabledYes
API KeyTu clave gc_test_… o gc_live_… (campo admin, cifrado en reposo)
Webhook SecretMismo valor que en Panel GC → Developers → Webhooks
Test ModeYes hasta producción
New Order StatusEstado a aplicar tras autorización
Sort OrderPosición en la lista de pagos

URL de webhook:

https://tu-magento.example.com/geniuscheckout/index/webhook

Suscribe a: payment.completed, payment.failed, payment.refunded, payment.voided.

Flujo de checkout

  1. El comprador llega al checkout de Magento, elige Genius Checkout.
  2. Al hacer Place Order, el mixin de place-order redirige al checkout hospedado de GC.
  3. El comprador completa el pago; GC hace POST payment.completed al receptor, que mueve la orden al estado configurado.

Tarjetas guardadas (clientes con sesión)

Para clientes con sesión, el renderer muestra una lista radio de tarjetas previamente guardadas, vía el proxy server-side /geniuscheckout/index/savedcards:

  • El proxy reenvía la llamada a GET /api/v1/customers/{external_customer_id}/payment-tokens con la API key del comercio — la clave nunca llega al navegador.
  • El proxy usa Authorization: Bearer ….
  • Solo {id, brand, last4, expiry_month, expiry_year} se expone al navegador.
  • Elegir una tarjeta guardada setea additional_data.payment_token_id en el payload de place-order para cobrar el token directo (sin redirección). Elegir "Use a new card" cae al flujo hospedado.

Funcionalidades soportadas

CapacidadEstado
Reembolsos vía credit memo
Tokenización
Picker de tarjetas guardadasSí (clientes con sesión; "Use a new card" cae al hospedado)
SuscripcionesNo nativas en Magento CE (requiere Adobe Commerce o una extensión recurring de terceros)
i18nSí — CSVs en_US, fr_FR, es_ES, pt_BR

Reembolsos

Desde la página de orden admin → Credit Memo → Refund. Magento llama al refund() del módulo que hace POST a POST /api/v1/payments/{id}/refund. Una idempotency key ligada al payment entity id + monto previene doble reembolsos al re-enviar.

Seguridad de webhooks

El controller del webhook autentica vía HMAC-SHA256 (X-GC-Signature sobre {timestamp}.{body}, ventana de 5 minutos) y declara CsrfAwareActionInterface::validateForCsrf → true porque no necesita el token CSRF de Magento (la firma es el mecanismo de auth).

Solución de problemas

  • Método ausente de la lista — confirma "Enabled" Yes y que el país de billing no esté bloqueado en Sales → Payment Methods → Genius Checkout → Allowed Countries.
  • Lista de tarjetas guardadas vacía — verifica que el customer id de la tienda esté mapeado en GC (el proxy usa customer.entity_id); un comprador nuevo ve [] hasta su primer checkout.
  • Logo no se renderizaModel/ConfigProvider::logo_url cae a AssetRepository::getUrl('GeniusCheckout_Payment::images/genius-checkout-logo.svg'). Limpia caché de static-content: bin/magento cache:flush && bin/magento setup:static-content:deploy.
  • No gateway configuration found for this merchant — verifica que tengas un gateway conectado en el panel GC para el modo activo (test vs live).

Released under the proprietary Genius Checkout license.