web-dev-qa-db-fra.com

Paypal notify_url et return_url. Réception de variables sans IPN en utilisant PHP

J'essaie de mettre en place une option de paiement simple pour Paypal, mais j'ai des problèmes/confusion avec le retour et notifiez les URL. Je suis assez nouveau sur php et j'ai déjà accompli cela dans asp, mais je suis maintenant perdu.

Alors ma forme de base Paypal:

<form action="https://www.Paypal.com/cgi-bin/webscr" method="post" id="PayPalForm" name="PayPalForm"  target="_top">
 <input type="hidden" name="cmd" value="_xclick">
 <input type="hidden" name="business" value="[email protected]">
 <input type="hidden" name="amount" value="0.01">
 <input type="hidden" name="item_name" value="Composite Door">
 <input type="hidden" name="item_number" value="<?php echo $orderID ?>">
 <input type="hidden" name="currency_code" value="GBP">
 <input type="hidden" name="cancel_return" value="http://www.mydomain.co.uk/Paypal-notcompleted.php">
<input type="hidden" name="return" value="http://www.mydomain.co.uk/Paypal-completed.php">
<input type="hidden" name="notify_url" value="http://www.mydomain.co.uk/Paypal-completed.php"> 
</form>


  <script>
    document.PayPalForm.submit();
   </script>

Comme vous pouvez le voir, le formulaire publie sur Paypal, puis retourne en fonction du résultat, s'il échoue/annule, il va à Paypal-notcompleted.php.

En cas de succès, il va à Paypal-complete.php. Et c'est là que je n'arrive pas à comprendre, je n'ai pas configuré d'IPN, tout ce que je veux faire, c'est récupérer certaines des variables que Paypal me retourne, pour exécuter une simple requête d'insertion et afficher quelques détails dans un message de confirmation au client.

Suis-je autorisé à avoir le notify_url et return_url comme la même page?

Pourquoi Paypal ne publie-t-il pas l'intégralité attendue (comme on le voit ici: Notifier l'url de Paypal ) retour à la page?

Je comprends qu'il y a quelque chose à voir avec XML et autres, mais je me suis dit que je serais capable de $ _GET les variables que Paypal a renvoyées. Est-ce que quelqu'un l'a fait de cette façon, peut-il me dire où je vais mal?

17
Bohdi

Pour renvoyer les détails à votre URL de retour, vous devrez utiliser PDT . Il est très similaire à IPN sauf qu'il est destiné à être utilisé avec votre URL de retour, tandis que IPN = est destiné à être utilisé avec un tiers IPN script d'écoute sur votre serveur.

PDT est bien pour afficher simplement la transaction à l'utilisateur sur la page d'URL de retour, mais il n'est pas recommandé d'effectuer un traitement post-paiement avec PDT (c.-à-d. mises à jour de la base de données, envoi de reçus par e-mail, etc.) car il n'y a aucune garantie que l'utilisateur reviendra sur cette page, même avec le retour automatique activé dans votre compte Paypal.

IPN sera déclenché chaque fois qu'une transaction se produira, que l'utilisateur revienne ou non sur votre site après avoir effectué le paiement.

L'URL de notification est utilisée pour IPN uniquement, et elle remplacerait tout paramètre que vous avez dans votre profil Paypal pour IPN. PDT doit être configuré dans votre profil de compte Paypal afin que les données soient renvoyées à votre URL de retour.

Vous allez vouloir utiliser différentes URL pour le retour et la notification, sinon ce même code s'exécuterait deux fois: une fois lorsque l'utilisateur revient sur votre site, et à nouveau à partir du POST IPN Paypal.

19
Drew Angell

Transfert de données de paiement (PDT)

Les URL return et cancel_return Sont des transferts de données de paiement uniques ( PDT ) principalement pour les appels l'utilisateur termine la transaction sur votre site. Il s'agit uniquement de transmettre des informations pour aider raisonnablement votre site à remplir cette tâche. Il n'y a aucune garantie qu'un acheteur ne quittera pas avant de revenir, vous ne pouvez donc pas compter sur la possibilité de faire n'importe quel traitement post-transaction en utilisant ces derniers.

Notification de paiement instantanée (IPN)

notify_url Est utilisé par le processus de notification de paiement instantané ( IPN ) et appelé avec chaque l'état de la transaction. Il s'agit d'un enregistrement complet des actions toutes prises pendant le cycle de vie de la transaction, sur lesquelles vous pouvez vous appuyer pour piloter le processus backend, comme la comptabilité, l'exécution des commandes ou l'annulation. Le processus IPN prend des mesures pour garantir l'intégrité du processus.

Leurs objectifs sont différents et donc les informations et la sécurité impliquées sont différentes. Pour avantages et inconvénients .

Les messages IPN peuvent être gravement retardés, utilisez donc les trois variables

Notez que bien que la plupart des messages IPN soient envoyés dans les quelques secondes suivant la fin de la transaction Paypal, j'ai connu des retards pouvant aller jusqu'à plusieurs heures, ils sont donc fiables, mais pas nécessairement opportuns.

Je suggère d'utiliser tous les return, return_cancel Et notify_url, Car les deux premiers reviendront immédiatement, afin que vous puissiez fournir un retour immédiat à l'utilisateur et mettre à jour les données du backend/lancer des processus d'exécution, mais utiliser ce dernier comme sauvegarde si l'utilisateur quitte Paypal avant d'être retourné. Indiquez à vos acheteurs de revenir sur votre site pour assurer un traitement rapide de leur commande.

Il suffit de gérer l'état de la commande afin que l'IPN ne déclenche pas l'exécution si le PDT l'a déjà fait, ce qui est fondamentalement ce que vous devez faire pour vous assurer que les messages IPN Completed répétés ne redéclencheront pas l'exécution après le première.

Notify_url Continue d'être utilisé pour les messages suivants pour la même transaction

Les messages IPN pour la même transaction continuent d'être envoyés à la même adresse notify_url. J'ai consulté notre historique IPN et un message Refund IPN est allé à l'original notify_url.

Cela continue, même si vous modifiez les préférences IPN, conformément à https://developer.Paypal.com/docs/classic/ipn/integration-guide/IPNSetup/ :

Le message IPN est toujours envoyé à votre URL de notification, sauf si vous avez désactivé la préférence de recevoir des messages IPN. Même si vous n'avez pas activé la réception de messages IPN dans votre profil ou que vous avez réinitialisé vos préférences en désactivant les messages IPN, Paypal envoie toujours des messages IPN à l'URL de notification que vous spécifiez pour un paiement spécifique. Les messages IPN ne sont pas envoyés car vous avez désactivé la préférence dans votre profil apparaîtra dans l'historique IPN lorsque vous activez la réception des IPN. Après leur apparition dans l'historique, vous pouvez choisir de les renvoyer.

Je ne sais pas si les transactions connexes, comme les litiges ou les paiements d'abonnement ultérieurs, utiliseront toujours le notify_url D'origine. Peut-être que quelqu'un qui sait réellement peut fournir une réponse.

9
Patanjali

votre URL de notification et votre URL de retour sont différentes. votre URL de retour dirige votre client après le paiement réussi avec des informations de retour. par la façon dont notifier l'url est d'obtenir les détails complets de la transaction d'achat de vos clients et qui ne sont pas accessibles par votre client et ceci à des fins de base de données ou de stockage.

6
user2374680