Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PayPal

PayPal Integration Teil 2: PayPal REST API Endproduktbild

by
Length:LongLanguages:
This post is part of a series called PayPal Integration.
PayPal Integration Part 1: PayPal Payment Buttons
PayPal Integration Part 3: PayPal Webhooks

German (Deutsch) translation by Władysław Łucyszyn (you can also view the original English article)

Final product image
What You'll Be Creating

In diesem Tutorial zeige ich Ihnen, wie Sie mit der PayPal-REST-API und C # Zahlungen tätigen können.  Alle Bibliotheken, die sie für verschiedene Sprachen wie Ruby, Node.js, Python, PHP haben, sind sehr ähnlich, so dass alle Konzepte hier für alle Bibliotheken gelten. 

Projektaufbau

Zu Beginn habe ich in Visual Studio 2015 ein MVC-Projekt erstellt: Datei> Neu> Projekt und ASP.NET-Anwendung auswählen. 

Setting up a Project

Wählen Sie die ASP.NET 5-Webanwendungsvorlage aus, die die neue MVC 6 verwendet.  Sie ist MVC 5 ähnlich, wenn Sie damit vertraut sind.

ASPNET MVC5

Wie Sie auf dem Foto sehen können, habe ich der Lösung einige Dateien und Ordner hinzugefügt.  Die wichtigsten zwei Dinge zu beachten sind:

  1. In Referenzen habe ich den Ziel-DNX-Core 5.0 entfernt, was es uns ermöglichen würde, dieses Projekt unter Mac OS X oder Linux auszuführen, aber die von uns benötigte PayPal-Bibliothek wurde noch nicht aktualisiert. 
  2. Ich habe den Ordner "Services" hinzugefügt, in dem ich die Logik für PayPal-Anrufe verpacken werde, damit wir die Controller schön und kurz halten können.
Solution Explorer

Installieren Sie PayPal SDK mit NuGet.  Klicken Sie mit der rechten Maustaste auf den Namen der Lösung und wählen Sie NuGet-Pakete verwalten. Suchen Sie dann nach "PayPal" und installieren Sie es. 

Package Manager

Erstellen Sie eine PayPal-App

Um unsere Anwendung mit PayPal zu integrieren, müssen wir zu PayPal-Entwicklern navigieren und dann unter REST-API-Apps auf App erstellen klicken.

PayPal Developer App Dashboard

Geben Sie Ihrer App einen Namen und wählen Sie ein Sandbox-Entwicklerkonto aus, das mit der App verknüpft ist.  Zu Testzwecken können Sie dann zu http://sandbox.paypal.com navigieren und sich mit den Anmeldedaten für die Sandbox anmelden, um das PayPal-Testkonto und die Transaktionen zu testen. 

PayPal Developer App

Nach dem Klicken auf "App erstellen" sehen wir den Bestätigungsbildschirm mit der Client-ID und den geheimen Token. 

PayPal App Credentials

Kopieren Sie die Token clientId und clientSecret in appsettings.json, wie Sie im folgenden Screenshot sehen können: 

Application Settings JSON

Zahlungen testen

PayPal stellt eine Sandbox-Umgebung zum Testen bereit.  Sie können Testkäufer- und Verkäuferkonten von dort erstellen.  Wenn Sie sich anmelden, verfügen Sie über ein Business-Konto in der Sandbox, das an Ihr Entwicklerkonto gebunden ist. 

Um ein neues Testkonto zu erstellen, melden Sie sich bei der Entwicklerseite an und klicken Sie dann auf die Registerkarte Dashboard und navigieren Sie zu Sandbox> Konten.  Hier können Sie die Liste der Testkonten sehen, wenn Sie Folgendes haben: 

PayPal Sandbox

Wenn Sie Ihre Testkonten noch nicht erstellt haben, klicken Sie rechts oben auf Konto erstellen, um mindestens ein persönliches Testkonto und ein Testgeschäftskonto zu erstellen.

PayPal Test Account

Nachdem Sie die Testkonten erstellt haben, können Sie sich über www.sandbox.paypal.com mit der Test-E-Mail-Adresse und dem Passwort anmelden, die Sie den einzelnen Konten auf dem vorherigen Formular zugewiesen haben.  Dies ist sehr nützlich, um zu testen, ob die Gelder bei Ihrem "persönlichen Testkonto" auf Ihr "Testgeschäftskonto" überwiesen werden.  Jetzt können Sie mit der Integration in PayPal beginnen und testen, ob die Mittel von einem Konto auf ein anderes übertragen werden.

Einzel-PayPal-Zahlung 

