Skip to content

OpenCart Plugin

The Genius Checkout extension for OpenCart 4.x adds Genius Checkout as a payment method on OpenCart storefronts.

Install

  1. Download the extension zip from your merchant dashboard.
  2. OpenCart admin → Extensions → Installer → Upload.
  3. Then Extensions → Extensions → Payments → Genius Checkout → Install.

Configure

Extensions → Payments → Genius Checkout → Edit:

SettingValue
API KeyYour gc_test_… or gc_live_… key (password field)
Webhook SecretSame value as GC Dashboard → Developers → Webhooks (password field)
Test ModeToggle while validating
Approved Order StatusStatus to apply on payment.completed (typically Processing)
Failed Order StatusStatus to apply on payment.failed (typically Failed)
Refunded Order StatusStatus to apply on payment.refunded / payment.partially_refunded
Geo ZoneRestrict to countries (optional)
Sort OrderDisplay order in the payment-method list

Then in the GC dashboard, set your OpenCart webhook URL to:

https://your-opencart.example.com/index.php?route=extension/payment/genius_checkout/callback

Subscribe the endpoint to at least: payment.completed, payment.failed, payment.refunded.

Checkout flow

  1. Shopper reaches OpenCart's checkout and picks Genius Checkout.
  2. The catalog controller renders a Pay-now block that POSTs to confirm().
  3. confirm() calls POST /api/v1/checkout-sessions with the order total, customer email, and a return URL pointing back at index.php?route=checkout/success.
  4. We respond with {checkout_url, session_id}. The plugin redirects the shopper.
  5. After payment, the shopper is returned to OpenCart's success URL with ?gc_charge_id=….
  6. Asynchronously, GC pushes payment.completed / payment.failed to the callback endpoint; the plugin transitions the order to the configured status id.

Supported features

CapabilityStatus
Refunds (full)Yes — propagated via payment.refunded webhook
Partial refundsWire-level (handled by the inbound payment.partially_refunded event)
TokenizationTokens stored on the GC platform; OpenCart doesn't render a saved-card picker today
SubscriptionsNot natively — OpenCart has no built-in subscription engine

Refunds

GC merchants issue refunds from the GC dashboard or via API; the OpenCart order automatically transitions to the configured Refunded status when the payment.refunded webhook arrives. Triggering refunds from inside OpenCart is on the roadmap.

Webhook security

Inbound webhooks are signed with HMAC-SHA256. The OpenCart receiver verifies X-GC-Signature over {timestamp}.{body} (5-minute replay window) and rejects mismatches.

Troubleshooting

  • Pay-now button does nothing — open the browser console; missing JS usually means a theme override has stripped the callback URL. Re-run the admin install step.
  • Order not transitioning — confirm the webhook URL resolves from the public internet (OpenCart often sits behind WAFs that drop signed POSTs).
  • alert() showing instead of a styled error — clear the OC cache; the v4.x storefront template uses a Bootstrap .alert block which won't render until the theme is rebuilt.

Submission

Available on the OpenCart Marketplace.

Released under the proprietary Genius Checkout license.