Module de Paiement Stripe

Stripe est un prestataire de paiement externe https://stripe.com/fr qui propose une API moderne et une interface de paiement extrêmement conviviale et efficace.

Ce module permet les paiements à l’acte et les paiement récurrents.

Configuration

La configuration de ce module de paiement du plugin Bank se fait dans le menu Configuration > Paiements en ligne.

  • Live Secret Key : Clé secrète utilisée quand vous êtes en mode production ;
  • Live Publishable Key : Clé publique utilisée quand vous êtes en mode production ;
  • Mode Test : cochez la case pendant la phase de test de votre boutique, pour vérifier son bon fonctionnement avec des CB ou un SEPA factices (aucun paiement n’est réalisé dans le mode test). Vous devez aussi être en mode test dans l’interface Stripe ;
  • TEST Secret Key : Clé secrète utilisée quand vous êtes en mode test
  • TEST Publishable Key : Clé publique utilisée quand vous êtes en mode test
  • Webhook Endpoint : cette URL doit être renseignée dans l’interface d’administration de Stripe (https://dashboard.stripe.com/account/webhooks) si vous utilisez les paiement récurrent
    Attention : l’URL contient un identifiant qui dépend de l’informations ID, renseignez la bien avant de copier cette URL dans l’interface d’administration de Stripe.

Pour des numéros de cartes de crédit en mode « test » voir https://stripe.com/docs/testing#cards

Discussion

14 discussions

  • 2

    J’ai un webhook qui est configuré par défaut côté Stripe avec « Tous les événements ».

    Du coup je reçois pas mal d’appels sur /bank.api, dont certains qui tombent en 400 ou 404, ce qui fait râler Stripe.

    Notamment des « checkout.session.completed » qui tombent un coup sur deux en 404, je n’arrive pas à savoir pourquoi.
    Je vois bien les 400 et 404 dans les logs Apache, mais pas de logs de bank, et dans les stripe*.log j’ai des traces de données reçues.

    Du côté Stripe, quels sont les événements réellement utiles pour Bank, lesquels sont à désactiver ?

    • Je m’auto réponds : ce serait la liste des fonctions stripe_webhook_* qui sont définies, à savoir :

      checkout_session_completed
      customer_subscription_created
      customer_subscription_deleted
      invoice_payment_succeeded
      invoice_payment_failed
      invoice_payment_result

    • Au final, les events à utiliser dans les webhooks côté Stripe sont :

      checkout.session.completed
      customer.subscription.created
      customer.subscription.deleted
      invoice.payment.succeeded
      invoice.payment.failed

      Les autres events envoyés par Stripe ne sont pas traités mais Bank leur répond simplement avec un header 200 (accepté).

    Répondre à ce message

  • 2

    Bonjour,
    Déjà, merci pour ce plugin (et les autres) qui marchent très bien.
    Je l’utilise pour permettre à des visiteurs de réserver des places pour des événements (via reservation_bank), avec un paiement via stripe. Cela fonctionne pour le paiement à l’acte

    J’aurais par contre voulu proposer des paiement en plusieurs fois :
    Du genre pouvoir payer, par CB et via Stripe :
    -  le total (ça, je sais faire et c’est déjà implanté)
    -  En trois fois (débit une fois par mois)
    -  En six fois (débit une fois par mois)

    J’ai essayé avec un formulaire d’abonnement d’exemple, :

      [(#FORMULAIRE_PAYER_ABONNEMENT{#PRIX*,
     		      #ARRAY{
     			      montant_ht,PRIX_HT*,
     			      id_commande,#ID_COMMANDE,
     			      id_auteur,#ID_AUTEUR,
     		      }
     	      })]

    Où j’ai mis les variables (prix, prix_ht, id_commande, id_auteur) en dur.
    En Bo, j’ai bien renseigné les api key/secret key, en mode test, ainsi que le webhook, dont j’ai mis l’adresse dans le dashboard de Stripe.

    Quand je teste, la transaction s’enregistre bien en base, mais j’arrive sur bank_retour_echec (d’ailleurs avec un &type=acte).
    Le champ erreur de la base et le log me mette sur la voie et donne ce message :
    transaction 525 refusee ou annulee pour : sub_failed (Erreur creation subscription (plan or customer missing)

    Visiblement, il ne trouve pas le « plan » de paiement (d’un autre coté, je n’ai pas trouvé comment lui en transmettre un.. il m’avait semblé qu’il le créait à la volée) ou le « customer » (étrange, car les paiement à l’acte marche).

    Si quelqu’un avait une idée pour implanter le paiement en plusieurs fois via Stripe, je suis preneur (même si apparement Stripe est pas vraiment conçut pour).

    • Bonjour Gaël,

      Je rencontre aujourd’hui le même problme.

      As-tu trouvé la raison de l’erreur que tu décris ?

      Cordialement,

      Laurent

    • Pour info : concernant les paiements différés, échelonnés, il existe un article dans la documentation Stripe qui fait assez bien le tour.

      En gros…

      Le processus est simple : en tant que propriétaire du commerce, vous recevez immédiatement la totalité du montant dû, frais déduits (comme lors d’un paiement par carte bancaire), sans avoir à gérer le financement. Ce sont les prestataires de paiements fractionnés qui prennent en charge l’inscription des utilisateurs, la gestion des versements échelonnés et l’encaissement des paiements, pour vous permettre de vous consacrer pleinement au développement de votre entreprise.

      L’article complet : https://stripe.com/fr/guides/buy-now-pay-later

      Il est possible d’activer dans le Dashboard de votre compte Stripe un prestataire de paiements fractionnés. (Dashboard -> Paramètres)

      « Reste » alors à intégrer cette option dans le plugin ’Module de Paiement Stripe’ ou faire d’autres modules pour chaque prestataire de paiement fractionnés ? Je pose la question par curiosité. Perso, je n’en ai pas le projet.

    Répondre à ce message

  • Bonjour,
    Mes clients me remontent le fait que Stripe enregistre les cartes de paiement automatiquement, le support de Stripe nous dis d’ajouter ce paramètre dans le checkout :
    data-allow-Remember-me = « false »
    Je ne vois pas ou intégrer cela dans le plugin...
    Une idée ?
    Bien à vous,
    Julien

    Répondre à ce message

  • Bonjour,
    J’ai une nouvelle question à propos de ce module.
    Savez-vous comment se gère l’encaissement via Stripe en utilisant IdeaL ?
    Ideal est la plateforme de paiement préféré en hollande, c’est plus ou moins du virement express.
    https://www.ideal.nl/en/consumers/what-is-ideal/
    Stripe semble prendre en charge cette option :
    https://stripe.com/docs/payments/ideal

    Est-ce que je mettre cela facilement en place avec BANK ?
    En vous remerciant.
    JuL

    Répondre à ce message

  • Bonjour,
    Je rencontre un soucis avec ce module, je souhaiterais avoir vos lumières sur la question.

    Sur un de mes sites, j’utilise ce module pour encaisser des inscriptions à des événements (via un plugin perso), il est possible de s’inscrire sans être obligatoirement authentifié sur le site.
    Dans le cas ou un inscrit n’a pas de compte auteur sur le site, l’email du webmestre (moi) est utilisé, à la place de celui de l’utilisateur pour les reçus de Stripe, mon email figure aussi sur le backoffice de stripe...
    A quel endroit devrais-je modifier le module pour envoyer les bonnes infos de l’inscrit (prenom, nom, email lesquels sont en stockés dans la BDD mais pas dans spip_auteurs).
    En vous remerciant.
    JuL

    Répondre à ce message

  • 8

    Bonjour,

    Je viens de recevoir un email de stripe à propos d’une nouvelle API, est-ce que cela va impacter ce module ?

    Bonjour,

    Le 14 septembre 2019, une nouvelle directive européenne sur l’authentification forte du client, également appelée Strong Customer Authentication (ou SCA), imposera l’authentification à deux facteurs pour de nombreux paiements en ligne en Europe. Les paiements concernés qui ne seront pas authentifiés seront refusés par les banques de vos clients.

    Afin de vous aider à vous préparer à la réglementation SCA, nous avons lancé une nouvelle API de paiement et des produits prêts à l’emploi intégrant la conformité à la SCA. Pour éviter le refus de nombreux paiements européens et vous préparer à la nouvelle législation, vous devrez modifier vos flux de paiement et votre intégration Stripe d’ici le 14 septembre 2019. Pour en savoir plus sur la SCA et les modifications nécessaires, consultez notre documentation.

    En vous remerciant,
    Jul

    • Ah je n’avais pas encore eu l’info, j’ai du rater le mail.
      Il y aura surement une mise à jour du plugin à venir pour intégrer ces modifications, en effet :)

    • Je confirme donc que l’intégration de Stripe est impactée par la nouvelle réglementation 3DSv2 qui entre en vigueur en septembre. La nouvelle version est en test et sera bientôt distribuée en mise à jour en v4 du plugin. Par contre elle ne prendra plus en compte les paiements récurrents avec Stripe, car l’intégration a beaucoup changé et je n’ai pas de site utilisateur sous la main pour valider (mais je ne pense pas que qui que ce soit l’utilisait en pratique)

    • Bonjour, j’ai un site qui utilise le paiement récurrent avec Stripe. Une idée des parties du plugin à développer pour qu’il puisse continuer à fonctionner ?

    • @Yohooo Ah ben ça marchait donc ?
      Parce que j’avais développé la feature pour un client, mais ça jamais venu en prod à ma connaissance et j’avais jamais pu tester/debug en prod. Ni entendu parler d’aucun bug/feedback sur le sujet.

      Donc j’ai supposé que personne ne l’utilisait et j’ai pas eu de scrupule à la mettre de côté vu que la nouvelle API suppose pas mal de remise à plat. Il faut réimplémenter les nouvelles API de Stripe, mais ça change pas mal de logique et c’est donc non trivial. J’ai vraiment regardé qu’en diagonal juste pour voir que ça cassait beaucoup de choses et que l’urgence était de mettre à jour le paiement unique avec la nouvelle API

    • ça ne marchait pas par défaut. J’ai dû bricoler des choses sans tout comprendre du fonctionnement du plugin.

      J’ai donc créé ma propre fonction abos_decrire_echeance (qui s’occupe aussi de la préparer) pour qu’elle puisse fonctionner avec Stripe.

      À relire mon code, il semble qu’il manquait une variable ’product’ dans $desc_plan correspondant à l’identifiant du produit.

      Pour ne pas avoir à interroger l’api, je m’étais arrangé pour créer un id_product manuellement dans stripe, puis d’intégrer directement son identifiant la passant une variable dans mes_fonctions.php.

      ... du bricolage, donc.

      Si quelqu’un est partant pour m’aider à remettre à plat tout ça, je veux bien soulever le capot.

    • @Cerdic Je viens de t’envoyer un dev permettant de rendre compatible le plugin Bank, les abonnements Stripe et la réglementation SCA.

      N’hésite pas à me dire ce que tu en penses.

    • Hello,
      Je suis aussi intéressé par les paiement récurent type abonnement ;)
      Je ne sais pas si une mise à jour est prévue !
      Merci

    • Salut @Yohoo
      À défaut d’avoir une maj du plugin, y aurait-il moyen de récupérer ton code rendant compatible les paiements récurrents Stripe avec la norme DSP2 ? J’ai également un site qui tourne et est dans ce cas de figure...
      Merci !

    Répondre à ce message

  • 2

    Bonjour,

    Je suis un peu perdu... j’aimerais activer, via stripe, le système de payement « Bancontact », j’ai donc activé cette méthode de payement dans le dashboard de Stripe, mais lorsque je test un payement via Spip cette méthode de payement n’apparait nul part !

    J’ai l’impression qu’activer une méthode de payement dans stripe ne l’active pas automatiquement dans le checkout. Il faut, je suppose, activer cette méthode de payement quelque part dans le plugin Bank ? mais où ?

    En cherchant un peu dans la documentation de Strip j’ai trouvé la fonction payment_method mais je ne sais pas comment la mettre en place dans le plugin Bank.

    Est-ce que quelqu’un a une solution ?

    Merci d’avance
    Hicham

    • Le choix des méthodes de paiement possible se fait sur cette ligne
      https://github.com/nursit/bank/blob/master/presta/stripe/call/request.php#L181
      et effectivement actuellement il y a juste card en dur dans le code

      Il faudrait donc ajouter un choix des méthodes proposées dans la configuration .
      Est-ce que tu peux tester en mettant à la place

      'payment_method_types' => ['card', 'bancontact'],

      et me dire si ça marche ?
      Le cas échéant j’ajouterai ça dans la configuration de Stripe

    • Bonjour Cerdic,

      Merci beaucoup pour ta réponse rapide ! ça fonctionne parfaitement bien !
      Le checkout se fait correctement et stripe me propose bien Bancontact (utilisé en Belgique pour info).

      Merci encore,
      Hicham

    Répondre à ce message

  • Hello,

    Mon besoin est de faire payer une somme forfaitaire à des internautes non connectés. Est-ce possible ?

    Avec Stripe en mode test, j’utilise le formulaire Payer ainsi :

    <BOUCLE_payer(CANDIDATS){id_candidat}{tout}>
    <h2>Réglement des droits d'inscription</h2>
    <div>MONTANT À RÉGLER : <b>60 €</b></div>
    #FORMULAIRE_PAYER_ACTE{60,
    	#ARRAY{
    		auteur_id, #ID_CANDIDAT,
    		auteur, #EMAIL
    	}
    }
    </BOUCLE_payer>

    Tout marche bien en mode connecté (moi, en tant que Webmaster), mais en mode non connecté cela ne va pas jusqu’au bout.

    J’arrive sur la page

    Annulation
    L’opération a été annulée. Aucun règlement n’a été réalisé.

    Si j’active le mode debugging, j’ai la notice suivante :

    Undefined index : charge in /plugins/auto/bank/presta/stripe/call/response.php on line 40.

    …et dans le fichier stripe_test.log, j’ai l’erreur

    Fichier : plugins/auto/bank/presta/stripe/call/response.php
    Ligne : 41
    Fonction : presta_stripe_call_response_dist()
    call_response : token/charge invalide

    Testé avec SPIP 3.2.4 avec Bank 3.6.7.

    Répondre à ce message

  • Bonjour,

    Je fais des essais avec stripe et je n’arrive pas à faire affiche le pop up stripe, j’au une erreur StripeCheckout is not defined

    Une idée de ce qui cloche ?

    Répondre à ce message

  • 1

    Bonjour,

    Quel est le niveau d’accessibilité de cette solution ?

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom