web-dev-qa-db-fra.com

Crochet WooCommerce pour les actions "après paiement terminé"

J'utilise WooCommerce et Wordpress. J'ai un générateur de clé de licence personnalisé et j'aimerais qu'il génère une clé de licence lorsque quelqu'un achète avec succès mon plugin via WooCommerce.

Cela semble assez simple:

  1. L'utilisateur termine le paiement sur mon site
  2. L'utilisateur est redirigé vers Paypal, où il saisit ses informations de paiement
  3. Paypal informe mon site que le paiement est complet
  4. Je me connecte à une sorte d'action "WooCommerce" ou "order_complete" et génère la licence.

Voici le problème: je ne sais vraiment pas quel crochet fonctionnerait bien pour cela. Woocommerce a leur collection complète de crochets répertoriés sur leur site, mais pratiquement aucune documentation sur ce qui est bon pour quoi.

Sur la base des noms des crochets, je pense que woocommerce_payment_complete serait une bonne action à utiliser. Malheureusement, il ne semble pas du tout être renvoyé; certains endroits que j'ai lus disent qu'il n'a jamais été tiré.

J'ai également lu quelque chose sur Paypal IPN, mais je ne comprends pas comment je pourrais me connecter à la notification à partir de cela (cela se connecte-t-il à un hook Woocommerce?)

En bref, j'aimerais générer la clé de licence dès que le paiement aura été vérifié. À quoi dois-je me connecter pour y parvenir?

32
Pete

D'accord, j'ai trouvé quelques solutions possibles.

TRAITER DE LA VÉRIFICATION DES PAIEMENTS

La passerelle Paypal Standard de WooCommerce prend en charge le service IPN de Paypal intégré. Vous aurez envie de l'utiliser quel que soit l'itinéraire de "crochet" que vous choisissez.

COMMENT CONFIGURER IPN Paypal

Paypal IPN est connecté au compte qui est le destinataire de l'argent. Par exemple, si vous êtes payé à [email protected], vous devez configurer IPN avec ce compte. Tout IPN est, est-ce que Paypal envoie un "Paiement terminé!" (en quelque sorte) notification à l'URL de votre choix. Pour choisir l'URL à laquelle vous souhaitez que Paypal envoie la notification, vous devez procéder comme suit:

  1. Connectez-vous à Paypal
  2. Cliquez sur l'icône du petit visage en haut à droite
  3. Cliquez sur "Profil et paramètres"
  4. Cliquez sur "Mes outils de vente" dans la barre latérale gauche
  5. Recherchez "Notifications de paiement instantanées" et cliquez sur "Mettre à jour"
  6. Activez-les et définissez l'URL. L'URL de votre passerelle WooCommerce Paypal Payments Standard est: http://yoursite.com/?wc-api=WC_Gateway_Paypal (ce qui est noté dans WooCommerce documentation Paypal Standard ).
  7. Sauvegardez vos paramètres

Votre installation WooCommerce recevra désormais des informations de Paypal lorsque le paiement sera terminé. Oh, et en passant, assurez-vous que:

  • Votre "E-mail du destinataire" dans vos paramètres Paypal est correct
  • fsockopen est activé sur votre serveur (vous pouvez vérifier cet "état du système" dans vos paramètres WooCommerce)

MAINTENANT, ALLONS TRAVAILLER SUR LES CROCHETS

OPTION 1: saisie semi-automatique des commandes qui ont terminé le paiement et connectez-vous à woocommerce_order_status_completed pour vos actions/fonctions spéciales

Pour que vos produits se complètent automatiquement après paiement vérifié, vous pouvez simplement installer le fabuleux plug-in WooCommerce Autocomplete Order de Mirko Grewing. Assurez-vous de définir les paramètres corrects (qui apparaîtront sous l'onglet "Options Woo Extra" dans vos paramètres WooCommerce).

Maintenant que vos commandes sont complétées automatiquement lorsque les paiements sont vérifiés, vous pouvez simplement vous connecter à votre crochet d'achèvement, `woocommerce_order_status_completed, pour vos fonctionnalités spéciales.

L'avantage de cette méthode est que si vous permet de connecter n'importe quelle commande terminée, que vous l'ayez ou non effectuée manuellement ou qu'elle ait été automatiquement terminée. En d'autres termes, il est assez polyvalent.

OPTION 2: Connectez-vous au woocommerce_payment_complete_order_status filtre, qui indique un paiement réussi.

Je suppose que l'on est assez explicite. L'avantage de cette méthode est qu'elle est à peu près la première étape de l'ensemble du processus et a lieu avant le crochet d'achèvement ci-dessus (si vos priorités sont définies de manière appropriée).

Je ne sais pas si l'un est meilleur que l'autre, mais ils semblent tous les deux atteindre mon objectif: effectuer une action APRÈS le paiement a été vérifié.

27
Pete

woocommerce_payment_complete_order_status se déclenche également lorsque le paiement a été annulé. Je viens de tester l'utilisation de Paypal comme passerelle sur Woocommerce 3.1.2.

L'action woocommerce_payment_complete semble ne se déclencher que lorsque le paiement a réussi.

14
Daniel T