Skip to content

PrestaShop Plugin

The Genius Checkout module for PrestaShop 8.x adds Genius Checkout as a payment option on PrestaShop storefronts. The shopper selects Genius Checkout, gets redirected to the GC hosted checkout, completes payment (3DS handled by GC), and is returned to PrestaShop's order-confirmation page.

Install

  1. Download geniuscheckout-prestashop.zip from your merchant dashboard.
  2. PrestaShop admin → Modules → Module Manager → Upload a module.
  3. Upload the zip and click Install.

Configure

Module Manager → Genius Checkout → Configure:

SettingValue
API KeyYour gc_test_… or gc_live_… key (renders as password field)
Webhook Signing SecretSame value you set in GC Dashboard → Developers → Webhooks (password field)
Test ModeEnable while validating; the GC dashboard mode is derived from the API-key prefix

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

https://your-prestashop.example.com/module/geniuscheckout/webhook

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

Checkout flow

  1. Shopper reaches PrestaShop's checkout, picks Genius Checkout (rendered via the paymentOptions hook).
  2. PrestaShop POSTs to controllers/front/validation.php which validates the cart, places a pending order via Module::validateOrder, calls POST /api/v1/checkout-sessions, and redirects to checkout_url.
  3. Shopper completes payment on the GC hosted page.
  4. GC sends payment.completed to the webhook receiver. The receiver verifies HMAC-SHA256 (X-GC-Signature over {timestamp}.{body}, 5-minute replay window) and transitions the order to PS_OS_PAYMENT.

Supported features

CapabilityStatus
RefundsYes — wire-level; trigger from PrestaShop order screen
TokenizationTokens stored on the GC platform; PrestaShop doesn't render a saved-card picker today
SubscriptionsNot natively — PrestaShop has no built-in subscription engine
Multi-currencyYes — uses Currency::iso_code from the cart, passed to GC unchanged

Refunds

From the PrestaShop order detail page → Partial refund / Standard refund. The module calls POST /api/v1/payments/{transaction_id}/refund with the refund amount; the order is moved to PS_OS_REFUND on the resulting payment.refunded webhook.

Webhook security

Inbound webhooks are HMAC-SHA256 signed by GC. The PrestaShop receiver:

  • Rejects deliveries whose X-GC-Timestamp is more than 5 minutes off the server clock.
  • Rejects deliveries whose X-GC-Signature doesn't match HMAC-SHA256("{timestamp}.{body}", webhook_secret).
  • Rejects deliveries when the configured webhook secret is empty or under 16 characters.

See Webhooks → Signature Verification.

Troubleshooting

  • Order stuck in PS_OS_BANKWIRE-like pending state — the current scaffold uses the bank-wire status as a holding state while waiting on the webhook. Confirm the webhook URL is reachable from public internet and that the webhook secret matches between PrestaShop and the GC dashboard.
  • Logo missing on the payment method radio — clear PrestaShop's cache (Advanced Parameters → Performance → Clear cache).
  • 422 on session create — check the cart currency is in the supported list and that the API key prefix matches the configured Test Mode toggle.

Submission

Available on the PrestaShop Addons Marketplace (review SLA ~5 business days).

Released under the proprietary Genius Checkout license.