PayPal bietet verschiedene Zahlungsmethoden an.  Sie können direkte Kreditkartenzahlungen verwenden, was bedeutet, dass Ihre Kunden die PayPal-Anmeldeseite oder -zusammenfassung nicht sehen können - alles geschieht auf Ihrer Website.  Sie müssen dafür PCI-kompatibel sein, und ich empfehle Stripe, da Sie nur SSL mit ihrer JavaScript-Bibliothek benötigen.  Auf der anderen Seite, um Zahlungen über PayPal-Zahlungen zu nehmen, dauert es drei Schritte: 

  1. Geben Sie Zahlungsinformationen an, um eine Zahlung zu erstellen. 
  2. Holen Sie sich die Zahlungsgenehmigung, indem Sie Ihren Kunden an PayPal weiterleiten, um die Transaktion zu genehmigen. 
  3. Führen Sie die Zahlung aus, um die Beträge zu erfassen, nachdem PayPal Ihren Kunden auf Ihre Website weitergeleitet hat. 

In meinem MVC-Projekt habe ich im Ordner "Services" die PayPalPaymentService-Klasse erstellt, der ich diese Methoden hinzugefügt habe:

In diesem Aufruf werden einige Parameter übergeben: 

  • Absicht: Drei mögliche Werte: "Verkauf" für sofortige Zahlungen, "Autorisieren", um eine Zahlung zu autorisieren, um später zu erfassen, oder "Bestellung", um einen Auftrag zu erstellen.  Wenn Sie die Autorisierung für eine später zu erfassende Zahlung erhalten, haben Sie 3 Tage Garantie, obwohl Sie versuchen können, die Zahlung bis zu 29 Tage später zu erfassen. 
  • Payer: Quelle der Mittel für diese Zahlung, wobei die Zahlungsmethode PayPal-Wallet-Zahlung, Banklastschrift oder direkte Kreditkarte verwendet wird.
  • Transaktionen: Hier wird der Betrag für die Zahlung angegeben und optional die Artikel angegeben, für die bezahlt wird.  Sie können bei Bedarf auch Zwischensumme, Versand und Steuern angeben. 
  • Umleitungs-URLs: Geben Sie die URL an, an die PayPal Ihre Kunden nach einer Transaktion weiterleitet, sodass Sie Ihre Datenbank aktualisieren und eine Bestätigungsnachricht anzeigen können.

Die vorherigen Funktionen können von Ihrem Controller wie folgt verwendet werden: 

Wie Sie sehen können, habe ich drei Aktionen erstellt: 

  • CreatePayment: Dies ist die Aktion, die die Zahlung auslöst.  Es ruft PayPal an, um die Zahlung zu erstellen, und leitet den Benutzer dann an PayPal weiter, um die Transaktion zu genehmigen. 
  • PaymentSuccessful: Dies ist die Aktion, bei der PayPal unseren Kunden nach einer erfolgreichen Zahlung zurückleitet.  An diesem Punkt können wir die Zahlung ausführen, um die Gelder auf unser Händlerkonto zu übertragen. 
  • PaymentCancelled: Bei dieser Aktion wird der Benutzer von PayPal umgeleitet, wenn der Benutzer den Genehmigungsprozess abbricht.  Zu diesem Zeitpunkt möchten Sie dem Kunden möglicherweise die Möglichkeit geben, es erneut zu versuchen oder sich mit Ihnen in Verbindung zu setzen.

Autorisieren Sie eine Zahlung, um sie später zu erfassen

Dieses Szenario ist dem vorherigen Fall sehr ähnlich.  Möglicherweise möchten Sie diese Methode verwenden, wenn Sie Vorbestellungen für ein Produkt durchführen möchten, das noch nicht verfügbar ist.  Die Schritte, um diese Zahlung zu erhalten, sind: 

  1. Autorisierung der Zahlung: Der Parameter 'intent' für diesen Aufruf sollte 'authorize' lauten. 
  2. Erfassung der Zahlung: Beachten Sie, dass Berechtigungen für bis zu 3 Tage garantiert sind. Sie können jedoch versuchen, eine Zahlung für bis zu 29 Tage zu erfassen. 

Um diese Zahlungsart zu implementieren, habe ich der Klasse PayPalPaymentService nur eine neue Methode hinzugefügt, um die Zahlung zu erfassen: 

Dann habe ich vom HomeController zwei neue Aktionen hinzugefügt, um diese Zahlungsart anzuzeigen:

  • AuthorizePayment ist die Aktion, die die Zahlung auslöst.  Es ist der vorherigen "CreatePayment" -Funktion sehr ähnlich, aber wir übergeben in diesem Fall "authorize" als den Parameter "intent". 
  • AuthorizeSuccessful ist die Aktion, bei der Ihr Kunde nach erfolgreicher Genehmigung der Zahlung auf PayPal umgeleitet wird.  An dieser Stelle erfasse ich die Zahlung, aber Sie könnten die PaymentId in Ihrer Datenbank speichern und die Zahlung erfassen, wenn Sie müssen. 

