Paypal Recurring et subscription : Double création de commande de temps en temps

  • Posts: 246
  • Thank you received: 5
4 years 10 months ago #314634

Bonjour,

Nous vendons des formations via HikaShop. HikaSerial nous permet de gérer des souscriptions pour des paiement en 10x via paypal recurring.

La plupart du temps cela fonctionne bien. Le client passe la commande, cela initialise la première commande (et la souscription), lui prélève le montant prévu et le tableau de bord dans PayPal est "normal" aussi.
Ensuite, tous les mois, un nouveau paiement est déclenché qui se traduit par une nouvelle commande et une nouvelle notification en retour par Paypal IPN. Tant du côté "hika" (commandes et renouvellement des souscriptions) que du côté Paypal, tout est normal. Et, ce pour plusieurs clients différents.

Mais de temps en temps, on a l'impression que l'IPN est traité deux fois (très rapprochées car il y a au maximum une seconde d'écart visible sur les date/heure des logs). Cela génère deux commandes hikashop (et donc deux factures) sans pour autant qu'il y ait deux paiements. Le mode debug est activé. On a donc toutes les traces dans l'historique des deux commandes et c'est exactement la même chose dans les deux à l'exception de l'heure à une seconde près et à l'exception du dernier chiffre de l'adresse IP (137.XX.XX.36 dans un cas et 137.XX.XX.3 dans l'autre).

Rien d'anormal dans le tableau de bord de PayPal. Mais la souscription est décalée d'un mois dans le temps car il enregistre un renouvellement "pour rien".

Il semblerait donc que la même IPN puisse être envoyé presque simultanément par deux serveurs différents de Paypal. Mais je n'obtiens pas de réponse de Paypal là dessus pour l'instant.

Avez-vous déjà été confronté à ce problème ? Ne faudrait-il pas ajouter une condition dans le plugin pour ne pas traiter deux fois la même IPN ? (txn_id ou ipn_track_id). Car, en l'état, cela génère deux factures différentes (client et compta interne) et un renouvellement "gratuit"....

Merci pour votre retour,

Laurent

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

  • Posts: 26158
  • Thank you received: 4028
  • MODERATOR
4 years 10 months ago #314643

Bonjour,

Je n'ai jamais été confronté à ce problème auparavant.

Par contre, je crains que cela puisse être compliqué d'ajouter un tel "garde fou" dans le plugin s'il y a qu'une seule seconde de différence entre les deux appels.
Le plugin "Paypal recurring" est développé pour fonctionner spécifiquement avec le système de "recurring" du core d'HikaShop ; il n'y a pas de spécificités pour HikaSubscription dans le sens où le plugin peut être utilisé dans d'autres contextes si besoin.
Avec un temps si cours entre les deux appels, il va être compliqué de garantir que le premier appel sera complètement terminé lorsque le deuxième va commencer. Donc qu'il va bien être possible de stocker une information dans une commande permettant de déterminer que l'appel est en double.

Une idée serait de charger les commandes liées à notre commande principale (pour laquelle le "subscr_payment" est fait) et de regarder si la plus récente possède la même transaction.
Mais pour cela, il faut que cette commande soit entièrement crée en base de données.

Il faudrait donc un peu plus de détails sur les appels IPN afin de pouvoir déterminer la nature et envisager si une telle implémentation réglerait ou non le problème.

Cordialement,


Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.

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

Moderators: Obsidev
Time to create page: 0.054 seconds
Powered by Kunena Forum