Dolibarr v17.0.1 / Stripe / PHP 7.4.33 / O2Switch

Bonjour à tous les dolibarriens,

depuis la maj en v 17.01 depuis la v16.0.5, aucun client n’a plus pu me régler par Stripe.

Il y a systématiquement le message « Keys for idempotent requests can only be used with the same parameters they were first used with. Try using a key other than etc… »

J’ai beaucoup cherché, c’est un problème rencontré régulièrement depuis longtemps, semble t’il.

Au niveau diagnostic, je ne sais dire si:

  • C’est le changement de version. Probable, car la veille de la mise à niveau, un paiement s’est bien passé, mais pour un nouveau client…
  • C’est parce que les clients qui doivent me régler ont déjà effectué un paiement il y a quelques mois

Même en utilisant l’url basique qui se trouve dans la configuration du module Stripe, l’erreur intervient.

J’ai vu que le module Stripe avait pas mal changé entre la 16.0.5 et la 17.0.1. j’ai même essayé de mettre le module (Qui est dans /stripe) de la v16 dans la v17, cela ne change rien.

Suis je le seul à avoir ce soucis ?

Bonne journée à tous

Hello,

Apparemment, il y a un probleme de compatibilite entre le module stripe et php 8. Essayer de repasser en php 7.4.

Bonne soiree

Bonjour, merci pour votre message, ça aurait pu être une piste, mais je n’ai pas changé de version de PHP, je suis en v7.4.33.

Suis je le seul à ne plus pouvoir utiliser les liens Stripe indiqués dans les factures ?

Bonsoir,

De mon coté je n’ai pas de souci et n’arrive pas à reproduire votre problème.

Desolé

Bonjour,
J’utilise Dolibarr 17.0.2 et j’ai le même problème : après un échec de paiement, impossible de payer à nouveau. Pour corriger cela, j’ai édité le fichier /stripe/class/stripe.class.php et j’ai rajouté un bout de code à la ligne 519 : $arrayofoptions[« idempotency_key »] = $description . microtime(true); . Cela fonctionne désormais correctement après un échec de paiement. Je serais tout de même rassuré si une autre personne pouvait confirmer que la modification est saine et qu’elle ne risque pas de poser un problème côté Stripe …

Bonjour,
Petit up sur ce sujet, je rencontre le même problème « idempotent »
je ne suis pas dev et les modifs de code c’est pas trop mon truc … alors est-ce que qqun de la dream team peut se pencher sur le sujet svp ? ça me paraît un peu essentiel dans l’utilisation de ce bel outil qu’est Dolibarr mais c’est mieux qd ça fonctionne :))

Dolibarr 16.0.5
PHP 7.4.33

Belle journée à tous !

J’ai essayé cette modification, sur des des sites de dev, en v17.0.2, v17.0.3, v18.0.0 et v18.0.1. Le résultat est toujours le même.

C’est bien dommage, car c’était une fonction particulièrement appréciée par mes clients, alors en attendant, je passe par un formulaire de paiement « générique » de Stripe. Mais cela ne valide pas directement les paiements dans Doli.

Je m’étonne que si peu de monde utilise ou rencontre ce problème.

Bonsoir,

Peut être que pas beaucoup de monde utilisent ce moyen de paiement

J’ai le même problème, depuis hier, sans raison, après 1 mois de fonctionnement sans histoire…

? ! Une piste

Voici plus d’info :

Le payement qui ne passe pas

Le précédent paiement effectué, par le même client !
La facture est partiellement soldée par un acompte de 50 % et c’est le solde qui ne passe pas.

image

Cela a peut être un rapport

Dolibarr 18.04 - PHP 8.1

Bonjour, j’ai essayé toutes les versions depuis mon post initial, toujours le même problème. Le formulaire ne s’affiche même pas bien. On ne peut saisir que le nom du porteur de la carte, et rien d’autre.

Je suis en train de tester une solution, dès que j’ai des retours je publie ici

Bonjour,

En cherchant sur Github et en regardant un peu ici et là.

La raison serait la suivante :

Si un paiement était tenté et échouait, une intention de paiement était créée.
Mais si l’on change quelque chose sur l’objet à payer (montant ou autre qui ne change pas la clé d’idempotence), la réutilisation de la même intention de paiement n’est pas autorisée par Stripe.

Je teste cette solution : Dans Configuration → Divers

STRIPE_REUSE_EXISTING_INTENT_IF_FOUND = 1

Qui désactive le message d’erreur et permet de refaire une tentative.

Merci de vos retours.