In diesen Codebeispielen habe ich zur Vereinfachung die Zahlungsvariablenwerte fest codiert.  In Ihrer realen Anwendung werden Sie sie wahrscheinlich in Methoden einschließen, die all diese Werte als Variablen annehmen, so dass alles dynamisch festgelegt und wiederverwendet werden kann. 

Abonnements

Dies wird in PayPal als "Abrechnungspläne" bezeichnet. Sie können wiederkehrende Zahlungspläne erstellen und Ihre Kunden für einen Abrechnungsplan anmelden, indem Sie eine Abrechnungsvereinbarung erstellen.  Mit der PayPal REST API können Sie Fakturierungspläne erstellen, aktualisieren oder löschen. Dies ist etwas, das Sie verwenden können, wenn Sie ein Admin-Panel erstellen möchten, um diese Dinge für Ihr Unternehmen zu verwalten. 

Die Schritte zum Erstellen wiederkehrender Kosten für Ihre Kunden wären:

  1. Erstellen Sie einen Abrechnungsplan und aktivieren Sie ihn.  Nachdem Sie einen Fakturierungsplan erstellt haben, befindet er sich in einem CREATED-Status.  Es muss aktiviert werden, indem eine PATCH-Anfrage gestellt wird. 
  2. Legen Sie eine Abrechnungsvereinbarung an und führen Sie sie aus: Die Antwort auf den Aufruf zum Erstellen einer Abrechnungsvereinbarung enthält die Links zu approval_url und execute_url.  Wir müssen die Genehmigung für die Abrechnungsvereinbarung einholen und dann die Abrechnungsvereinbarung ausführen.

Abrechnungspläne

Erstellen Sie einen Abrechnungsplan

Erstellen Sie einen Fakturierungsplan, der die Abrechnungsperioden definiert.  Dies ist eine Zusammenfassung der Parameter, die zum Erstellen eines Plans übergeben werden müssen. 

  • Name: Name des Abrechnungsplans.
  • Beschreibung: Beschreibung des Fakturierungsplans. 
  • Typ: Zulässige Werte sind 'FIXED' für eine festgelegte Anzahl wiederkehrender Zahlungen oder 'INFINITE' für einen Plan, der wiederholt wird, bis er manuell abgebrochen wird. 
  • Merchant Preferences: Dies ist ein Objekt, das Präferenzen wie Setup-Gebühr, maximale Fehlerversuche einer Zahlung, Rückgabe-URL, Abbruch-URL, Benachrichtigungs-URL angibt, wobei PayPal den Nutzer nach einer Zahlung umleitet.    
  • Zahlungsdefinitionen: Array mit Zahlungsdefinitionen für diesen Plan.  Normalerweise würde dieses Array eine oder zwei Zahlungsdefinitionen haben.  Wenn wir eine kostenlose Testversion oder eine Testversion zu einem reduzierten Preis anbieten möchten, richten wir zwei Zahlungsdefinitionen ein.  Die erste wird die Definition für die Probezeit sein, und die zweite Definition wäre die regelmäßige Zahlung.  Die Eigenschaften für eine Zahlungsdefinition sind Name, Typ (Probe oder Normal), Häufigkeit (Tag, Woche, Monat, Jahr), Häufigkeitsintervall (wenn wir die Frequenz auf "WOCHE" und das Frequenzintervall auf "1" setzen, sind wir Definieren einer wöchentlichen Zahlung), Betrag, der dem Kunden berechnet wird, und Zyklen ist die Anzahl der gesamten Zahlungen.  Charge Models dient dazu, die Versandkosten und Steuern zusätzlich zum Betragswert für den Plan anzugeben. 

Dies ist ein Code-Snippet, das zeigt, wie ein Fakturierungsplan erstellt wird:

Ein neu erstellter Fakturierungsplan hat den Status CREATED.  Aktivieren Sie es in den Status AKTIV, damit Ihre Kunden den Plan abonnieren können.  Um den Plan zu aktivieren, müssen wir eine PATCH-Anfrage machen: 

Wie Sie sehen können, sind PayPal-Bibliotheken ein direkter Wrapper für ihre REST-API, was gut ist, aber die API ist auch sehr komplex im Vergleich zu anderen wie Stripe.  Aus diesem Grund ist es wirklich eine gute Option, alle PayPal-Kommunikation in Objekte mit klareren und einfacheren APIs für unsere Anwendungen zu wickeln.  Hier können Sie sehen, wie dieser Code in mehrere Funktionen eingepackt ist und wie Parameter aussehen:

Aktualisierungsabrechnungsplan 

Sie können die Informationen für einen bestehenden Abrechnungsplan aktualisieren, indem Sie eine "PATCH" -Anfrage stellen.  Dies ist eine Funktion, die diesen Aufruf umschließt:

Um die Beschreibung des Fakturierungsplans zu aktualisieren, können wir diese Funktion aufrufen und die richtigen Parameter übergeben: 

Löschen eines Fakturierungsplans

Wenn Sie keine neuen Kunden für einen Abrechnungsplan akzeptieren möchten, sollten Sie sie idealerweise auf den Status "INAKTIV" aktualisieren.  Dies wirkt sich nicht auf bestehende Abrechnungsvereinbarungen für diesen Plan aus.  Dies kann einfach durch Aufruf der Funktion UpdateBillingPlan erfolgen: 

Abrechnungsvereinbarungen

Erstellen Sie eine Abrechnungsvereinbarung 

Sobald Sie einen oder mehrere Fakturierungspläne erstellt haben, möchten Sie damit beginnen, dass sich Kunden für Ihre Abonnementpläne anmelden.  Um dies zu tun, müssen Sie Ihre Kundendaten sammeln und eine Anfrage an PayPal stellen.  Um diese Funktionalität testen zu können, habe ich dem HomeController mehrere Aktionen hinzugefügt: 

  • Abonnieren: Dies ist die erste Aktion, die aufgerufen wird.  Es wird ein Testabrechnungsplan erstellt und anschließend wird eine Abrechnungsvereinbarung (Abonnement) für diesen Plan erstellt, und der Benutzer wird zur Bestätigung der Zahlung an PayPal weitergeleitet. 
  • SubscribeSuccess: Diese Aktion wird als 'Return URL' nach einem erfolgreichen Abonnement verwendet.  Die Übereinstimmungstoken-ID wird in der Abfragezeichenfolge übergeben, und wir verwenden dieses Token, um die Fakturierungsvereinbarung auszuführen und sie aktiv zu machen.
  • SubscribeCancel: Diese Aktion wird als "URL abbrechen" verwendet.  Wenn aus irgendeinem Grund die Zahlung fehlschlägt oder Ihr Kunde die Zahlung auf PayPal storniert, wird der Benutzer zu dieser Aktion geleitet, und Sie müssen damit umgehen.  Vielleicht bieten Sie die Möglichkeit, es erneut zu versuchen. 

Wie Sie im vorherigen Code-Snippet sehen können, habe ich den Großteil der Funktionalität in verschiedene Methoden eingepackt.  Der erste ist "CreateBillingPlan", der im vorherigen Abschnitt erklärt wurde.  Der zweite ist "CreateBillingAgreement", mit dem ein Benutzer einen Plan abonniert: 

Die dritte Methode ist "ExecuteBillingAgreement".  Nach einer erfolgreichen Genehmigung des Abonnements verwenden wir das zurückgegebene Token, um das Abonnement zu aktivieren: 

Eine Abrechnungsvereinbarung aussetzen

Verwenden Sie diese Methode, um eine Vereinbarung auszusetzen: 

Reaktivieren Sie eine Abrechnungsvereinbarung 

Dieser ist dem vorherigen sehr ähnlich: 

Stornieren einer Abrechnungsvereinbarung 

Verwenden Sie diese Funktion, um einen Plan abzubrechen: 

Aktualisieren Sie eine Abrechnungsvereinbarung

Diese Option ist sehr begrenzt, und was ich von diesem Anruf erwarten würde, ist die Möglichkeit, den Abonnementplan zu ändern, um einen Kunden zu aktualisieren oder herabzustufen.  Dies wird in einem einzelnen Aufruf nicht unterstützt, wie es in Stripe ist.  Sie müssen dieses Szenario behandeln, indem Sie die aktuelle Vereinbarung aufheben und eine neue für Upgrades oder Downgrades erstellen.  Es ist nicht ideal, aber es könnte sich in Zukunft ändern. 

Fazit 

Dies ist eine Übersicht über die gängigsten Funktionen, die Benutzer zur Integration in PayPal verwenden.  Ihre API ist weitaus größer als die in diesem Artikel beschriebenen Integrationsmethoden. Sie können auch Rückerstattungen und teilweise Rückerstattungen ausgeben und sie haben viele verschiedene Optionen für Edge Cases in den in diesem Artikel behandelten Samples.  Wenn Sie mehr Details zu einer bestimmten Integration erfahren möchten, hinterlassen Sie einen Vorschlag in den Kommentaren.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.