Rollin Logo
Créer des paiements intégrés dans Craft CMS 5

Créer des paiements intégrés dans Craft CMS 5

Samuel Rollin
Samuel Rollin
2025-07-05
Les paiements intégrés transforment le commerce électronique en permettant aux clients de finaliser leurs achats directement sur votre site web sans être redirigés vers des pages tierces. Cela crée des processus de commande plus rapides, de meilleures expériences utilisateur et des taux de conversion plus élevés. Lorsqu'ils sont combinés avec Craft CMS et Craft Commerce, les paiements intégrés deviennent particulièrement puissants grâce à la flexibilité de la plateforme et à son architecture conviviale pour les développeurs.

Ce guide complet vous accompagne dans la création de solutions de commerce électronique efficaces avec des paiements intégrés utilisant Craft CMS 5, couvrant tout depuis la configuration jusqu'aux implémentations avancées pour des boutiques en ligne à fort taux de conversion.

Pourquoi choisir Craft CMS pour les solutions de paiement intégrées ?

Craft CMS se distingue comme un système de gestion de contenu conçu pour les développeurs qui ont besoin de flexibilité sans sacrifier la facilité d'utilisation. Lorsqu'il est combiné avec Craft Commerce, il crée une plateforme de commerce électronique robuste qui vous donne un contrôle complet sur l'expérience de commande.

Notre équipe travaille régulièrement avec des entreprises qui ont besoin de flux de paiement personnalisés, et l'approche de Craft offre constamment des résultats. Contrairement aux plateformes rigides qui vous forcent à utiliser des modèles de commande prédéfinis, Craft vous permet de concevoir des expériences de paiement qui correspondent exactement à votre marque et aux besoins de vos clients.

La plateforme prend en charge plusieurs passerelles de paiement dès le départ, gère des catalogues de produits complexes et s'adapte des petites entreprises aux opérations de niveau entreprise. Basé sur notre travail de projet, nous avons vu des entreprises augmenter leurs taux de conversion de 15 à 25 % simplement en implémentant correctement les paiements intégrés via Craft Commerce.

Options de passerelles de paiement actuelles pour Craft Commerce 5

Craft Commerce 5 offre un support étendu des passerelles avec des fonctionnalités améliorées de performance et de sécurité. Voici ce qui est disponible :

Options de passerelles populaires :

  • Stripe : La plus utilisée, prend en charge Apple Pay, Google Pay et l'authentification forte du client
  • Quickpay : Passerelle européenne flexible avec un support étendu des méthodes de paiement
  • Authorize.Net : Essentiel pour les marchands à haut risque (industries du CBD, vapotage, alcool)
  • Mollie : Passerelle européenne avec des options « Achetez maintenant, payez plus tard »
  • PayPal Checkout : Largement reconnu, adoption facile par les clients
  • Square : Bon pour les entreprises avec des emplacements physiques
  • Braintree : Passerelle appartenant à PayPal avec des fonctionnalités avancées

Lorsque nous travaillons avec des clients, nous recommandons habituellement Stripe pour la plupart des opérations de commerce électronique standard en raison de sa fiabilité et de son ensemble de fonctionnalités. Cependant, les entreprises dans des industries réglementées ont souvent besoin d'Authorize.Net ou NMI pour leurs exigences spécialisées de compte marchand.

Configuration des paiements intégrés : Processus complet étape par étape

1. Installer Craft CMS et le plugin Commerce

Commencez avec une installation fraîche de Craft CMS et ajoutez Commerce :

composer create-project craftcms/craft my-ecommerce-project
cd my-ecommerce-project
composer require craftcms/commerce
php craft plugin/install commerce

2. Choisir votre intégration de passerelle de paiement

Sélectionnez un plugin de passerelle basé sur les besoins de votre entreprise :

# Pour Stripe (le plus courant)
composer require craftcms/commerce-stripe
php craft plugin/install commerce-stripe

# Pour Quickpay (entreprises européennes)
composer require craftcms/commerce-quickpay
php craft plugin/install commerce-quickpay

# Pour Authorize.Net (marchands à haut risque)
composer require craftcms/commerce-authorize
php craft plugin/install commerce-authorize

3. Configurer les paramètres de passerelle pour une sécurité maximale

Naviguez vers Commerce > Paramètres > Passerelles dans votre panneau d'administration Craft. Ajoutez votre passerelle choisie et configurez ces paramètres critiques :

  • Identifiants API : Utilisez des variables d'environnement pour la sécurité
  • Mode de paiement : Définissez sur « Accepter les paiements sur site » pour la commande intégrée
  • Fonctionnalités de sécurité : Activez 3D Secure, AVS et les vérifications CVV
  • URLs de webhook : Configurez pour les mises à jour de statut de paiement en temps réel

Notre approche implique de configurer des passerelles séparées pour les environnements de test et de production. Cela permet des tests approfondis sans affecter les transactions en direct.

4. Créer des modèles de commande personnalisés avec des formulaires de paiement intégrés

Craft Commerce fournit un contrôle complet sur la conception de la commande. Voici un formulaire de paiement intégré de base utilisant Stripe :

{# checkout.twig #}



5. Gérer les intentions de paiement et l'authentification forte du client

Pour les passerelles comme Stripe qui nécessitent l'authentification forte du client (SCA), implémentez les intentions de paiement :

// Dans votre contrôleur de paiement
public function actionProcessPayment()
{
    $request = Craft::$app->getRequest();
    $paymentMethodId = $request->getBodyParam('paymentMethodId');
    
    $order = Commerce::getInstance()->getCarts()->getCart();
    $gateway = $order->getGateway();
    
    // Créer une intention de paiement
    $paymentIntent = $gateway->createPaymentIntent($order, $paymentMethodId);
    
    if ($paymentIntent->requiresAction()) {
        // Retourner le secret client pour l'authentification 3D Secure
        return $this->asJson([
            'requiresAction' => true,
            'clientSecret' => $paymentIntent->client_secret
        ]);
    }
    
    // Traiter le paiement réussi
    return $this->redirect('checkout/complete');
}

Exemples d'implémentation avancée pour des scénarios de paiement complexes

Configuration multi-passerelles pour les ventes internationales

Plusieurs entreprises ont besoin de différentes méthodes de paiement pour différentes régions. Voici comment nous configurons des configurations multi-passerelles :

// Dans votre modèle de commande
{% set userCountry = craft.app.request.getIpAddress() | country %}
{% if userCountry in ['DE', 'NL', 'BE'] %}
    {% set gateway = craft.commerce.gateways.getGatewayByHandle('mollie') %}
{% elseif userCountry in ['DK', 'SE', 'NO'] %}
    {% set gateway = craft.commerce.gateways.getGatewayByHandle('quickpay') %}
{% else %}
    {% set gateway = craft.commerce.gateways.getGatewayByHandle('stripe') %}
{% endif %}

Implémentation pour marchands à haut risque

Pour les entreprises vendant des produits réglementés, une configuration appropriée de la passerelle est cruciale :

// Configurer Authorize.Net pour le traitement à haut risque
$gateway = new AuthorizeNetGateway([
    'apiLoginId' => App::env('AUTHNET_API_LOGIN_ID'),
    'transactionKey' => App::env('AUTHNET_TRANSACTION_KEY'),
    'testMode' => App::env('AUTHNET_TEST_MODE'),
    'developerMode' => App::env('AUTHNET_DEVELOPER_MODE'),
    'enableAvs' => true,
    'enableCvv' => true,
    'requireAvs' => true,
    'requireCvv' => true
]);

Intégration de paiements d'abonnement

Pour les paiements récurrents, implémentez la gestion des abonnements :

{# subscription-checkout.twig #}

Meilleures pratiques de sécurité pour le traitement des paiements intégrés

Travailler avec des paiements nécessite des mesures de sécurité strictes. Voici ce que nous implémentons pour chaque projet :

Exigences de conformité PCI

  • Utilisez des champs de paiement hébergés par la passerelle (comme Stripe Elements)
  • Ne stockez jamais les données de carte brutes dans votre base de données
  • Tokenisez les méthodes de paiement pour une utilisation future
  • Implémentez un chiffrement SSL/TLS approprié

Configuration de l'environnement

Stockez les identifiants sensibles de manière sécurisée :

// fichier .env
STRIPE_PUBLISHABLE_KEY=pk_test_...
STRIPE_SECRET_KEY=sk_test_...
AUTHNET_API_LOGIN_ID=your_login_id
AUTHNET_TRANSACTION_KEY=your_transaction_key

Mesures de prévention de la fraude

Activez toutes les fonctionnalités de sécurité disponibles :

  • Authentification 3D Secure
  • Système de vérification d'adresse (AVS)
  • Vérification CVV
  • Vérification de vélocité
  • Validation de géolocalisation IP

Défis d'implémentation courants et solutions

Gestion des webhooks pour les mises à jour de statut de paiement

Les passerelles de paiement envoient des webhooks pour mettre à jour le statut de la commande. Voici une gestion appropriée des webhooks :

// WebhookController.php
public function actionStripeWebhook()
{
    $payload = Craft::$app->getRequest()->getRawBody();
    $sig = Craft::$app->getRequest()->getHeaders()->get('stripe-signature');
    
    try {
        $event = \Stripe\Webhook::constructEvent($payload, $sig, $this->endpointSecret);
    } catch (\Exception $e) {
        return $this->asJson(['error' => 'Échec de la vérification de signature du webhook']);
    }
    
    // Gérer l'événement
    switch ($event->type) {
        case 'payment_intent.succeeded':
            $this->handlePaymentSuccess($event->data->object);
            break;
        case 'payment_intent.payment_failed':
            $this->handlePaymentFailure($event->data->object);
            break;
        default:
            return $this->asJson(['error' => 'Type d\'événement non géré']);
    }
    
    return $this->asJson(['status' => 'success']);
}

Gestion des devises et de la localisation

Configurez plusieurs devises et méthodes de paiement :

// Dans vos paramètres Commerce
$primaryCurrency = 'USD';
$allowedCurrencies = ['USD', 'EUR', 'GBP', 'CAD'];

// Gestion des devises spécifique à la passerelle
if ($gateway->handle === 'mollie' && $order->currency === 'USD') {
    // Mollie ne prend pas en charge l'USD, convertir en EUR
    $convertedAmount = $this->convertCurrency($order->total, 'USD', 'EUR');
}

Optimisation des performances pour le traitement des paiements

Mise en cache des formulaires de paiement

Mettez en cache la génération des formulaires de paiement pour une meilleure performance :

// Utilisez le système de cache de Craft
$cache = Craft::$app->getCache();
$cacheKey = 'payment_form_' . $gateway->id . '_' . $order->id;

$paymentForm = $cache->getOrSet($cacheKey, function() use ($gateway, $order) {
    return $gateway->getPaymentFormHtml($order);
}, 300); // Cache pendant 5 minutes

Traitement asynchrone des paiements

Gérez le traitement des paiements de manière asynchrone pour une meilleure expérience utilisateur :

// Traiter le paiement sans bloquer l'interface utilisateur
async function processPayment(paymentData) {
    const loadingIndicator = document.getElementById('payment-loading');
    loadingIndicator.style.display = 'block';
    
    try {
        const response = await fetch('/payments/process', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify(paymentData)
        });
        
        const result = await response.json();
        
        if (result.success) {
            window.location.href = '/checkout/complete';
        } else {
            displayError(result.error);
        }
    } catch (error) {
        displayError('Le traitement du paiement a échoué. Veuillez réessayer.');
    } finally {
        loadingIndicator.style.display = 'none';
    }
}

Stratégies de test et de déploiement

Stratégie de test complète

Testez tous les scénarios de paiement avant la mise en ligne :

  • Paiements réussis avec différents types de cartes
  • Paiements échoués (fonds insuffisants, cartes expirées)
  • Flux d'authentification 3D Secure
  • Remboursements partiels et annulations
  • Création et gestion d'abonnements
  • Livraison et traitement des webhooks

Surveillance et alertes

Configurez la surveillance pour les problèmes liés aux paiements :

// PaymentMonitor.php
public function checkPaymentHealth()
{
    $failedPayments = Order::find()
        ->where(['status' => 'failed'])
        ->andWhere(['>', 'dateCreated', new \DateTime('-1 hour')])
        ->count();
    
    if ($failedPayments > 10) {
        $this->sendAlert('Taux d\'échec de paiement élevé détecté');
    }
}

Choisir la bonne passerelle de paiement pour votre entreprise

La meilleure intégration de paiement dépend de vos besoins spécifiques. Nous recommandons Stripe pour la plupart des entreprises en raison de sa fiabilité et de son ensemble de fonctionnalités. Cependant, les entreprises dans des industries réglementées devraient considérer Authorize.Net ou NMI, tandis que les entreprises européennes pourraient préférer Quickpay ou Mollie.

Pour des exigences complexes comme les configurations multi-passerelles, la gestion des abonnements ou le traitement des marchands à haut risque, travailler avec des développeurs expérimentés assure une implémentation appropriée et une maintenance continue.

Craft CMS fournit la flexibilité pour créer exactement l'expérience de paiement dont votre entreprise a besoin, des commandes simples aux flux de paiement complexes à étapes multiples. Avec une planification et une implémentation appropriées, les paiements intégrés peuvent améliorer considérablement vos taux de conversion et la satisfaction de vos clients.

Prêt à implémenter des paiements intégrés dans votre projet Craft CMS ? Commencez par une compréhension claire de vos exigences de paiement, choisissez la passerelle appropriée et concentrez-vous sur la création d'une expérience de commande fluide et sécurisée pour vos clients.

Partager cet article

Prêt à commencer
votre projet?

Notre équipe de développement est prête à transformer votre vision en réalité et à donner vie à votre prochaine innovation.