Test de l'abonnement Paypal IPN

je voudrais tester les IPN d'abonnement paypal, à la fois celles reçues lors de la création d'un abonnement, et celles envoyées plus tard lors du prochain paiement (comme mensuel si l'abonnement est de x $par mois).

cependant je préfère ne pas attendre un mois ou un jour pour recevoir la deuxième IPN. Y a-t-il un moyen d'envoyer une IPN plus rapidement, par exemple toutes les heures, en utilisant paypal ou leur bac à sable?

sur la documentation il est dit que vous ne pouvez spécifier que les années, les mois, les jours et les semaines période de souscription.

37
demandé sur Click Upvote 2009-09-02 00:00:20

5 réponses

il était utilisé que la période spécifiée en jours serait traitée par le serveur de test comme des minutes de sorte que vous seriez appelé toutes les 3 minutes quand spécifié 'd3'. Je pense qu'ils ont enlevé ceci et je ne suis pas au courant d'une fonction de remplacement pour tester les abonnements.

7
répondu Remus Rusanu 2009-09-03 12:04:40

le support et la documentation du développeur de PayPal est un embarras pour eux. Mais cette limitation particulière n'est pas aussi débilitante qu'elle en a l'air à première vue.

pour tester, définissez votre paiement récurrent à avoir un essai gratuit. Lorsque vous créez un nouvel abonnement, votre serveur reçoit rapidement deux messages IPN, l'un pour créer l'abonnement et l'autre pour effectuer un paiement. C'est essentiellement tout ce que vous devez tester.

Si vous avoir un essai gratuit, vous aurez essentiellement la même paire de messages, juste avec une période d'essai entre eux. :)

le premier message ("créer un abonnement") ressemblera à quelque chose comme ceci. Notez que le 'txn_type" -- qui est la clé de bits d'information pour disambiguating les deux messages:

{
  "txn_type"=>"subscr_signup",
  "subscr_id"=>"unique_id",
  "verify_sign"=>"random_gibberish",

  "item_number"=>"your_subscription_name"
  "subscr_date"=>"14:32:23 Feb 15, 2010 PST",
  "btn_id"=>"1111111",
  "item_name"=>"Your Subscription Description",
  "recurring"=>"1",
  "period1"=>"1 M",

  # This example is from a "free trial" IPN notification-- if you don't have a 
  # free trial defined, there will only be 'period1' fields, and they'll
  # have the data that appears here in the 'period3' fields.
  "amount1"=>"0.00",
  "mc_amount1"=>"0.00",
  "period3"=>"1 M",
  "amount3"=>"34.95",
  "mc_amount3"=>"34.95",
  "mc_currency"=>"USD",

  "payer_status"=>"verified",
  "payer_id"=>"payer_unique_id",
  "first_name"=>"Test",
  "last_name"=>"User",
  "payer_email"=>"test_xxxx@example.com",
  "residence_country"=>"US",

  "business"=>"seller_xxxxxxx@example.com",
  "receiver_email"=>"seller_xxxxxxx@example.com",

  "reattempt"=>"1",

  "charset"=>"windows-1252","notify_version"=>"2.9","test_ipn"=>"1",
}

Le deuxième message est le plus intéressant dans ce cas. Ce sera essentiellement le même message que vous recevrez plus tard lorsque le paiement récurrent est appliqué. Il semble quelque chose comme ceci:

{
  "txn_type"=>"subscr_payment",
  "subscr_id"=>"unique_id",
  "verify_sign"=>"random_gibberish",

  "txn_id"=>"payment_unique_id",
  "payment_status"=>"Completed",
  "payment_date"=>"12:45:33 Feb 16, 2010 PST",

  "item_number"=>"your_subscription_name"
  "subscr_date"=>"14:32:23 Feb 15, 2010 PST",
  "custom"=>"data-you-sent-in-a-custom-field",

  "id"=>"1",
  "payment_gross"=>"34.95",
  "mc_currency"=>"USD",
  "payment_type"=>"instant",
  "payment_fee"=>"1.31",
  "payer_status"=>"verified",
  "mc_fee"=>"1.31",
  "mc_gross"=>"34.95",
  "btn_id"=>"1111111",

  "payer_id"=>"payer_unique_id",
  "first_name"=>"Test",
  "last_name"=>"User",
  "payer_email"=>"test_xxxx@example.com",
  "residence_country"=>"US",

  "receiver_id"=>"your_merchant_id",
  "business"=>"seller_xxxxxxx@example.com",
  "receiver_email"=>"seller_xxxxxxx@example.com",

  "protection_eligibility"=>"Ineligible",
  "transaction_subject"=>"",
  "charset"=>"windows-1252","notify_version"=>"2.9","test_ipn"=>"1",
}

donc vous pouvez faire presque tous vos tests sans attendre un jour. D'ici à ce que vous pensiez l'avoir fait clouer, vous recevrez beaucoup de messages IPN d'abonnement le lendemain.

De plus, ici est un lien vers la documentation de PayPal pour d'autres références.

54
répondu dondo 2011-11-30 05:35:03

il est possible de renvoyer de nouveau des IPNs de test, donc vous ne devriez avoir besoin d '"acheter" qu'un seul abonnement pour tester. Une fois que vous avez acheté un abonnement, voici ce qu'il faut faire:

  1. ouvrez une session dans votre compte PayPal sandbox vendeur compte.
  2. Sélectionner "Profil" = > "Mon Vente Préférences".
  3. sélectionnez "Préférences de Notification de paiement instantané" dans la troisième colonne.
  4. confirmer que IPN est activé et que L'URL est correcte.
  5. Cliquez sur le lien vers le IPN History page.
  6. Faites défiler vers le bas, cochez une ou plusieurs IPNs et cliquez sur "Resend".

Après la confirmation, l'IPN(s) va maintenant être renvoyé à l'adresse URL que vous avez spécifiée. Vous pouvez répéter un nombre illimité de fois avec la même IPN(s).

l'excellente réponse de @dondo couvre le reste.

8
répondu Neil T 2014-09-25 18:34:06

Hey, je voulais juste jeter un cri à Neil parce que c'est exactement ce que je cherchais, et je n'ai pas assez de réputation pour répondre ou upvote..

croyez-le ou non paypal ne rend toujours pas facile de faire des tests d'abonnement avec des fichiers ipn:/

donc, juste parce que je ne l'ai pas vu ici et le genre D'OP sonnait comme s'ils étaient sous l'impression de n'attendre que deux réponses possibles de papal --

si quelqu'un d'autre a des problèmes, voici un autre txn_type qui a frappé mon ipn en faisant des tests:

//when paypal subscription profile is created for the subscriber
subscr_signup 

//payment made for a given billing cycle
subscr_payment 

//when subscription fails
subscr_failed 

//user cancels subscription - not
subscr_cancel 

//end of term - paypal is "done" with that subscriber 
subscr_eot 

//why I was looking for this thread to begin with lol
recurring_payment_suspended_due_to_max_failed_payment

ce dernier a frappé mon ipn ce matin contre chacun de mes abonnés de test. quand j'ai cherché ce que cela signifiait, j'ai trouvé que les suivants sont aussi possibles d'obtenir:

recurring_payment_profile_created

recurring_payment_profile_cancel

recurring_payment_profile_modify

recurring_payment

recurring_payment_skipped

recurring_payment_failed

Je ne sais pas ce que j'ai fait pour obtenir cela parce que les abonnements et les paiements récurrents sont techniquement différents aux yeux de PayPal (les abonnements ne peuvent peut-être jamais se terminer, mais les paiements récurrents ont un plafond sur le total des paiements que quelqu'un peut faire pour n'importe quel "abonnement") mais leur documentation n'est pas toujours simple, non plus, donc je ne sais pas. Que je suis encore en train de comprendre que c'était un bouton d'abonnement généré par un compte de marchand de bac à sable, mais peu importe.

Heureux de tête :)

