Intégration Paypal Ipn avec asp.net MVC

La page HomeControler / Index.cshtml est comme ci-dessous

 

La méthode d’action HomeControler / Ipn est la suivante

 public ActionResult Ipn() { // Receive IPN request from PayPal and parse all the variables returned var formVals = new Dictionary(); formVals.Add("cmd", "_notify-validate"); // if you want to use the PayPal sandbox change this from false to true ssortingng response = GetPayPalResponse(formVals, false); if (response == "VERIFIED") { ssortingng transactionID = Request["txn_id"]; ssortingng sAmountPaid = Request["mc_gross"]; ssortingng deviceID = Request["custom"]; //validate the order Decimal amountPaid = 0; Decimal.TryParse(sAmountPaid, out amountPaid); if (sAmountPaid == "2.95") { // take the information returned and store this into a subscription table // this is where you would update your database with the details of the tran return View(); } else { // let fail - this is the IPN so there is no viewer // you may want to log something here } } return View(); } 

Ma question est, même après que le paiement ait été effectué, que la méthode d’action ci-dessus ne se déclenche pas. Impossible de déboguer. Comment puis-je faire cela?

    Si je me souviens bien, l’IPN est un appel asynchrone qui peut arriver à tout moment après la transaction (son généralement “instantané”, parfois pas tellement). Mais cela vient de PayPal, qui ne peut pas accéder à http://localhost . Pour tester IPN, vous devez déployer sur un site Internet auquel tout le monde peut accéder. Cela fait quelques années que je travaille avec IPN – mais c’était mon expérience générale. Installez une session dans votre application, publiez, puis faites vos transactions de test.

    MODIFIER:

    En outre, je pense que vous pouvez lui atsortingbuer votre adresse IP WAN (non locale), ouvrir les ports de votre routeur et utiliser cette adresse IP (vous devrez peut-être activer les connexions distantes avec IIS Express – voir IIS Express activer la demande externe ):

      

    Vous pouvez vérifier ipn sur votre localhost. Vous devez configurer votre routeur pour accepter et redirect les appels entrants vers votre hôte local. Ensuite, allez à paypal.sandbox. En utilisant leurs outils, vous pouvez imiter différentes réponses IPN à votre hôte local (bien sûr, en utilisant votre adresse IP externe).

    De cette manière, le bac à sable envoie des messages TCP / IP à votre machine, votre routeur le redirige vers votre machine hébergeant le site Web de test.

    Il est préférable de ne pas envoyer de message à Sandbox et d’espérer recevoir et capturer la réponse. Ce n’est pas que le bac à sable ne fonctionne pas correctement. Il est.

    Le problème est que si le bac à sable répond rapidement, votre machine de test (en mode débogage) risque de ne pas être assez rapide pour capturer le paquet tcp / ip renvoyé. Vous pouvez utiliser une autre machine pour lancer une transaction sur votre site web localhost. c’est-à-dire découpler le chemin de transaction de test

    J’espère que cela t’aides.