Paybox écart 1 cent

  • Posts: 511
  • Thank you received: 37
  • Hikaserial Subscription Hikashop Business
1 month 1 week ago #371819

-- HikaShop version -- : 4.7.1
-- Joomla version -- : 3.10.11
-- PHP version -- : 8.0.30

Bonjour,

le client d'un vieux site me signale que le montant d'un paiement par le module paybox est inférieur de 1 cent au montant de la commande.

Avez vous une idée d'ou cela peut t'il bien venir svp ?

Merci dravance

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

  • Posts: 85728
  • Thank you received: 14057
  • MODERATOR
1 month 1 week ago #371822

Bonjour,

Il y a effectivement eu un bug d'arrondi de 1 centime dans le plugin Paybox de HikaShop, mais il a été corrigé en novembre 2017 ( www.hikashop.com/forum/5-support-en-fran...t-paybox-refuse.html ), et la version 4.7.1 (sortie en janvier 2023) que vous utilisez l'inclut donc déjà. Un second correctif lié aux calculs en virgule flottante sur PHP 8 a aussi été ajouté en septembre 2022 et est également inclus dans la 4.7.1.

L'écart que votre client constate vient donc probablement d'autre chose. Quelques pistes à vérifier :

- Est-ce systématique sur toutes les commandes payées par Paybox, ou sur des commandes particulières (avec coupon, avec remise, avec livraison gratuite à partir d'un certain montant, etc.) ?
- Pouvez-vous donner le montant exact côté HikaShop et le montant exact côté Paybox sur une commande où l'écart apparaît ?
- Dans la configuration HikaShop, l'option "Arrondir les prix par produit avant de les additionner" est-elle activée ou désactivée ?
- Le plugin Paybox a-t-il été personnalisé sur le site (override de template ou modification directe du fichier paybox.php) ?

Avec ces éléments on pourra cerner si l'écart vient d'un calcul de TVA, d'un coupon en pourcentage, ou d'un cas particulier qu'il faut investiguer plus en profondeur.

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

  • Posts: 511
  • Thank you received: 37
  • Hikaserial Subscription Hikashop Business
2 weeks 2 days ago #372114

Bonjour,

j'ai enfin toutes les informations necessaires.

Le problème s'est produit sur deux commandes :
68639 - montant hikashop : 270.28 - montant réglé en CB : 270.27
68730 - montant hikashop : 128,64 - montant réglé en CB : 128.63

En apparence aucun point commun à part le mode de paiement, pas de réduction, modes de livraison différents, clients différents, ...

L'option "Arrondir les prix durant le calcul" est bien désactivée.

Le plugin n'a pas été modifié.

Merci à vous

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

  • Posts: 85728
  • Thank you received: 14057
  • MODERATOR
2 weeks 1 day ago #372122

Bonjour,

Merci pour les deux exemples de commandes, ils ont permis de reproduire le problème exactement.

C'est bien un bug d'arrondi dans la conversion du montant en centimes envoyé à Paybox. Le montant était calculé avec (int)(round($montant, 2) * 100). Pour des totaux comme 270,28 ou 128,64, le nombre n'a pas de représentation exacte en virgule flottante : round(270,28 ; 2) vaut en réalité 270,2799..., multiplié par 100 cela donne 27027,9999..., et la conversion en entier tronque vers le bas à 27027, soit un centime de moins. Le contrôle du montant au retour de Paybox utilisait exactement le même calcul, c'est pourquoi la commande était quand même validée sans alerte d'écart.

La correction consiste à arrondir au centime le plus proche, c'est à dire (int)round($montant * 100), à la fois pour le montant envoyé et pour le contrôle au retour. C'est intégré à HikaShop à partir de la version 6.5.1.

Vous êtes en 4.7.1, donc deux possibilités pour l'appliquer sans tout mettre à jour si c'est bloquant pour vous :

1. La plus simple : ouvrez le fichier plugins/hikashoppayment/paybox/paybox.php, repérez les deux lignes de la forme (int)(round(..., 2) * 100) et remplacez-les par (int)round(... * 100) (en retirant donc le round à 2 décimales et en plaçant le calcul *100 à l'intérieur du round).

2. Si vous préférez réinstaller le plugin : téléchargez le package HikaShop, extrayez uniquement le dossier du plugin Paybox, recompressez-le en zip, et installez ce zip seul via la page d'installation des extensions de Joomla. Cela ne met à jour que le plugin Paybox.

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

  • Posts: 511
  • Thank you received: 37
  • Hikaserial Subscription Hikashop Business
2 weeks 1 day ago #372127

Bonjour,

merci beaucoup, j'ai appliqué le correctif directement dans le fichier.

Belle journée à vous

The following user(s) said Thank You: nicolas

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

Time to create page: 0.063 seconds
Powered by Kunena Forum