Mise à jour GA4 1.5.3: Absence d'événement purchase et erreur redirection PayPal

  • Posts: 687
  • Thank you received: 33
  • Hikashop Business Review Plugin
1 week 2 days ago #373039

-- HikaShop version -- : 6.5.2
-- Joomla version -- : 5.4.7
-- PHP version -- : 8.4.23

Bonjour,

Concernant le plugin GA4, je viens de me rendre compte que sur mon site, il était resté en version 1.4.0.
Je viens d'effectuer la mise à jour (version 1.5.3) sur mon environnement de développement pour le tester et afin d'éviter de créer des commandes de test sur le site production. Cependant, je me pose quelques questions concernant ces deux plugins (GA4 et PayPal Checkout).

Lors de mes tests suite à la mise à jour :

- Paiement via PayPal : Juste après la confirmation du paiement (qui s'est bien déroulé), je me retrouve sur une page blanche affichant un message d'erreur indiquant que la page n'est plus disponible et m'invitant à retourner à l'accueil. De plus, l'événement purchase n'apparaît pas dans le DebugView de GA.

- Paiement par virement bancaire : Pensant que l'absence de l'événement purchase était liée à l'environnement de test PayPal, j'ai effectué un autre achat par virement bancaire. Là non plus, l'événement purchase n'apparaît pas.

Précision technique : Dans la configuration des "Statuts de commande", j'avais désactivé le statut "confirmed" pour en créer un nouveau nommé "testconfirmed" (pour effectuer un test dont je ne me rappelle plus la raison exacte).
Est-ce que ce nouveau statut pourrait être la cause de l'absence de l'événement purchase dans le DebugView?

Et concernant la page blanche après le paiement PayPal, est-ce lié au fait d'être en environnement de développement?

Merci!
Lorenzo

Please Log in or Create an account to join the conversation.

  • Posts: 86058
  • Thank you received: 14182
  • MODERATOR
1 week 2 days ago #373041

Bonjour,

Pour les virements il faut manuellement confirmer la commande dans le backend pour que l'événement purchase se declenche.

Pour PayPal, il faudrait plus d'informations. Quelle est l'URL de la page ? avec l'option debug de la méthode de paiement activée, avez vous des informations sur le problème dans le "payment log file" de la configuration HikaShop ?

Et oui, si les statuts de commande ne sont pas configurés correctement, cela pourrait causer ce genre de problème.

Please Log in or Create an account to join the conversation.

  • Posts: 687
  • Thank you received: 33
  • Hikashop Business Review Plugin
1 week 2 days ago #373043

Bonsoir,

J'ai rétabli les statuts de commande à leur configuration initiale (confirmed, shipped), mais je n'ai toujours pas l'événement purchase qui s'affiche dans le DebugView et j'ai toujours cette page blanche en fin de parcours au moment de la confirmation de PayPal. Je ne sais pas si ce comportement est dû au fait que je suis sur un environnement de développement...

This message contains confidential information

Peut-être aurez-vous une idée de l'origine de ce dysfonctionnement?

Afin d'éviter ce comportement sur mon site de production, j'aimerais comprendre le problème avant d'effectuer la mise à jour du plugin GA4. Il se peut aussi que ces deux problèmes soient indépendants l'un de l'autre ?

Merci,
Lorenzo

This message has an attachment file.
Please log in or register to see it.

Please Log in or Create an account to join the conversation.

  • Posts: 86058
  • Thank you received: 14182
  • MODERATOR
1 week 1 day ago #373044

Bonjour,

Les deux problèmes n'en font qu'un pour le paiement PayPal. L'événement purchase envoyé en JavaScript, celui que l'on voit dans le DebugView, n'est ajouté que sur la page de fin de commande de HikaShop, c'est à dire l'adresse ctrl=checkout avec la tâche after_end ou confirm. Comme après PayPal vous n'arrivez pas sur cette page mais sur une page d'erreur, l'événement n'a aucune chance de partir. Réglez la redirection et l'événement reviendra.

Sur la page blanche, votre log est clair : le paiement est bien passé côté PayPal, la capture est en statut COMPLETED et le plugin a bien relu la commande PayPal ensuite. Le problème se situe donc après, sur la redirection vers la page de remerciement, qui est de cette forme :

index.php?option=com_hikashop&ctrl=checkout&task=after_end&order_id=XX&order_token=YY

HikaShop n'affiche rien sur cette adresse dans deux cas : quand il ne retrouve pas la commande correspondant au order_id, et quand ni l'utilisateur connecté ni le order_token ne correspondent à cette commande. Pouvez-vous me donner l'URL exacte sur laquelle vous atterrissez ? Deux choses à regarder en particulier :

- le nom de domaine. Est-ce bien celui de votre environnement de développement ? HikaShop construit cette adresse à partir de la racine du site telle que Joomla la donne, et sur une copie de site le paramètre $live_site du fichier configuration.php pointe très souvent encore vers le site de production. Dans ce cas le client est renvoyé sur la production, où la commande n'existe pas, d'où la page qui n'est plus disponible.
- la présence de order_id et de order_token dans l'adresse.

Pour le virement bancaire maintenant, c'est un autre mécanisme. Au moment de la commande il est normal qu'aucun événement ne parte, puisque la commande n'est pas encore confirmée. Quand vous la confirmez dans le backend, l'événement purchase est envoyé de serveur à serveur, par le Measurement Protocol de Google, et ces événements là n'apparaissent pas dans le DebugView : celui-ci ne montre que ce qui est envoyé depuis le navigateur du visiteur. Regardez plutôt le rapport Temps réel de votre compte GA4, ou activez l'option Debug du plugin GA4, qui écrit dans le fichier de log de HikaShop le contenu exact envoyé à Google.

Deux réglages conditionnent cet envoi serveur, et ils valent la peine d'être vérifiés après votre manipulation sur les statuts :

- le champ "API secret" du plugin GA4 doit être rempli. Il se crée dans votre compte Google Analytics, dans Admin > Flux de données > votre flux > Measurement Protocol API secrets. S'il est vide, le plugin s'arrête là, sans aucun message.
- sur l'écran des statuts de commande, la case de la colonne "Facture" doit être cochée pour le statut confirmed, et le statut désigné comme statut de paiement confirmé doit être celui-ci également. C'est ce réglage, et non le nom du statut, qui déclenche l'envoi de l'événement. Ces deux cases ont très bien pu rester sur votre ancien statut testconfirmed.

Please Log in or Create an account to join the conversation.

  • Posts: 687
  • Thank you received: 33
  • Hikashop Business Review Plugin
1 week 1 day ago #373046

Bonjour,

J'ai vérifié à nouveau le champ "API secret" du plugin GA4: il est bien rempli. De même, les statuts de commande semblent désormais correctement configurés.

Concernant le fichier configuration.php, la variable $live_site contient bien le nom de domaine de l'environnement de développement.

En ce qui concerne l'URL de la page blanche sur laquelle j'atterris (que je vous avais transmise dans les informations confidentielles de mon précédent message), le paramètre order_token n'y apparaît pas. Voici la structure exacte de l'adresse après le nom de domaine de développement:

index.php?option=com_hikashop&ctrl=checkout&task=notify&notif_payment=paypalcheckout&order_id=124&tmpl=component&lang=it&Itemid=800&paypal_id=53K08920A80413401

Faites-vous référence au paramètre paypal_id=53K08920A80413401 qui lui est bien présent dans l'URL d'atterrissage?

Un dernier détail: il y a quelques jours, j'ai dû remplacer le secret d'API du Measurement Protocol pour ce site de développement (l'ancien ayant été rendu public par erreur). Par sécurité, j'ai renseigné la nouvelle clé dans le plugin GA4 et je viens de la vérifier à nouveau: elle est tout à fait correcte.

Merci,

Lorenzo

Attachments:

Please Log in or Create an account to join the conversation.

  • Posts: 86058
  • Thank you received: 14182
  • MODERATOR
1 week 1 day ago #373049

Bonjour,

L'absence du order_token dans cette adresse explique la page blanche, et c'est de notre côté.

PayPal Checkout a deux chemins de retour. Celui qui passe par le popup JavaScript construit l'adresse de la page de remerciement avec le order_token, celui qui passe par la notification, le vôtre, la construit sans. Sur cette page, HikaShop doit pouvoir rattacher la commande au visiteur, et il accepte deux preuves : soit l'utilisateur connecté correspond bien au client de la commande, soit le order_token fourni correspond à celui de la commande. Sans le token dans l'adresse, il ne reste que la session, et si la session ne vous identifie plus au retour de PayPal, la page ne s'affiche pas. Nous avons ajouter le order_token dans cette redirection pour qu'elle ne dépende plus de la session. Téléchargez à nouveau le paquet d'installation de la 6.5.2 sur notre site et installez le sur votre site de test pour avoir l'amélioration.

En attendant, il serait utile de savoir pourquoi votre session ne vous identifie plus. Le test est simple : au moment où vous arrivez sur la page blanche, ouvrez la page d'accueil du site dans le même onglet et regardez si vous êtes toujours connecté et si votre panier est bien vide. Si vous vous retrouvez déconnecté, la session a été perdue pendant le paiement, et les causes habituelles sont soit la durée de vie de la session dépassée pendant que vous étiez sur PayPal, soit le cookie de session qui n'est pas renvoyé au retour depuis paypal.com. Ce dernier point dépend de la directive session.cookie_samesite de votre PHP, ou d'une extension de sécurité ou d'un proxy qui force ce comportement, et c'est typiquement le genre de réglage qui diffère entre un environnement de développement et la production.

Notez aussi que le passage par PayPal, c'est à dire la sortie du site puis le retour, prend souvent quelques minutes lors d'un test en sandbox, et que la durée de session par défaut de Joomla est de 15 minutes.

Le reste suit tout seul : dès que vous atterrissez sur la page de remerciement, l'événement purchase en JavaScript est ajouté à cette page et vous le verrez dans le DebugView. Rien à changer côté GA4.

Pour le virement bancaire, mon message précédent reste valable : l'événement part de serveur à serveur au moment où vous confirmez la commande dans le backend, et le DebugView ne montre pas ces événements. Vérifiez plutôt dans le rapport Temps réel, ou activez l'option Debug du plugin GA4 pour voir dans le fichier de log de HikaShop ce qui est envoyé à Google.

Please Log in or Create an account to join the conversation.

  • Posts: 687
  • Thank you received: 33
  • Hikashop Business Review Plugin
1 week 11 hours ago #373064

Bonjour,

Avant d'effectuer la mise à jour avec le nouveau paquet d'installation de la version 6.5.2, j'ai réalisé le test que vous m'avez demandé: en restant sur cette page d'arrivée puis en retournant sur la page d'accueil, je constate que je suis toujours connecté et que le panier est bien vide.

J'ai ensuite téléchargé à nouveau le paquet d'installation de la version 6.5.2 et je l'ai installé sur mon site de développement. Malheureusement, rien n'a changé: j'ai toujours cette page d'erreur et le paramètre order_token n'apparaît toujours pas dans l'URL. Au final, la situation reste exactement la même.

Afin de m'assurer que le problème était bien circonscrit à l'environnement de développement, j'ai également fait le test sur mon site de production (sans y appliquer le correctif) : le résultat est hélas identique, je tombe aussi sur la page blanche. C'est assez embêtant, car pour un site en production, ce n'est pas très sérieux vis-à-vis des clients...

Avez-vous une autre piste pour résoudre ce dysfonctionnement? Merci.

Please Log in or Create an account to join the conversation.

  • Posts: 86058
  • Thank you received: 14182
  • MODERATOR
1 week 6 hours ago #373069

Bonjour,

Reprenons à partir de votre log. Il montre que le paiement est capturé et que le plugin relit ensuite la commande chez PayPal. Après ce point, il ne reste que deux choses dans le traitement : la confirmation de la commande dans HikaShop, avec les emails et les plugins qui se greffent dessus, puis la redirection. Comme la redirection n'a pas lieu et que vous obtenez une page d'erreur, le script s'arrête avant : c'est le comportement typique d'une erreur fatale PHP. Le fait que vous ayez la même chose en production va aussi dans ce sens, cela n'a rien à voir avec l'environnement de développement.

Trois choses à faire pour l'identifier :

1. Sur le site de développement, dans la configuration de Joomla, mettez le rapport d'erreurs sur Maximum et le mode de débogage sur Oui, puis refaites un paiement PayPal. Le message d'erreur s'affichera à la place de la page d'erreur et nous dirons exactement quel fichier est en cause.

2. Sinon, le log d'erreurs PHP de votre hébergement contient la même information, à l'heure exacte du test.

3. Refaites un paiement avec le plugin GA4 temporairement désactivé. C'est le plugin que vous venez de mettre à jour, et il travaille précisément au moment de la confirmation de la commande, donc juste avant la redirection qui n'a pas lieu.

Et dites-moi ce que vous voyez dans le backend après un de ces paiements : la commande passe-t-elle bien en confirmée, et l'email de confirmation de commande part-il ? Si oui, l'erreur se produit après la confirmation, si non, elle se produit pendant, et cela nous donne directement le bon endroit où chercher.

The following user(s) said Thank You: kilou

Please Log in or Create an account to join the conversation.

  • Posts: 687
  • Thank you received: 33
  • Hikashop Business Review Plugin
1 week 5 hours ago #373071

Bonjour,

Grâce au mode débogage (j'aurais dû y penser !), j'ai pu trouver l'origine du problème: il s'agissait d'une accolade en trop à la ligne 374 du fichier /media/com_hikashop/mail/payment_notification.preload.modified.php. C'est réglé, merci!
Je me demande depuis combien de temps ce problème traînait, c'est dommage que personne ne m'ait signalé ce dysfonctionnement.

Pour information, avec le rapport d'erreurs sur "Maximum", la pop-up PayPal s'ouvrait et se refermait immédiatement, empêchant le paiement.

J'en profite pour vous demander comment personnaliser la page de fin de commande après un paiement PayPal. Cela fait un moment que j'aimerais la personnaliser. Une fois le paiement validé, j'arrive sur une page blanche, mais cette fois-ci, elle est tout simplement vide de tout contenu. Quelle est la marche à suivre pour la personnaliser? Merci.

Please Log in or Create an account to join the conversation.

  • Posts: 86058
  • Thank you received: 14182
  • MODERATOR
6 days 18 hours ago #373073

Bonjour,

payment_notification est un email envoyé au gestionnaire du site, pas aux clients. Donc le marchand lui-même aurait dû s'en rendre compte dès que les emails de validation de paiement n'arrivaient plus.
Aussi, vu que cela vient d'un override d'email, un "preview" de l'email dans System>Emails aurait déclenché l'erreur. Pour toute modification des emails, je recommande de faire un test preview de l'email.

Concernant la page après paiement, C'est la vue checkout / after_end qui fait l'affichage. La vue n'affiche rien directement par défaut, mais son code demande à Joomla d'afficher un message de remerciement. Si ce message n'apparaît pas, c'est normalement le template utilisé qui a un problème car il est sensé faire les affichages de messages via Joomla. En clair, le template doit manquer le tag jdoc de type "message":
joomla.stackexchange.com/questions/10011...tact-form-validation

The following user(s) said Thank You: kilou

Please Log in or Create an account to join the conversation.

Time to create page: 0.169 seconds
Powered by Kunena Forum