Développement module HelloAsso Checkout

Pour aider à trouver le problème, voici mon log apache :

[Tue Feb 20 14:26:11.795130 2024] [mpm_event:notice] [pid 162:tid 139912293377600] AH00489: Apache/2.4.43 (Unix) configured -- resuming normal operations
[Tue Feb 20 14:26:11.815887 2024] [core:notice] [pid 162:tid 139912293377600] AH00094: Command line: '/opt/apache2-2.4/usr/sbin/apache2 -d /srv/data/.config/apache -f apache2.conf'
[Tue Feb 20 14:49:08.552626 2024] [autoindex:error] [pid 54691:tid 139911646476032] [client XXX.XXX.XXX.XXX] AH01276: Cannot serve directory /srv/data/web/vhosts/XXXXX.fr/htdocs/custom/helloasso/: No matching DirectoryIndex (index.php,index.html,index.htm) found, and server-generated directory index forbidden by Options directive
[Tue Feb 20 14:49:11.001683 2024] [autoindex:error] [pid 54691:tid 139911562548992] [client XXX.XXX.XXX.XXX] AH01276: Cannot serve directory /srv/data/web/vhosts/XXXXX.fr/htdocs/custom/: No matching DirectoryIndex (index.php,index.html,index.htm) found, and server-generated directory index forbidden by Options directive

et le log www-error :

[20-Feb-2024 16:05:33 Europe/Paris] PHP Fatal error:  Uncaught Error: Call to undefined method FormSetupItem::setAsSelectBankAccount() in /srv/data/web/vhosts/XXXXX.fr/htdocs/custom/helloasso/admin/setup.php:128
Stack trace:
#0 {main}
  thrown in /srv/data/web/vhosts/XXXXX.fr/htdocs/custom/helloasso/admin/setup.php on line 128

@hop , on a la même erreur en fait …

J’ai réussi à bypass le problème avec la fonction permettant de définir le compte bancaire par défaut pour essayer de tester le module.

Malgré le fait que j’ai vérifié 50 fois mes client_ID et client_secret je ne parviens pas à me connecter à l’API helloasso « ErrorBadClientIdOrSecret »
Je pense qu’il y a un problème avec la fonction « doConnectionHelloasso() »

J’arrive pourtant à obtenir un token en passant par PostMan

En espérant t’aider un peu

Tu utilises une instance helloasso test type helloasso-sandbox ?
Car si oui vérifie que tu as bien mis les valeurs dans la version test de ces constantes
Exemple : HELLOASSO_TEST_CLIENT_ID

Sinon pense a activer la constante HELLOASSO_LIVE pour utiliser une instance type helloasso

Pour le problème de la fonction qui fait error 500 s’est dû au fait que ce module est compatible uniquement à partir de la v20

J’ai testé les deux (côté dolibarr) : live et test.

Si je comprends bien ton code, tu vérifies s’il y a une clé dans les champs concernant le mode test pour activer le mode test ?

Côté helloasso je n’ai pas de choix à faire, il n’y a que les clés dans « intégration API ». On ne peut pas sélectionner test ou live.

Pour l’erreur 500, je me passerai de la définition du compte bancaire pour le moment.

Une idée pour résoudre mon problème ?

J’ai essayé sur une instance en version 20 et ça ne fonctionne pas non plus…

Peux tu en dire plus: Quelle erreur technique as-tu dans les log Dolibarr et Apache

Et bien il n’y a pas d’erreur dans les logs Dolibarr (syslog) ni dans Caddy (server web, je n’utilise pas apache).

En fait dans la page de paramètre du module, je rentre mes clés et mon slug, j’enregistre et quand je fais tester la connexion j’ai une « infoboite » rouge en haut à droite avec « BadCliendIDorSecret »… pas plus d’informations

Une amélioration a été faite dans le module pour avoir plus d’info sur l’erreur. Peux tu reprendre la dernière version en git et retester…

Je viens de mettre à jour, toujours la même erreur mais le message d’erreur a un peu changer « Bad client ID or secret » il y a des espaces dedans maintenant.

Autre remarque : quand je mets mon client ID et secret dans les cases correspondantes au mode test, il ne les retient pas.

Bon pour une raison étrange maintenant cela fonctionne.

Il doit y avoir un bug au niveau du bouton « Helloasso live enabled (otherwise test/sandbox mode) ».

En mode sandbox il me semble avoir déjà eu des problèmes avec l’API helloasso qui ne fonctionne pas dutout sur leur server test.

Le module semble fonctionnel en mode production.

EDIT : je viens de faire un premier paiement. Le processus de paiement fonctionne, par contre l’utilisateur doit de nouveau remplir son nom, prénom et date de naissance alors que ces données sont déjà renseignées dans Dolibarr. et petit problème après paiement, je reçois un mail de mon instance dolibarr :

Id facture: 2269
Lien: https://*********.fr/compta/facture/card.php?id=2269
Actions complémentaires après paiement : Erreur
* Payment was done in a different currency that currency expected of company
Une annulation a été effectuée sur toutes les actions Post paiement. Vous devez compléter les actions complémentaires manuellement si elles sont nécessaires.

Informations techniques:
Système de paiement en ligne: helloasso
Voici l'identifiant de la transaction: :
URL de retour de paiement: /public/payment/paymentok.php?fulltag=INV%3D2269.CUS%3D451.PM%3Dhelloasso&code=succeeded

