Bezahlung im Web mit PayPal: der PayPal-PHP-SDK
Daraus ist mittlerweile das geworden, was sich hinter dem für uns alle so bequemen "Mit PayPal bezahlen"-Button verbirgt: ein Online-Bezahlsystem, das ca. 10 mal so viele Transaktionen wie Western Union und sogar 100 mal so viele Transaktionen wie Bitcoin abwickelt. Online-Shopping ohne PayPal ist heutzutage nicht mehr denkbar; ob eBay, Amazon oder wo auch immer: der "Mit PayPal bezahlen"-Button ist einfach omnipräsent. Daher ist eine Integration in TYPO3 mittels eigener Extbase-Extension durchaus sinnvoll, wenn eine Integration einer Payment-Lösung vom Kunden gewünscht wird.
Ist der SDK erstmal integriert, lässt sich der Bezahlungsvorgang schnell umsetzen. Standardmäßig ist der PayPal-Account im Sandbox-Modus, sodass man die Funktionen ausprobieren kann, ohne tatsächliche Zahlungsvorgänge auszulösen.
Über das ApiContext-Objekt wird die Verbindung authentifiziert. Zusätzlich enthält es auch ein $config-Objekt, welches zum Beispiel für Logging sehr hilfreich ist. Schlägt ein Zahlungsvorgang während der Entwicklungsarbeiten fehl, kann man so schnell nach der Ursache suchen:
Ist der SDK erstmal integriert, lässt sich der Bezahlungsvorgang schnell umsetzen. Standardmäßig ist der PayPal-Account im Sandbox-Modus, sodass man die Funktionen ausprobieren kann, ohne tatsächliche Zahlungsvorgänge auszulösen.
Über das ApiContext-Objekt wird die Verbindung authentifiziert. Zusätzlich enthält es auch ein $config-Objekt, welches zum Beispiel für Logging sehr hilfreich ist. Schlägt ein Zahlungsvorgang während der Entwicklungsarbeiten fehl, kann man so schnell nach der Ursache suchen:
Angenommen, die zu bezahlenden Produkte befinden sich bereits in einem Array, so kann dieser iteriert und die entsprechenden Item-Objekte erstellt werden:
Die ItemList() enthält dabei jedes einzelne Item mit allen Details, die für den Kunden und den Verkäufer wichtig sind.
Sind alle Produkte für den Zahlungsvorgang vorbereitet, wird dieser noch um ein paar zusätzliche Informationen (Mehrwertsteuer, Versandkosten, ggf. eine zusätzliche, frei definierbare Nachricht an den Zahlungsempfänger – dort kann zum Beispiel eine interne ID hinterlegt werden – sowie die RedirectURLs, welche festlegen, wohin nach erfolgreichem oder abgebrochenem Zahlungsvorgang weitergeleitet wird.
Ist die ItemList nun korrekt befüllt, der Betrag wurde korrekt berechnet und die Authentifizierung gegen die API war erfolgreich, steht einer Bezahlung mit PayPal nichts mehr im Wege. Das PayPal-Log kommentiert die Authentifizierung mit Status 200 ("OK") und die Bezahlung an sich mit 201 ("Created"):
Sind alle Produkte für den Zahlungsvorgang vorbereitet, wird dieser noch um ein paar zusätzliche Informationen (Mehrwertsteuer, Versandkosten, ggf. eine zusätzliche, frei definierbare Nachricht an den Zahlungsempfänger – dort kann zum Beispiel eine interne ID hinterlegt werden – sowie die RedirectURLs, welche festlegen, wohin nach erfolgreichem oder abgebrochenem Zahlungsvorgang weitergeleitet wird.
Ist die ItemList nun korrekt befüllt, der Betrag wurde korrekt berechnet und die Authentifizierung gegen die API war erfolgreich, steht einer Bezahlung mit PayPal nichts mehr im Wege. Das PayPal-Log kommentiert die Authentifizierung mit Status 200 ("OK") und die Bezahlung an sich mit 201 ("Created"):
Sie interessieren sich auch für Paymentlösungen? Oder haben Sie bereits einen Webshop und wollen PayPal als Bezahlform integrieren? Rufen Sie uns an, Ihre TYPO3-Agentur aus Karlsruhe berät Sie gerne!
$apiContext->setConfig(
array(
'log.LogEnabled' => true,
'log.FileName' => '../logs/paypal.log',
'log.LogLevel' => 'DEBUG'
)
);
foreach ($products as $product) {
$price = $product['product']->getPrice() * $product['count'];
$subTotal += $price;
$item = new Item();
$item->setName($product['product']->getEan())
->setDescription($product['product']->getName())
->setCurrency('EUR')
->setQuantity($product['count'])
->setSku($product['product']->getEan())
->setPrice($product['product']->getPrice());
$itemList->addItem($item);
}
[06-12-2016 04:09:00] PayPal\Core\PayPalHttpConnection : INFO: POST https://api.sandbox.paypal.com/v1/oauth2/token
[06-12-2016 04:09:01] PayPal\Core\PayPalHttpConnection : INFO: Response Status : 200
[06-12-2016 04:09:01] PayPal\Core\PayPalHttpConnection : INFO: POST https://api.sandbox.paypal.com/v1/payments/payment
[06-12-2016 04:09:03] PayPal\Core\PayPalHttpConnection : INFO: Response Status : 201
Hat dir der Artikel gefallen?
Werkraum News:

Wie füge ich CKEditor5 Plugins in TYPO3 12 ein?
Integriere mühelos CKEditor5-Plugins in TYPO3 12! Unser Teaser bietet einen kurzen Einblick, wie du die Vielseitigkeit des CKeditors optimierst und deine Textbearbeitung auf…

Der Schlüssel zur Lesbarkeit: Responsive Font Sizes
Im Dschungel der Internetseiten kann es frustrierend sein, wenn die Schriftgröße nicht mitspielt. Aber keine Sorge, Responsive Font Sizes sind hier, um sicherzustellen, dass…

Einblicke in das Logging-System von TYPO3 und Konfiguration von Log Writern
Tauche ein in die Welt des TYPO3-Loggings! Unser neuester Beitrag zeigt dir nicht nur, wie du das Logging-System optimal konfigurierst, sondern liefert auch Code-Beispiele für…