PayPal-Zahlung in einer MVC Anwendung

/, Sonstiges/PayPal-Zahlung in einer MVC Anwendung

PayPal-Zahlung in einer MVC Anwendung

PayPal

PayPal gilt als das beliebteste Online-Zahlungsmittel. Grund dafür ist zunächst die sowohl für den Anwender als auch für den Händler einfache Eröffnung eines Kontos. Durch wenige Klicks kann ein Händler ein Konto erstellen, das sofort in eine E-Commerce- Anwendung eingebunden werden kann. PayPal bietet den Händlern und ihren Kunden schnelle Zahlungsabläufe und eine starke Sicherheit. Weiterhin bietet PayPal den Entwicklern eine leicht einzubindende API- und eine Sandbox Umgebung, um den Händler zu simulieren sowie verschiedene Dummy Accounts, um Test-Zahlungen zu simulieren. In diesem Blogbeitrag möchte ich demonstrieren, wie diese Einbindung in eine MVC Applikation funktioniert.

Vorbereitungen

Auf der Seite https://developer.paypal.com können Entwickler eine Sandbox Umgebung einrichten und Test-Accounts mit selbst konfigurierbarem Guthaben einrichten. Nach dem Erstellen einer App erhalten wir zweimal eine ClientID und ein ClientSecret, einmal für die Sandbox Umgebung zum Testen und einmal für die zukünftige Live Umgebung.

Einbindung in MVC

Die Einbindung funktioniert über ein Nuget Package, das von PayPal bereitgestellt wird und über die Nuget Console installiert wird. Als Nächstes muss das Projekt konfiguriert werden: Die web.config wird mit folgenden Einträgen erweitert:

   <configSections>
<!-- ... -->
<section name="paypal" type="PayPal.SDKConfigHandler, PayPal" />
</configSections>

<!-- PayPal SDK settings -->
<paypal>
<settings>
<add name="mode" value="sandbox"/>
<add name="clientId" value="______Client_Id______"/>
<add name="clientSecret" value="______Client_Pass______"/>
</settings>
</PayPal>

Nach der Installation der Nuget Packages werden Dlls eingebunden, die eine API zur Kommunikation mit PayPal bereitstellen. Die Kommunikation mit PayPal ist im folgenden Diagramm beschrieben:

Der Zahlungsprozess

Authentifizierung

Der Config manager aus dem Namespace PayPal. API liest die Einstellung aus der web.config, damit die App ein OAuth Token erhält, mit dem sie sich bei den Services von PayPal identifizieren kann.

Dictionary<string, string> config = ConfigManager.Instance.GetProperties();
string accessToken = new OAuthTokenCredential(config).GetAccessToken();
APIContext apiContext = new APIContext(accessToken);

Bestätigung

Nun muss die PayPal Zahlung erstellt und an PayPal gesendet werden, damit der Kunde sich  authentifiziert und die Zahlung bestätigt. Dafür hat die PayPal API mehrere Klassen bereitgestellt:

  • Payment: Erstellt die Zahlung und führt die Zahlung aus.
  • Payer: Informationen über den Kunden.
  • RedirectUrl: Definiert an welche URLs PayPal nach einer Zahlung bzw. nach dem Abbruch einer Zahlung weiterleiten soll.
  • Transaction: Beinhaltet die wichtigsten Informationen über eine Zahlung
    • ​Amount: Beinhaltet Informationen über den Betrag wie Geldwährung, Steuerinformationen und Gesamtsumme.
    • ItemList: Ist eine Collection von Items (Artikel mit allen dazu gehörige Informationen wie Preis, Anzahl, Beschreibung, etc.)

Die Klasse Payment bietet die Methode Create zum Ausführen der Zahlung:

Payment createdPayment = payment.Create(apiContext);

Ein Request wird an PayPal geschickt mit allen Zahlungsinformationen. Als Antwort darauf erhält die App eine URL, an die der Benutzer weitergeleitet wird. Um den User wiederzuerkennen, wird in der Session die Zahlungs-ID gespeichert.

Der Anwender muss sich bei PayPal anmelden und die Zahlung durchführen. Mit welcher Zahlungsmethode er bei PayPal zahlt, ist für uns nicht wichtig. PayPal nimmt die Zahlung an und leitet den User an die Redirect-URL, die sie von uns erhalten hat oder an die Cancel-URL, falls der Anwender die Zahlung abbricht.

PayPal fügt der URL, die sie von uns erhalten hat, Parameter hinzu und leitet den Anwender auf diese weiter. Anhand der Parameter und der in der Session gespeicherten Information wird der Vorgang erkannt und mit der Ausführung der Zahlung fortgefahren.

Ausführung

Nachdem der User die Zahlung bestätigt hat, wird sie durch die Klasse Payment ausgeführt. Dafür wird die Methode Execute aufgerufen.

Paymen​t payment = new Payment() { id = paymentId };

Payment executedPayment = payment.Execute(apiContext, paymentExecution);

Die Methode fragt den Status des Vorgangs bei PayPal ab und erhält als Antwort den Status der Zahlung. Ist der Status „approved“, dann war die Zahlung erfolgreich, ansonsten nicht. Ein Payment kann 3 verschiedene Status haben:

  • Created: Die Transaktion ist erstellt, aber vom Zahler noch nicht bestätigt.
  • Approved: Der Zahler hat die Zahlung bei PayPal bestätigt.
  • Failed: Die Transaktion war nicht erfolgreich.

Die Anwendung soll dann – je nach Status – den Anwender auf eine andere Seite weiterleiten bzw. eine entsprechende Meldung zeigen.

By | 2017-09-21T10:39:09+00:00 September 21st, 2017|Allgemein, Sonstiges|0 Comments

About the Author:

Technology Specialist

Leave a Reply

%d bloggers like this: