Lexik est heureux d’annoncer la sortie du bundle LexikPayboxBundle développé en partenariat avec Paybox. Ce bundle Symfony2 a pour but de faciliter l’intégration des solutions de paiement proposées par Paybox.
Il n’intègre pas de modèle de données ni de logique métier, il est uniquement destiné à permettre de vous acquitter des tâches rébarbatives liées à l’intégration d’un système de paiement, telles que :
- Le calcul du hash hmac en fonction des paramètres de la transaction
- Le test de la disponibilité du serveur avant la transaction
- La vérification de la signature avec open ssl lors de la réponse IPN
- La notification d’une réponse IPN par un événement
Le bundle fait tout cela pour vous, il ne vous reste plus qu’à définir les paramètres de votre transaction, écrire la logique métier lors des retours d’IPN (par l’écoute d’un événement) et la mise en forme des informations au retour du paiement.
Paybox propose plusieurs solutions de paiement et modes de fonctionnement. Le plugin n’intègre pour le moment que “Paybox System” en mode Hmac. Ce système de fonctionnement permet néanmoins d’effectuer un grand nombre de d’opérations telles que : des paiements standards, des paiements en plusieurs fois et la souscription à un abonnement.
L’avantage du mode Hmac est qu’il ne nécessite pas l’installation de cgi.
Toutes les informations sur les différents modes de paiements, le paramétrage et le fonctionnement sont disponibles dans la documentation officielle.
Pré-requis
- PECL hash >= 1.1
- module openssl activé
Installation
Avec composer :
Configuration
Les informations de votre compte, qui vous seront délivrées à la création de votre compte client chez Paybox, doivent être configurées dans le fichier “config.yml”.
Utilisation
Un controller d’exemple est intégré au bundle. Il comprend deux actions qui permettent d’afficher le formulaire d’appel du système de paiement et d’afficher une page lors du retour de la plate-forme de paiement.
La méthode getUrl() effectue une routine qui teste la disponibilité du serveur et lève une exception le cas échéant.
Pour afficher le formulaire, la vue twig utilise une macro twig qui permet d’effectuer l’afichage du formulaire comme il se doit.
La logique métier, pour valider un paiement, est à intégrer dans un listener qui écoute l’événement “paybox.ipn_response” qui est levé automatiquement par le bundle lors de l’appel IPN effectué par Paybox.
Le listener qui écoute cet événement reçoit en paramètre un objet de type “PayboxResponseEvent” qui contient l’ensemble des paramètres retournés par Paybox et un booléen qui permet de savoir si la vérification de la signature a réussi.
Le bundle contient un exemple de listener qui se contente d’écrire un fichier texte pour chaque retour d’IPN.
Pour créer votre propre listener il suffit de déclarer un service qui écoute l’événement “paybox.ipn_response”. Ci dessous la déclaration du listener d’exemple.
Passage en mode production
Par défaut la méthode getUrl() retourne l’url du serveur de pré-production. Il suffit lui spécifier “prod” en paramètre pour obtenir l’url du serveur de production disponible, getUrl(‘prod’).
Ressources
Tous les paramètres de l’API Paybox System, les informations sur le fonctionnement du mode Paybox Hmac et toutes les informations relatives à Paybox en général sont disponibles dans les documentations officielles.
Le dépot Github du bundle.