mise à jour: J'ai résolu mon problème tout à l'heure-donc juste pour qu'il semble que je sais ce que je fais je vais expliquer...

je pense que l'environnement sandbox d'abonnement de paypal est en train de mourir lentement. J'ai remarqué l'autre jour quand je suis en train de déconner. sandbox.paypal.com que j'ai" echec Fatal " souvent. Rafraîchir la page semble corriger cela la plupart du temps, bien que parfois je dois rafraîchir quelques fois pour l'écran de revenir.

je reçois la même réponse de la part de ceux qui consultent mon fichier IPN, ce qui explique pourquoi chaque abonnement a été suspendu aujourd'hui. Grâce à Neil, j'ai pu renvoyer la réponse IPN et je l'ai saisie dans un fichier texte. (lol) et puis j'ai cliqué sur la lecture du fichier ipn dans la réponse et je l'ai renvoyé à paypal (c'est vraiment plus compliqué que ça je le fais sonner simplement).

dans tous les cas en rafraîchissant la page je peux initier la poignée de main paypal plus ou moins sur demande et quand je le fais, c'est 50/50 - parfois je me fais vérifier, et parfois J'ai un échec Fatal - comme quand j'essaie de faire beaucoup de choses dans leur site de bac à sable (échec Fatal).

ci-Dessous est un exemple d'une partie de la échec de la réponse que je reçois d'eux... Je reçois un 200 je crois en la frappant leur serveur n'est pas le problème de connectivité, mais je commence à voir un modèle avec "Échec Fatal" ici et cela fait plus fin que le mien

HTTP/1.1 200 OK 
Date: Tue, 29 Sep 2015 02:41:00 GMT 
Server: Apache 

Fatal Failure 
6
répondu Rich 2015-09-29 03:05:10

vous pouvez aussi créer manuellement IPN à partir de leur bac à sable:

https://developer.paypal.com/cgi-bin/devscr?cmd=_ipn-link-session

0
répondu Sebas 2013-02-12 23:45:53