BluePay for Drupal Commerce · v1.0.0

BluePay for Drupal Commerce

Ajoutez BluePay à votre boutique Drupal Commerce sans écrire une ligne de code. Compatible Drupal 9 et 10.

⬇ Télécharger bluepay-for-drupal.zip
Drupal 9 / 10·Drupal Commerce 2.x·PHP 8.0+
🛒Client checkout
💳Page BluePay
Commande validée

Installation

1

Copier le module

Extrayez bluepay-drupal.zip et copiez le dossier commerce_bluepay/ dans modules/contrib/ de votre Drupal.

2

Activer le module

Via l'interface : Administration → Extensions → Commerce BluePay → Activer.

Ou via Drush :

bash
drush en commerce_bluepay -y && drush cr
3

Configurer la passerelle

Allez dans Commerce → Configuration → Modes de paiement → Ajouter un mode de paiement. Sélectionnez BluePay (Redirect) et renseignez vos clés.

4

Récupérer vos clés

Dans votre Dashboard BluePay, copiez votre Clé API (Paramètres → Clés API) et votre Secret Webhook (Paramètres → Webhooks).

Configuration

ChampDescription
Clé APIbluepay_test_… (test) ou bluepay_live_… (production). Disponible dans Dashboard → Clés API.
Secret WebhookClé secrète pour valider les notifications IPN (HMAC-SHA256). Dashboard → Webhooks.
ModeTest = aucun vrai paiement. Production = paiements réels.
⚠️
En mode Test, utilisez une clé bluepay_test_…. Aucun vrai paiement ne sera débité.

Webhook IPN

Drupal Commerce génère automatiquement l'URL IPN suivante. Configurez-la dans Dashboard → Webhooks :

URL Webhook
https://votre-site.sn/payment/notify/{machine_name_de_la_passerelle}

Le module vérifie automatiquement la signature HMAC-SHA256 de chaque notification via l'en-tête X-BluePay-Signature :

PHP — Vérification signature (RedirectCheckout.php)
$body           = $request->getContent();
$signature      = $request->headers->get('X-BluePay-Signature', '');
$webhook_secret = $this->configuration['webhook_secret'];

$expected = hash_hmac('sha256', $body, $webhook_secret);
if (!hash_equals($expected, $signature)) {
    throw new \Exception('Signature invalide.');
}

// ✓ Paiement confirmé — mettre à jour la commande Drupal Commerce
$payload  = json_decode($body, TRUE);
$order_id = $payload['data']['metadata']['order_id'];
$order    = \Drupal::entityTypeManager()
              ->getStorage('commerce_order')
              ->load($order_id);
🚨
Ne désactivez jamais la vérification de signature. Sans elle, n'importe qui pourrait simuler un paiement confirmé.

Tester

Clé API test

bluepay_test_a8be60f2d216b37b9c2133a5d4c2a5a9

Mode

Test

Numéro téléphone

N'importe quel numéro à 9 chiffres

Résultat

Commande marquée payée (simulé)

💡
En local, utilisez ngrok pour exposer votre Drupal et recevoir les webhooks IPN : ngrok http 80. Copiez l'URL https://xxxx.ngrok.io/payment/notify/bluepay dans le dashboard.

Dépannage

La commande reste en "En attente" après le paiement

BluePay n'a pas pu atteindre votre URL IPN. Vérifiez que l'URL IPN est bien configurée dans le dashboard et que votre site est accessible depuis internet (ngrok en local).

Erreur "Signature invalide" dans les logs Drupal

Le Secret Webhook du module ne correspond pas à celui du Dashboard. Recopiez la valeur exacte sans espaces depuis Dashboard → Webhooks.

BluePay n'apparaît pas sur la page de paiement

Vérifiez que le module est bien activé (drush pml | grep bluepay) et que la passerelle est configurée dans Commerce → Modes de paiement.

Erreur cURL lors de la création du paiement

Le serveur Drupal ne peut pas joindre l'API BluePay. En mode test, vérifiez que https://bluepay.myfad.org est accessible depuis le serveur Drupal.

Prêt à accepter des paiements ?

Téléchargez le plugin Drupal et créez votre compte — opérationnel en moins d'une heure.