Stripe fonctionnement module

Bonjour,
Je tente de passer de Paypal vers Stripe, l’intégration dans Dolibarr ressemble en tous points à celle de Paypal donc ok.

Sauf que le lien de la facture - celui-ci fonctionne bien - mais c’est la validation du paiement qui envoie l’erreur suivante :
Invalid source object: must be a dictionary or a non-empty string. See API docs at https://stripe.com/docs

Les API et webhook sont bien paramétrés dans Stripe et intégrés dans le module.

Qqun aurait un retour d’expérience ?

Il semblerait qu’il faille "lier Stripe et Dolibarr … si oui comment ? car le lien dans Stripe renvoie vers dolibarr.org et là je ne vois nullement une action de connexion à un quelconque compte …

Merci pour vos retours :happy:

Bonsoir gapprod,

Le « lien » se fait en indiquant les clés d’API (clé secrète et clé publique) dans les paramètres du module Stripe de Dolibarr :wink:

Ensuite, exceptionnellement, tant qu’on est pas encore en V11, il vous faudra aller dans « Configuration > Divers » et ajouter le paramètre

STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION
avec la valeur 1 pour utiliser la nouvelle validation 3D Secure 2 (nécessaire depuis le 14 Septembre 2019 suite à l’entrée en vigueur de la DSP2 : Directive sur les Services de Paiement de la Commission Européenne).

Plus d’infos ici : https://wiki.dolibarr.org/index.php/Module_Stripe_FR#Variantes

1 J'aime

@jtraulle … tu es merveilleux :happy:

Merci beaucoup !!

Belle journée
Christophe

Bonsoir,

Je rebondi sur le sujet car j’utilise Stripe depuis quelque temps.
Au départ avec Dolibarr 9.0.4 : tous marchait bien ! :sunglasses:

Sous Dolibarr 10.0.2 et prévenu par Stripe et par le Wiki de Dolibarr j’ai activé la valeur STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION (valeur 1) au bon endroit.

Un client à voulue me régler : :sick: :sick: :sick: Error 500 => les logs PHP disent : « PHP Fatal error: Uncaught Error: Call to a member function getMessage() on null in /mnt/web/gestion/htdocs/public/payment/newpayment.php:679 »

Or la ligne concernée est celle-ci : $errormessage="CantRetreivePaymentIntent ".$e->getMessage();
Donc le paiement bloque et la gestion d’erreur plante !!!

Quelqu’un a-t-il une idée ?

Cordialement,
Sylvain Legrand.

bonjour,

Peut-être que hier c’était trop tard !!! :dry: :lol:

La solution semble être ici (GitHub).

Cependant un problème plus gênant apparaît : Pour une facture de 500€ comprenant un acompte de 300€ => Dolibarr met le reste à payer de 200€ sur la fiche facture = OK // Le lien de paiement réclame, lui, LES 500€ DE DÉPART :blink: :woohoo: :woohoo: :woohoo:

Cordialement,
Sylvain Legrand.

1 J'aime

:silly: :silly: Oooops … certains vont s’enrichir et avoir quelques trop perçus par la même occasion :confused:

je ne comprends pas ce qu’il faut faire pour appliquer la solution… Est ce le manque de café ?

Bonjour,

Trois fichiers sont modifiés : on repère les lignes en rouge et on remplace par celle en vert.

Pour le 2ème problème : fichier « …/htdocs/public/payment/newpayment.php » ligne 1040 (pour moi)
Changer $amount=price2num($invoice->total_ttc - ($invoice->getSommePaiement() + $invoice->getSumCreditNotesUsed()));
Par $amount=price2num($invoice->total_ttc - ($invoice->getSommePaiement() + $invoice->getSumCreditNotesUsed() + $invoice->getSumDepositsUsed()));

Cordialement,
Sylvain Legrand.

Bonjour,

J’ai un soucis avec Dolibarr v10.0.3 et Stripe.
J’ai bien renseigné la chaîne ‹ STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION › à 1.
J’ai, je pense, correctement renseigné les valeurs API et webhooks (public et secrets) là où il faut dans doli et stripe.
La seule chose que j’ai fait au jugé concerne, sur le site de stripe, les types de Webhooks à écouter. Dans le doute, j’ai demandé à tous les écouter.

J’ai donc ma facture client, le client paye par CB, tout se passe bien : différentes choses sont créées côté Stripe et, chez doli, je vois le paiement apparaître et la facture classée comme payée, l’écriture bancaire qui va avec.
Sauf que Stripe vire effectivement le montant -minoré de leur commission- quelques jours plus tard et là je vois que ça m’a créé une nouvelle écriture bancaire dans l’autre sens !
J’ai une écriture de prélèvement sur mon compte bancaire du montant net (prix payé par le client moins la commission stripe) labellisé « Stripe Payout » !
Alors qu’en vrai, évidemment, j’ai bien reçu un virement de la somme nette.

Que le module en liaison avec Stripe crée 2 écritures, pourquoi pas mais il faudrait que l’écriture de prélèvement soit du montant de la commission stripe.
Et pour faire correctement les choses, il faudrait que cela soit relié avec une facture fournisseur automatiquement créée, du montant de ladite commission.

Est-ce que le module est capable de faire ces actions ?
Sinon, que changer dans ma configuration pour qu’il ne me crée pas une écriture de débit du montant viré par Stripe ?

Par ailleurs, j’ai l’impression que Stripe ne veut pas prendre de paiement sur facture proforma (aussi appelé « Commande » dans doli) mais uniquement sur des factures client.

Quelqu’un pourrait-il aider ?

dans une compta ideal, vous devez dédier un compte bancaire fictif de cantonnement y compris dans dolibarr car le paiement ne transite pas directement du client à vous mais passe par ce compte stripe intermédiaire

client -> stripe ( avec paiement sur la facture avec usage du compte stripe dédié dans dolibarr) puis virement stripe vers votre compte (payout stripe dans dolibarr du compte dédié stripe vers votre compte courant)

Hmm je comprends le fond mais dans la pratique le module Stripe ne peut pas (encore ?) faire cela car sa configuration ne demande qu’un seul compte bancaire (le final logiquement) et pas le compte intermédiaire.

Jusqu’à présent, j’avais un système qui fonctionnait très bien : je rentrais les paiements CB brut puis, en fin de mois, j’émettais la facture fournisseur stripe qui synthétise leurs commissions et je la payais en tant que prélèvement sur le compte bancaire où étaient enregistrés les paiements CB.

Bonjour goldotron,

Rien ne t’empêche de créer un second compte dédié à Stripe et à associer ce compte dans le module Stripe.
Comme le dit ptibogxiv, cela reste un compte distinct.

Pour ma part, les paiements Stripe que je reçois vont sur ce compte ; j’effectue aussi des factures fournisseur correspondantes aux commissions paiement par paiement qui sont réglées en prélevant le montant sur le compte Stripe dans Dolibarr (ça me permet de conserver les dates et les liens avec les factures clients). J’utilise l’API REST pour le faire automatiquement (sinon, il est vrai qu’à la main, cela est assez fastidieux).

Ensuite, lorsque Stripe envoie un paiement sur le compte courant, je fait un virement interne entre le compte Stripe Dolibarr et le compte courant Dolibarr.

C’est ce que j’ai trouvé de plus proche pour ne pas perdre d’info :wink:

Bon alors 2 questions :happy:

1/ Comment fonctionne ce truc d’API REST ?
Il y a un tuto quelque part ?

2/ Sauf erreur de compréhension de ma part, ça ne résout pas trop mon soucis du départ.
Mon soucis est que le payout de stripe (arrivé tout seul sur doli, via le module stripe j’imagine) crée une écriture de prélèvement (et non de virement en ma faveur) du montant net de de la vente.
Je me retrouve donc avec uniquement le montant de la commission en banque !

Il y a principalement ces deux ressources :

Concernant la création automatique de l’écriture de prélèvement, cela vient probablement des Webhooks Stripe si tu les as paramétrés avec les URLs fournies dans la config du module Stripe de Dolibarr (personnellement, je n’ai pas configuré les Webhooks Dolibarr sur Stripe car je préfère gérer tout cela moi même via l’API REST ; cela me permet un plus grand contrôle sur ce qui est créé, quand, etc.).

Merci pour les liens mais je vais laisser tomber la voie de l’API REST, bien au-delà de mes compétences ; et ça ne vaut pas le coup d’apprendre pour la faible quantité de transactions CB que je rentre.

Tu as donc une utilisation avancée du module mais ce qui me chiffonne, c’est que moi, avec mon install très basique, ça ne fonctionne qu’à moitié !

Je dois probablement écouter trop d’events via les webhooks mais lesquels ne plus écouter ?
Ce n’est apparemment inscrit nulle part dans la courte doc dolibarr sur le sujet :unhappy: Ladite doc nous dit seulement ce qu’il faut entrer dans la config « Divers » de dolibarr selon que l’on souhaite passer par un portail hébergé par Stripe pour les paiements ou bien passer par l’interface de Dolibarr (et ce n’est pas déjà hyper clair).

Donc la question est : avec une installation a priori standard de Stripe sur Dolibarr 10.0.3, en mode ‹ STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION › à 1, quels webhooks écouter et quels ne pas écouter ?

La liste semble être ici mais c’est trop cryptique pour moi…
https://stripe.com/docs/api/events/types

Si tu ne veux pas que cela crée le prélèvement, tu peux ne pas écouter payout.created ni payout.paid et les traiter manuellement :wink:

1 J'aime

Well, disons que je veux bien recevoir les webhooks du payout mais à condition que ça le fasse en entier.
C’est à dire que ce ne soit pas un prélèvement mais plutôt un virement interne de la valeur de vente nette depuis le compte bancaire de transit vers le compte bancaire courant.

Si j’ai bien compris, le module stripe ne sait pas encore le faire, n’est-ce pas ?

Alors, de ce que je lis/comprend du code, il y a deux constantes :

  • STRIPE_BANK_ACCOUNT_FOR_PAYMENTS
  • STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS

Par défaut, dans l’interface de configuration du module Stripe, le choix du compte proposé est pour STRIPE_BANK_ACCOUNT_FOR_PAYMENTS (le compte Stripe sur lequel les paiement s’accumulent avant virement).

Il faut définir STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS selon la même procédure que STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION en mettant en valeur l’id du compte destination du virement interne (le compte courant).

Normalement ensuite le compte Stripe est débité via un virement interne et le compte courant crédité (et il reste les commissions sur le compte Stripe).

Edit : STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS peut être édité via la configuration du module Stripe si MAIN_FEATURES_LEVEL est >= à 2 (non recommandé en production). Je pense qu’il s’agit d’une erreur et que cela devrait ne pas être nécessaire normalement.
Voir https://github.com/Dolibarr/dolibarr/blob/628018ca2b8948e0d5398f806a0c98931cf6b351/htdocs/stripe/admin/stripe.php#L358

2 J'aimes

Merci infiniment !!!
Je vais tester ça rapidement.

edit : après test grandeur nature, je confirme que le paramétrage en question fonctionne parfaitement.
La valeur de la vente nette est bien transférée, lors du stripe payout, du compte transite vers le compte courante par un virement interne créé automatiquement.

Le compte de transit ne dispose alors que de la valeur de la commission Stripe, qui servira à payer la facture Stripe mensuelle.

En un mot, c’est parfait.
Merci encore jtraulle ! :happy:

Est ce que cette configuration a été ou sera rajouté dans le module de Stripe?
A l’heure actuelle, c’est la seule possibilité?
Existe t’il une solution pour qu’une facture de commission soit généré directement lors du paiement?

Merci.