So binden Sie PayPal-Zahlungen in eine MVC Anwendung ein

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.

Erfahren Sie mehr

novaCapta auf der Fachtagung für Interne Revision
Event
Event

novaCapta auf der Fachtagung für Interne Revision

Das Expertenteam der novaCapta präsentiert am 15. und 16. November ihre innovative Audit Management Lösung auf dem DIIR-Kongress in Dresden. Besuchen Sie unsere...

Jan
25
Webcast mit Microsoft: Fit für die digitale Arbeitswelt
Webinar
Webinar

Webcast mit Microsoft: Fit für die digitale Arbeitswelt

Die digitale Transformation und die Veränderung der Arbeitswelt ist längst in vielen Unternehmen und in den öffentlichen Einrichtungen angekommen. Dennoch stell...

Valo ist neuer Partner der novaCapta für Intranets
News
News

Valo ist neuer Partner der novaCapta für Intranets

Durch die Partnerschaft mit Valo, dem Ready-2-Go Intranet-Baukasten aus Finnland baut die novaCapta ihr Angebot bei der Umsetzung von schnellen und funktionalen...

Bundesliga-Tippspiel

Bundesliga-Tippspiel

Fußball ist in Ihrem Unternehmen jeden Montag Gesprächsthema Nummer eins? Dann holen Sie sich die Fußball Bundesliga in Ihr Intranet!

novaBirthday

novaBirthday

novaBirthday erweitert Ihr SharePoint-Intranet um ein soziales Feature und kann damit die Akzeptanz und Reichweite verbessern.

SharePoint Framework Client-Side Webparts mit React
Blog
Blog

SharePoint Framework Client-Side Webparts mit React

React ist ein Framework zur Erstellen von Benutzeroberflächen. In der SharePoint Online Entwicklung bietet es sich für die Entwicklung von Client-Side Webparts...

Sliding to heaven – A short story of a SPFx Slider Webpart
Blog
Blog

Sliding to heaven – A short story of a SPFx Slider Webpart

SharePoint Framework, kurz SPFx, ist eine zukunftsträchtige Technologie zur Erstellung von Webparts oder Extensions auf der Basis von TypeScript.

ASP.NET Entwicklung

ASP.NET Entwicklung

Falls der Funktionsumfang von Standard-Produkten nicht ausreicht, ermöglicht ASP.NET die Realisierung maßgeschneiderter Anwendungen.

Ich bin im Flow! – Eine Übersicht zu Microsoft Flow
Blog
Blog

Ich bin im Flow! – Eine Übersicht zu Microsoft Flow

Die Power Platform wird aktuell von Microsoft sehr stark gepusht. Zeit, sich mit dem Potenzial der einzelnen Komponenten zu beschäftigen. Heute: Flow.

End of Life – Eine Applikation wird abgelöst
Blog
Blog

End of Life – Eine Applikation wird abgelöst

Die Stilllegung einer Applikation im Application Lifecycle Management nicht beachtet. Dennoch sollten sie in einem ganzheitlichen Ansatz beachtet werden.

DevOps und Container
Blog
Blog

DevOps und Container

DevOps an sich ist nicht an eine Technologie gebunden, jedoch haben sich Container-Technologien und DevOps als Verwandte im Geiste gefunden.

SharePoint Hosted Add-in mit AngularJS 2
Blog
Blog

SharePoint Hosted Add-in mit AngularJS 2

Voraussetzungen und Umsetzung eines SharePoint Hosted Add-in mit AngularJS 2.