Navigation

Related Articles

Back to Latest Articles

LexikPayboxBundle


Olivier
LexikPayboxBundle

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.

http://www1.paybox.com/telechargement_focus.aspx?cat=3

Le dépot Github du bundle.

https://github.com/lexik/LexikPayboxBundle

Show Comments (9)

Comments

  • Nikaw

    Super !! Merci !
    Et à quand un bundle Kwixo ?

    • Article Author
  • Soullivaneuh

    Merci pour ce bundle ! 🙂

    Petite question, le listener ipn sera appele par le syteme paybox en arriere plan non ?

    Comment fait-on pour tester en locale du coup ?

    • Article Author
  • Olivier

    Oui l’ipn est un appel fait par le serveur de Paybox vers le serveur de l’application. Il faut donc que les urls d’ipn que l’on fournis à Paybox soient accessibles de l’extérieur.

    Donc pour tester l’application installée en local, il faut configurer le routeur pour rediriger les appels vers le poste ou l’application est installée (mieux vaut utiliser un numéro de port exotique). Seconde possibilité, faire des tests fonctionnels pour simuler la réponse.

    • Article Author
  • Amandine Aupetit

    Merci pour ce bundle, ça fait gagner beaucoup de temps! 🙂

    Juste une remarque : pourquoi limiter les devises aux 6 les plus « classiques »? J’utilise le XPF (code 953), ce qui m’oblige a modifier votre bundle directement, c’est dommage non? :p

    • Article Author
  • Amandine Aupetit

    Merci pour ce bundle, ça fait gagner beaucoup de temps! 🙂

    Juste une remarque : pourquoi limiter les devises aux 6 les plus \"classiques\"? J\’utilise le XPF (code 953), ce qui m\’oblige a modifier votre bundle directement, c\’est dommage non? :p

    • Article Author
  • Olivier

    Bonjour, c’est vrai que j’étais partis uniquement sur les devises les plus « communes » et le système est même trop limitant à ce niveau.
    On va rajouter dans la configuration du bundle la possibilité de spécifier les devises que l’on souhaite.

    Vous pouvez ouvrir une issue sur https://github.com/lexik/LexikPayboxBundle/issues?state=open

    • Article Author
  • Olivier

    La possibilité de configurer les devises autorisées a été rajoutée.

    https://github.com/lexik/LexikPayboxBundle#configuration

    • Article Author
  • Amandine Aupetit

    C’est nickel, merci! 🙂

    • Article Author
  • Amandine Aupetit

    Autre question : sachant que la clé HMAC de production fournie par Paybox expire au bout de 30 jours, et qu’il faut donc dans l’idéal la changer tous les mois, y’a t’il un moyen de définir le paramètre autrement que dans le config.yml ?
    Je cherche à le définir dynamiquement à chaque appel (pour aller le chercher en DB, ce qui me permet de créer une interface web pour le changer facilement plutôt que de modifier le code).
    Y’a t’il un moyen de le faire avec votre bundle?

    • Article Author

Recevez nos articles