# Express Checkout — Apple Pay, Google Pay & Amazon Pay via Stripe — Guide complet

> Présentation DataFirefly Express Checkout ajoute le paiement par portefeuille — Apple Pay, Google Pay et Amazon Pay — à votre boutique PrestaShop 8 ou 9, via Stripe. Le module s'appuie…

- Page: <https://www.datafirefly.com/documentation/dfexpresscheckout/>
- Langue: fr
- Mis à jour le: 2026-07-08
- Autres langues: [en](https://www.datafirefly.com/en/documentation/dfexpresscheckout/index.md), [es](https://www.datafirefly.com/es/documentation/dfexpresscheckout/index.md), [de](https://www.datafirefly.com/de/documentation/dfexpresscheckout/index.md), [it](https://www.datafirefly.com/it/documentation/dfexpresscheckout/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfexpresscheckout/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfexpresscheckout/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfexpresscheckout/index.md)
- Index: <https://www.datafirefly.com/documentation/llms.txt>

## Présentation

DataFirefly Express Checkout ajoute le paiement par portefeuille — **Apple Pay**, **Google Pay** et **Amazon Pay** — à votre boutique PrestaShop 8 ou 9, via Stripe. Le module s'appuie sur l'**Express Checkout Element** de Stripe : un composant unique qui détecte automatiquement les portefeuilles disponibles sur l'appareil du client et affiche les boutons correspondants.

Les boutons peuvent apparaître à trois emplacements, activables indépendamment : sur la **fiche produit** (achat express), dans le **panier** et sur la **page de paiement**. Après paiement, la commande est créée et validée par un **webhook Stripe à signature vérifiée**, avec une logique idempotente qui empêche toute commande en double. Le module est compatible mono et multi-boutique, et fourni en cinq langues (FR, EN, ES, DE, IT).

## Prérequis

- PrestaShop **8.0 à 9.x**, PHP 7.4 ou supérieur.
- L'extension **PHP cURL** activée (vérifiée à l'installation).
- Un **compte Stripe** actif.
- Une boutique servie en **HTTPS** (obligatoire pour Apple Pay et Google Pay).

## Installation

1. Depuis le back-office, ouvrez **Modules > Gestionnaire de modules**.
2. Cliquez sur **Installer un module** et déposez l'archive ZIP du module.
3. Une fois l'installation terminée, cliquez sur **Configurer**.

À l'installation, le module crée une table de suivi des transactions et un état de commande dédié « Paiement autorisé (en attente de capture) » utilisé par le mode de capture manuelle.

## Connexion à Stripe

Le module propose deux modes de connexion, réglés par le champ **Mode de connexion**.

### Mode manuel (clés API)

Renseignez vos clés depuis le Dashboard Stripe (**Développeurs > Clés API**) :

- **Clé publique** et **Clé secrète**, en version Test puis Live.
- **Secret du webhook** (voir la section Webhook ci-dessous).

Basculez le champ **Mode** sur Test pendant l'intégration, puis sur Live en production. Chaque mode possède son propre jeu de clés.

### Mode automatique (Stripe Connect / OAuth)

Ce mode connecte votre compte Stripe en un clic. Cliquez sur **Se connecter avec Stripe**, autorisez l'accès, et le module récupère automatiquement les clés publique et secrète, **crée le webhook** (et son secret de signature) et tente d'enregistrer le **domaine wallet** pour Apple Pay / Google Pay. Le bouton **Déconnecter** révoque l'accès et purge les clés.

Le mode automatique nécessite une **application Stripe Connect**. Deux possibilités :

- **Votre propre application Connect** : renseignez le `client_id` et le **secret de plateforme** (Test et Live).
- **Courtier DataFirefly** : renseignez l'**URL du courtier**, qui détient le secret de plateforme et réalise l'échange OAuth. Si cette URL est renseignée, elle est prioritaire.

Déclarez l'**URL de redirection** affichée dans le panneau de connexion au niveau des _Redirect URIs_ de votre application Stripe Connect, sinon l'autorisation OAuth sera refusée.

## Configuration Stripe (Dashboard)

### Webhook

En mode manuel, créez le point de terminaison dans **Développeurs > Webhooks > Ajouter un endpoint** :

- **URL** : celle affichée en haut de la page de configuration du module (`.../module/dfexpresscheckout/webhook`).
- **Événements** : `payment_intent.succeeded` et `payment_intent.payment_failed`.
- Copiez le **secret de signature** (`whsec_…`) dans la configuration du module.

En mode automatique, le webhook et son secret sont créés automatiquement lors de la connexion.

Sans secret de webhook configuré, le module refuse les appels entrants : c'est une mesure de sécurité, la commande n'est jamais créée sur la base d'un appel non vérifié.

### Activer les portefeuilles

- **Amazon Pay** : activez-le dans **Paramètres > Moyens de paiement** de votre Dashboard Stripe. Il apparaît ensuite automatiquement dans l'Express Checkout Element.
- **Apple Pay** : votre domaine doit être vérifié dans Stripe (**Paramètres > Apple Pay**). En mode automatique, le module tente cet enregistrement pour vous.
- **Google Pay** : actif automatiquement, aucune action requise.

## Configuration du module

### Emplacements d'affichage

Trois interrupteurs contrôlent l'affichage des boutons : **fiche produit**, **panier** et **checkout**. Activez-les indépendamment selon votre stratégie.

### Mode de capture

- **Capture immédiate** (par défaut) : le paiement est encaissé tout de suite et la commande passe à « Paiement accepté ».
- **Autorisation puis capture manuelle** : Stripe autorise le paiement sans l'encaisser ; la commande arrive dans l'état « Paiement autorisé (en attente de capture) ».

### Intitulé et thème

Personnalisez l'**intitulé affiché** au-dessus des boutons et le **thème des boutons** (noir, blanc, blanc contour) pour l'accorder à votre design.

## Côté client

Selon l'emplacement, le client voit un ou plusieurs boutons wallet. Il confirme le paiement en une authentification (Face ID, empreinte, mot de passe Amazon), sans créer de compte : l'e-mail ainsi que les adresses de livraison et de facturation sont récupérés depuis le portefeuille. Lorsque des frais de port s'appliquent, le module propose les transporteurs actifs et **recalcule le total** à chaque changement d'adresse. Les produits dématérialisés fonctionnent sans étape de livraison.

Depuis la fiche produit, l'achat express porte sur le produit affiché (et la quantité choisie) via un panier dédié, sans modifier le panier courant du client.

## Capture manuelle : encaisser ou annuler

En mode de capture manuelle, le pilotage se fait par le statut de commande :

- Pour **capturer** le paiement, passez la commande au statut **« Paiement accepté »**.
- Pour **libérer l'autorisation**, passez la commande au statut **« Annulé »**.

Une autorisation Stripe a une durée de vie limitée (généralement 7 jours). Pensez à capturer avant expiration, sinon l'autorisation est libérée automatiquement.

## Commandes, webhook et idempotence

La commande est créée et validée à la réception de l'événement `payment_intent.succeeded` (webhook signé). Un contrôleur de retour sert de filet de sécurité lorsque le client revient sur la boutique. Une table de transactions relie chaque PaymentIntent à sa commande : une même transaction ne génère donc jamais deux commandes, quel que soit l'ordre d'arrivée du retour navigateur et du webhook. Le client invité et ses adresses sont reconstitués à partir des informations renvoyées par le portefeuille.

## Multilingue et multi-boutique

Le module est fourni avec des fichiers de traduction FR, EN, ES, DE, IT et fonctionne en contexte multi-boutique. Les clés Stripe, le mode de connexion et le mode de capture sont des réglages de configuration standard.

## Dépannage

### Les boutons ne s'affichent pas

Vérifiez que la boutique est en HTTPS, que les clés Stripe sont renseignées pour le mode actif (Test/Live), et que l'emplacement concerné est activé. Apple Pay n'apparaît que sur Safari/iOS avec un domaine vérifié ; Google Pay sur Chrome/Android.

### Le paiement réussit mais aucune commande n'est créée

Contrôlez le webhook : URL correcte, événements `payment_intent.succeeded` et `payment_intent.payment_failed`, et secret de signature identique à celui du module. Consultez les journaux Stripe (tentatives de livraison du webhook) et les logs PrestaShop.

### Amazon Pay est absent

Il doit être activé dans **Paramètres > Moyens de paiement** du Dashboard Stripe. Il apparaît ensuite automatiquement.

### La connexion automatique échoue

Vérifiez que le `client_id` Connect est renseigné pour le mode actif et que l'URL de redirection du module est bien déclarée dans votre application Connect. Un jeton d'état invalide indique une session expirée : relancez la connexion depuis le back-office.

## Désinstallation

La désinstallation retire la configuration du module. La table de suivi des transactions est conservée par défaut pour la traçabilité des commandes passées.

## FAQ

### Amazon Pay fonctionne-t-il vraiment via Stripe ?

Oui. Stripe prend en charge Amazon Pay au sein de l'Express Checkout Element ; il suffit de l'activer dans le Dashboard Stripe.

### Faut-il installer des dépendances (Composer) ?

Non. Le module embarque un client Stripe interne en cURL. Il suffit d'installer le module et de renseigner (ou connecter) vos clés.

### Le module est-il compatible PrestaShop 9 ?

Oui, il est compatible PrestaShop 8.0 à 9.x et testé sur PHP 8.1 à 8.3.

### Puis-je passer du mode manuel au mode automatique ?

Oui, à tout moment depuis la configuration. En mode automatique, les clés sont renseignées par la connexion OAuth ; en mode manuel, vous les saisissez vous-même.