tag=INV=2269.CUS=451.PM=helloasso
token=
paymentType=
currencycodeType=
payerId=
ipaddress=
FinalPaymentAmt=28.9

Après un test de ma part le bouton Helloasso live enabled (otherwise test/sandbox mode) marche pour moi avec la dernière version et l’API test.

Pour le paiement pourrais-tu me donner la marche suivit car je n’ai pas l’erreur avec le module multicurrency activé et un tier avec une autre devise.

Aussi dans le cas d’un tier comme on ne peut pas savoir quel contact remplit le formulaire je ne pense pas que préremplir le formulaire soit nécessaire. Peut-être vérifier s’il n’existe qu’un contact mais là encore la personne qui remplit peut-être quelqu’un dont nous n’avons pas le contact.

Et bien de mon côté le mode test ne fonctionne pas dutout et le bouton « live » se comporte de manière étrange : je dois cliquer dessus plusieurs fois pour qu’il reste enclenché.

Pour le paiement que j’ai effectué il s’agissait d’une facture en euro, j’ai payé en cliquant sur le lien dolibarr de paiement et j’ai effectué le paiement en euro via checkout. Je n’ai pas le module multicurrency activé.

D’un point de vu pratique je pense que par défaut il faudrait pré-remplir les champs prénom, nom etc et si la personne qui paye n’est pas celle indiqué, lui laisser la possibilité de modifier ces données. Ce serai un gain de temps dans la plupart des cas où la personne qui paye est également la personne facturée dans Dolibarr.

@dboulo où est-ce que ton module est disponible, je veux bien faire parti des test ?

Dans le cas de lien qui n’est pas un paiement libre mais un paiement d’un objet dolibarr (facture, adhésion d’adhérent), on connait le tiers ou adhérent. Donc on peu passer à l’api l’adresse connu (j’ai mis un todo dans le code du hook qui genere l’appel d’api…). Pour l’adhésion, on a le nom prenom et adresse. Pour la facture on a le nom du tiers sans détail sur nom et prénom, mais on peut mettre ce nom de tiers donc le nom avec un prénom vide, et l’adresse de la société, du moins on peu essayer voir ce que cela donne…

Y-a-t’il des mises à jours par rapport aux problèmes que j’ai remonté ?

Oui en effet des mises à jour ont été ajoutés pour régler les problèmes remontés.
Cela serait d’une grande aide si tu pouvais tester encore une fois.

Hola, j’ai mis à jour avec la dernière version 20 de dolibarr et du module helloasso.

  • J’ai toujours ce bug avec le bouton du mode test
    Je précise un peu ce qu’il se passe :
  1. J’entre les mêmes clés dans les champs de test
  2. J’enregistre
  3. Je bascule le bouton sur test
  4. Le mode du module ne change pas, il reste en mode live mais toutes les infos restent dans les champs
  5. Je réactive le module
  6. Mes champs test (slug, clé publique, clé privée) ont disparu et le module est repassé en mode live

  • Lors de l’initiation d’un paiement j’ai bien les champs préremplis seulement c’est pré-rempli en mode « organisme » (cf screenshot)

J’espère que mes explications vous aiderons

Hey,

  • Pour le premier point, lorsque tu cliques sur le bouton du mode test, peux-tu regarder dans la console du navigateur si tu avais une erreur. Si oui, je veux bien un screen. Ou alors une vidéo montrant les étapes de ta configuration.
    Car même avec tes explications, je n’arrive pas à reproduire le bug.

  • Pour le second point, je dirais que c’est normal si c’est une facture que le formulaire soit directement remplie avec les données de l’entreprise.

Encore une fois merci pour ton aide.

Hola,

Autant pour moi le bug du bouton était lié à un problème de cache et d’autorisation sur mon serveur.
Cependant je ne parviens toujours pas à faire fonctionner le mode test, j’obtiens ce message d’erreur : ErrorFailedToGetTokenFromClientIdAndSecret

Pour le second point, je facture pourtant un particulier (un tiers) qui est aussi couplé à un adhérent. Est-il possible de faire la différence entre un tiers et une entreprise pour cocher ou non la case « organisme » du formulaire helloasso ?

Je viens de tester à nouveau un paiement avec votre module et j’ai toujours cette erreur sur la monnaie utilisée pour le paiement. Je n’ai pas le module multicurrency d’activé, tous mes paiements sont en euros donc je ne comprends pas d’où vient l’erreur … C’est un peu embêtant car derrière Dolibarr ne valide pas la facture alors que le paiement passe correctement.

Id facture: 2309
Lien: https://xxxxxxxxxx.fr/compta/facture/card.php?id=2309
Actions complémentaires après paiement : Erreur
* Payment was done in a different currency that currency expected of company
Une annulation a été effectuée sur toutes les actions Post paiement. Vous devez compléter les actions complémentaires manuellement si elles sont nécessaires.

Informations techniques:
Système de paiement en ligne: helloasso
Voici l'identifiant de la transaction: :
URL de retour de paiement: /public/payment/paymentok.php?fulltag=INV%3D2309.CUS%3D451.PM%3Dhelloasso&code=succeeded

tag=INV=2309.CUS=451.PM=helloasso
token=
paymentType=
currencycodeType=
payerId=
ipaddress=
FinalPaymentAmt=34.96

Petit Up ?