2009-07-07 8 views
4

Pour mon site d'adhésion, j'ai le gestionnaire IPN fait. Ma question est celle du site "flux".Abonnements PayPal - Gestion IPN et flux de site?

Voilà comment ça se passe: utilisateur -> Landing -> Inscription -> Vérifier -> PayPal -> ThankYou

Voici donc le problème (qui pourrait juste être tous dans ma tête). Supposons que vous vous êtes inscrit et que vous avez vérifié votre compte. Ensuite, vous cliquez sur "S'abonner!" lien et sont envoyés à paypal - où vous effectuez le paiement et être envoyé à la page "Merci". Et si l'IPN ne revient pas rapidement sur mon site? Le lien d'abonnement sera toujours là, et les utilisateurs peuvent cliquer à nouveau dessus en pensant qu'ils ne sont pas abonnés (même si c'est le cas, cela prend juste du temps). Si je combats cela en mettant à jour leur profil pour dire ... "Activer ..." quand ils cliquent sur le lien "S'abonner", et ils ne terminent pas le processus de PayPal ... il pourrait être pour toujours dire " Activation ... ".

curiosité, car cela est la première fois l'intégration PayPal:

  • Comment gérez-vous l'état entre le moment où l'utilisateur clique sur le lien d'abonnement et il faut pour le processus IPN pour terminer?

  • Avez-vous déjà eu des problèmes avec IPN n'arrive pas rapidement?

Répondre

1

Votre question suggère que la connexion au serveur distant est asynchrone (ajax)?

Il est probablement plus facile de l'écrire de manière synchrone, de sorte que l'IPN est garanti de revenir. Si ce n'est pas le cas, cela signifie que:

a) L'utilisateur a fermé le navigateur après avoir été redirigé vers le serveur distant;
b) Le serveur distant n'a pas répondu. De bonnes passerelles de paiement redirigent l'utilisateur vers votre site s'il clique peut-être sur le bouton "Annuler", mais un retour n'est jamais garanti, vous devez donc le gérer correctement.

Je voudrais avoir une table séparée pour consigner les transactions pour un utilisateur donné; qui est:

un utilisateur, de nombreuses transactions

Certaines passerelles de paiement vous permettent de définir en tant que rappel à votre serveur lorsqu'une transaction est terminée. C'est-à-dire que la connexion est initiée par la passerelle - elle n'exécute pas le navigateur, car l'utilisateur peut fermer l'onglet/la fenêtre - où elle publie un message sur votre URL de rappel, puis vous mettez à jour le statut de la transaction. Je ne suis pas sûr si PayPal permet de telles choses, mais jusqu'à présent, je n'ai jamais eu de problèmes avec PayPal parce que je l'ai toujours écrit de manière synchrone.

Bien sûr, si une fonction asynchrone est requise, alors votre fonction ajax doit avoir un gestionnaire de délai/erreur - je recommande naturellement jQuery.

+0

C'est déjà synchrone ... si vous pensez que l'IPN reviendra assez vite, ce n'est probablement pas un problème ... et je pense à des problèmes qui ne sont même pas des problèmes. Merci beaucoup! – Chaddeus

+0

Il est toujours bon d'envisager des scénarios pessimistes afin que nous puissions le gérer en code :) – Wayne

1

Je ne l'ai jamais eu de problème avec IPN ne pas arriver rapidement, mais là encore je ne l'ai jamais vraiment eu un énorme site avec beaucoup d'utilisateurs. Je n'ai également apporté aucune modification significative à un compte d'utilisateur avant d'avoir reçu l'IPN.

J'ai effectué une inscription payée pour l'un de mes sites Web en utilisant l'API paypal. Un utilisateur remplirait son nom d'utilisateur, son mot de passe, etc. et je transmettrais les variables à l'API paypal. Les données ne seraient pas traitées avant d'avoir reçu l'IPN.

Vous pouvez toujours associer un horodatage à un paiement en attente si vous pensez que le statut "Activation ..." est important dans un profil utilisateur. Un paiement en attente pourrait expirer après 10 minutes.

+0

Eh bien, si les IPN arrivent rapidement, je suis probablement en train d'inventer un problème qui n'existe pas encore. Mon public cible est le japonais, donc je voulais m'assurer que tout se passait le mieux possible. Merci beaucoup! – Chaddeus

Questions connexes