PayPal-Kontostand und Umsätze

PayPal ist ein beliebtes Zahlungsmittel. Gut, wenn man auf einfache Weise den Überblick über den Stand seines PayPal-Kontos und über die erfolgten Umsätze erhält – zum Beispiel über die Webseite oder eine App für das Smartphone. Uns interessiert natürlich, wie wir von der Benutzeroberfläche einer WPF-Anwendung auf diese Informationen zugreifen können. Deshalb schauen wir uns in diesem Artikel an, wie Sie die notwendigen Sicherheitsinformationen für den Zugriff erhalten und wie Sie eine Anwendung um Funktionen zum Abrufen von Kontostand und Umsätzen erweitern.

Um die für den Zugriff nötigen Daten zu erhalten, öffnen Sie im Webbrowser die folgende URL: https://www.paypal.com/businessmanage/credentials/apiAccess. Hier ist zunächst eine Anmeldung nötig, danach erscheint die angeforderte Seite. Hier gibt es weiten unten einen Link mit der Beschriftung API-Berechtigung verwalten.

Damit gelangen Sie dann, wenn Sie die API-Daten bereits einmal angefordert haben, zu der Seite aus Bild 1, wo Sie die drei Informationen API-Benutzername, API-Passwort und Signatur finden.

Abrufen der Zugangsdaten

Bild 1: Abrufen der Zugangsdaten

Wenn Sie die Daten noch nicht angefordert haben, können Sie diese nun anfordern. Dann sieht der Bereich wie in Bild 2 aus. Hier wähle Sie die erste Option zum Anfordern einer API-Signatur aus. Die neu angeforderten Daten werden dann wie zuvor beschrieben angezeigt.

Anfordern der API-Berechtigung

Bild 2: Anfordern der API-Berechtigung

Projekt anlegen

Wir verwenden für den Zugriff auf das PayPal-Konto ein Projekt auf Basis der Vorlage Visual Basic|Windows Desktop|WPF-App.

Klassenmodell für den Zugriff auf die API

Nun wollen wir ein Klassenmodell entwickeln, mit dem wir auf den Webservice von PayPal zugreifen können. Dazu öffnen Sie mit dem Befehl Hinzufügen|Dienstverweis des Kontextmenüs des Projekt-Elements im Projektmappen-Explorer den Dialog Dienstverweis hinzufügen. Hier tragen unter Adresse den folgenden Wert ein:

https://www.paypalobjects.com/wsdl/PayPalSvc.wsdl

Dann klicken Sie auf die Schaltfläche Gehe zu und warten einige Augenblicke. Dann erscheint in der Liste Dienste der Eintrag PayPalAPIInterfaceService mit zwei Untereinträgen (siehe Bild 3). Wenn Sie auf einen der Untereinträge klicken, erscheinen unter Vorgänge einige API-Befehle. Wir tragen unten in das Feld Namespace den Wert PayPalService ein. Danach können Sie Klassen für den Zugriff auf den Webservice mit einem Klick auf die Schaltfläche OK erstellen lassen.

Hinzufügen eines Dienstverweises

Bild 3: Hinzufügen eines Dienstverweises

Den PayPal-Service finden wir danach im Projektmappen-Explorer in einem neuen Bereich namens Connected Services vor (siehe Bild 4). Hier brauchen wir keine weiteren Schritte vorzunehmen, wir nutzen gleich einfach die Befehle des Service.

Der PayPal-Service im Projektmappen-Explorer

Bild 4: Der PayPal-Service im Projektmappen-Explorer

Webservice auf Produktiv-Konto umstellen

Beim Einrichten des Webservice wurden in der Datei App.config einige Einstellungen vorgenommen. Darunter finden Sie im Bereich client auch zwei Elemente namens endpoint. Diese enthalten aktuell die Adresse der Sandbox-Zugänge (siehe Bild 5).

Einstellungen für den PayPal-Webservice in der Datei App.config

Bild 5: Einstellungen für den PayPal-Webservice in der Datei App.config

Wenn Sie ein Sandbox-Konto eingerichtet haben oder einrichten möchten, können Sie damit arbeiten. Wir wollen diese Schritte an dieser Stelle aussparen und direkt auf das Produktiv-Konto zugreifen.

Dazu ersetzen Sie für diese Elemente die Werte für das Attribut address mit den folgenden Werten:

