Gibt es ein Beispiel für PayPal IPN?

8

Ich habe ein Asp.Net WEB API 2 Projekt und möchte einen Instant Payment Notification (IPN) Listener Controller implementieren.

Ich kann kein Beispiel und kein Paket finden. Alles, was ich brauche, ist zu bestätigen, dass der Benutzer mit dem Standard-HTML-Button auf Paypal bezahlt hat. Es ist ganz einfach.

Alle nuget-Pakete sollen eine Rechnung oder eine benutzerdefinierte Schaltfläche erstellen. Es ist nicht was ich brauche

Die Beispiele auf paypal sind für klassisches asp.net und nicht für MVC oder WEB API MVC

Ich bin mir sicher, dass jemand das schon gemacht hat und als ich anfing zu programmieren, hatte ich das Gefühl, dass ich das Rad neu erfunden habe.

Gibt es einen IPN-Listener-Controller?

Mindestens ein PaypalIPNBindingModel, um die Paypal-Abfrage zu binden.

%Vor%

BEARBEITEN

Bisher habe ich den folgenden Code

%Vor%

aber für den Schritt 3 habe ich versucht, mein Modell als json zu posten, aber Paypal gibt eine HTML-Seite statt VALIDATED oder INVALID zurück. Ich habe herausgefunden, dass ich application/x-www-form-urlencoded verwenden muss und die Parameter in der gleichen Reihenfolge sein müssen.

Wie kann ich die Anfrage-URL erhalten?

Ich würde die Abfrage URL verwenden und &cmd=_notify-validate dazu hinzufügen

    
Marc 29.10.2014, 19:23
quelle

5 Antworten

6

Dies ist mein Code

Fühlen Sie sich frei zu überprüfen, ist etwas falsch

%Vor%     
Marc 31.10.2014, 15:27
quelle
10

Basierend auf der angenommenen Antwort habe ich den folgenden Code entwickelt, der den IPN-Listener für ASP.NET MVC implementiert. Die Lösung wurde bereits bereitgestellt und scheint ordnungsgemäß zu funktionieren.

%Vor%

BEARBEITEN:

Lassen Sie mich meine Erfahrung teilen - der obige Code funktionierte bis jetzt gut, aber plötzlich schlug er für ein IPN fehl, das verarbeitet wurde, d. h. responseString == "INVALID" .

Es stellte sich heraus, dass mein Konto so eingerichtet wurde, dass es " charset == windows-1252 " verwendet, was die Standardeinstellung von PayPal ist. % Co_de% verwendet jedoch UTF-8 für die Kodierung und daher ist die Validierung wegen nationaler Zeichen wie "ø" fehlgeschlagen. Die Lösung war, FormUrlEncodedContent auf UTF-8 zu setzen, was in Profile & gt; Meine Verkaufstools & gt; PayPal Tastencodierung & gt; Weitere Optionen finden Sie in diesem SO-Thread .

    
Michal Hosala 16.09.2015 21:13
quelle
2

Um Michal Hosalas Antwort zu erweitern, sind zwei Dinge erforderlich, um einen erfolgreichen Handshake mit PayPal zu erhalten.

Legen Sie zuerst das Sicherheitsprotokoll fest, bevor Sie eine Anfrage an PayPal senden.

%Vor%

Zweitens: Vermeiden Sie das Wörterbuch, da PayPal zur Überprüfung die Daten in der gleichen Reihenfolge und mit der vorangestellten Variable cmd zurückgeben muss. Ich habe das gemacht

%Vor%     
bilal.haider 24.06.2016 14:35
quelle
2

Ich habe auch nach einer Lösung gesucht, die der ursprünglichen Frage des OPs Is there any IPN listener controller example? At least a PaypalIPNBindingModel to bind the Paypal query. ähnlich ist, und ich bin auf diese Seite gekommen. Ich habe versucht, die anderen Lösungen in diesem Thread erwähnt, sie alle gearbeitet, aber ich brauche wirklich die PayPal-Abfrage-zu-Modell-Lösung, so dass ich googlen, bis ich stolperte auf Carlos Rodriguez Erstellen eines PayPal IPN Web API Endpoints Blogposts.

Hier ist ein Überblick darüber, was Carlos getan hat:

  1. Erstellen Sie ein Modell. Basieren Sie die Eigenschaften, die Sie im Modell definieren, auf die IPN-Antwort, die Sie von PayPal erhalten.

    %Vor%
  2. Erstellen Sie eine PayPal-Validator-Klasse.

    %Vor%
  3. Erstellen Sie Ihren Controller.

    %Vor%
  4. Erstellen Sie einen Modellbinder, der definiert, wie Web Api automatisch das Modell für Sie erstellt.

    %Vor%
  5. Registrieren Sie Ihr Modellbinder auf WebApiConfig.cs. config.BindParameter(typeof(IPNBindingModel), new IPNModelBinder());

Hoffe das hilft jemand anderem. Danke Carlos Rodriguez für deinen tollen Code.

    
Annie Lagang 17.10.2016 06:38
quelle
0

Hier gibt es ein offizielles c # Beispiel: Ссылка im Pfad \c#\paypal_ipn_mvc.cs

Das C # -Beispiel zeigt einen ASP.NET MVC-Controller mit einer Aktion, die auf das IPN reagiert.

    
Harry Kakoulidis 01.01.2017 18:56
quelle