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:
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"):
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

Kategorien

Devblog

Tags

PHP

Hat Dir der Artikel gefallen?