https://api-3t.paypal.com/2.0/
https://api-aa-3t.paypal.com/2.0

Beachten Sie, dass Sie sich die Adressen für die beiden endpoint-Elemente geringfügig unterscheiden – genau wie die Werte der name-Attribute. Das zweite enthält jeweils die Buchstaben aa. Ersetzen Sie also so, dass das Ergebnis anschließend wie folgt aussieht:

<endpoint address="https://api-3t.paypal.com/2.0/" binding="basicHttpBinding" bindingConfiguration="PayPalAPISoapBinding"    contract="PaypalService.PayPalAPIInterface" name="PayPalAPI" />
<endpoint address="https://api-aa-3t.paypal.com/2.0/" binding="basicHttpBinding"     bindingConfiguration="PayPalAPIAASoapBinding" contract="PaypalService.PayPalAPIAAInterface" name="PayPalAPIAA" />

Schaltfläche für den Abruf des aktuellen Saldos

Nun fügen wir dem Fenster MainWindow.xaml eine Schaltfläche namens btnSaldo hinzu und fügen dieser über das Attribut Click eine neue Ereignismethode namens btnSaldo_Click hinzu:

<Button x:Name="btnSaldo" Content="Saldo abrufen" ... Click="btnSaldo_Click"/>

Die Ereignismethode im Code behind-Modul MainWindow.xaml.vb ist noch leer, wird aber gleich gefüllt:

Private Sub btnSaldo_Click(sender As Object, e As RoutedEventArgs)
End Sub

Zugriffsdaten als Konstanten abspeichern

Nun hinterlegen wir zunächst die Zugriffsdaten für den PayPal-Account als Konstanten im Kopf des Code behind-Moduls:

Class MainWindow
     Const cStrBenutzername As String = "********************"
     Const cStrKennwort As String = "*******************"
     Const cStrSignatur As String = "************************************************"
     ...
End Class

Saldo abrufen

Die Methode btnSaldo_Click füllen wir nun mit den benötigten Anweisungen zum Abrufen des Saldos auf. Als Erstes deklarieren wir einige Variablen:

Private Sub btnSaldo_Click(sender As Object, e As RoutedEventArgs)
     Dim objPayPalAPIInterfaceClient As PaypalService.PayPalAPIInterfaceClient
     Dim objCustomSecurityHeaderType As PaypalService.CustomSecurityHeaderType
     Dim objUserIDPasswordType As PaypalService.UserIdPasswordType
     Dim objBalanceReq As PaypalService.GetBalanceReq
     Dim objGetBalanceResponseType As PaypalService.GetBalanceResponseType

Danach füllen wir einige Objektvariablen mit den entsprechenden Verweisen auf neu erstellte Objekte, darunter auch das Objekt objUserIDPasswordType (wir haben die Objekte der Übersicht halber nach dem Objekttyp mit vorangestelltem obj benannt).

Darunter auch das Objekt objUserIDPasswordType, dem wir über die Eigenschaften Username, Password und Signature die entsprechenden Daten aus den zuvor festgelegten Konstanten zuweisen:

     objPayPalAPIInterfaceClient = New PaypalService.PayPalAPIInterfaceClient
     objCustomSecurityHeaderType = New PaypalService.CustomSecurityHeaderType
     objUserIDPasswordType = New PaypalService.UserIdPasswordType
     With objUserIDPasswordType
         .Username = cStrBenutzername
         .Password = cStrKennwort
         .Signature = cStrSignatur
     End With
     objCustomSecurityHeaderType.Credentials = objUserIDPasswordType

Danach erstellen wir ein GetBalanceReq-Objekt, dem wir ein neues GetBalanceRequestType-Objekt zuweisen sowie die Version des zu verwendenden Requests (hier 204.0):

     objBalanceReq = New PaypalService.GetBalanceReq
     With objBalanceReq
         .GetBalanceRequest = New PaypalService.GetBalanceRequestType
         .GetBalanceRequest.Version = "204.0"
     End With

Das GetBalanceReq-Objekt übergeben wir dann dem Aufruf der Methode GetBalance als zweiten Parameter – der erste ist der Parameter objCustomSecurityHeaderType mit den Zugangsdaten:

     objGetBalanceResponseType = objPayPalAPIInterfaceClient.GetBalance(objCustomSecurityHeaderType, objBalanceReq)

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins DATENBANKENTWICKLER:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 200 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar