✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

PayPal Payment Gateway-Integration in PHP über die PayPal REST API

118

PayPal ist eines der vertrauenswürdigsten Zahlungsgateways im Internet. Es wird häufig auf Websites verwendet, um Online-Zahlungen zu akzeptieren. Die Dokumentation der PayPal-API ist jedoch nicht leicht zu verstehen. Für einen Entwickler, der das PayPal-Zahlungsgateway zum ersten Mal integrieren wird, wird es viele Stunden dauern, bis es erfolgreich ist. Ich habe wahnsinnig viele Stunden damit verbracht, die PayPal-API-Dokumentation zu lesen. Und stellen Sie später fest, dass Sie die Paypal-Dokumentation nicht gründlich lesen müssen, um sie zu integrieren.

In diesem Artikel untersuchen wir, wie Sie ein PayPal-Zahlungsgateway mithilfe der PayPal-REST-API integrieren. Wir werden die von Omnipay bereitgestellte GitHub-Bibliothek verwenden. Omnipay bietet eine saubere und einfache Möglichkeit, verschiedene Zahlungsgateways in Ihre Webanwendung zu integrieren. Auch ihre Codestruktur ist sauber und effizient. Entwickler würden es lieben.

Holen Sie sich die PayPal-Kunden-ID und das Kundengeheimnis

Für die PayPal-Integration in die Website müssen Sie zunächst eine REST-API-App auf einem PayPal-Entwicklerkonto erstellen. Sobald Sie die App erstellt haben, erhalten Sie die Client-ID und das Client-Geheimnis, die in den nächsten Schritten benötigt werden.

Um eine REST-API-App zu erstellen, gehen Sie zu Ihrem PayPal-Entwicklerkonto und melden Sie sich beim Dashboard an.

Klicken Sie im Entwickler-Dashboard auf das Menü „Meine Apps & Zugangsdaten”. Klicken Sie im Abschnitt REST-API-Apps auf die Schaltfläche "App erstellen".

Geben Sie im nächsten Schritt den App-Namen ein und Sie erhalten Ihre Client-ID und Ihr Client-Geheimnis. In meinem Fall kann ich im folgenden Screenshot Sandbox-Anmeldeinformationen sehen. In Ihrem Fall kann es sich um Live-Anmeldeinformationen handeln. Oder Sie können es auch mit Ihren Sandbox-Anmeldeinformationen versuchen.

PayPal Payment Gateway-Integration in PHP über die PayPal REST API

Bibliotheksinstallation und grundlegende Einrichtung

Wie gesagt, wir werden Omnipay für die PayPal REST API-Integration verwenden. Wir müssen zuerst ihre Bibliotheken mit dem Composer installieren. Führen Sie den folgenden Befehl aus, um die Bibliotheken zu installieren.

composer require league/omnipay omnipay/paypal

Erstellen Sie nach der Installation der Bibliothek eine Konfigurationsdatei, in der wir unsere API-Anmeldeinformationen speichern, eine DB-Verbindung schreiben und das Gateway initialisieren.

config.php

<?php
require_once "vendor/autoload.php";
 
use OmnipayOmnipay;
 
define('CLIENT_ID', 'PAYPAL_CLIENT_ID_HERE');
define('CLIENT_SECRET', 'PAYPAL_CLIENT_SECRET_HERE');
 
define('PAYPAL_RETURN_URL', 'YOUR_SITE_URL/success.php');
define('PAYPAL_CANCEL_URL', 'YOUR_SITE_URL/cancel.php');
define('PAYPAL_CURRENCY', 'USD'); // set your currency here
 
// Connect with the database
$db = new mysqli('localhost', 'MYSQL_DB_USERNAME', 'MYSQL_DB_PASSWORD', 'MYSQL_DB_NAME'); 
 
if ($db->connect_errno) {
    die("Connect failed: ". $db->connect_error);
}
 
$gateway = Omnipay::create('PayPal_Rest');
$gateway->setClientId(CLIENT_ID);
$gateway->setSecret(CLIENT_SECRET);
$gateway->setTestMode(true); //set it to 'false' when go live

Hier habe ich den Parameter ‘Paypal_Rest’ an die Methode create von Omnipay übergeben. Omnipay ruft im Hintergrund die PayPal-REST-API auf, während die Zahlung darüber ausgeführt wird.

Erstellen Sie als Nächstes ein einfaches Formular, in das ein Benutzer den Betrag eingeben kann. Zu Demozwecken behalte ich nur ein Feld im Formular. Sie können das Formular nach Ihren Wünschen erweitern.

form.html

<form action="charge.php" method="post">
    <input type="text" name="amount" value="20.00" />
    <input type="submit" name="submit" value="Pay Now">
</form>

Wenn die Zahlung abgeschlossen ist, sollten wir die Transaktionsdetails in der Datenbanktabelle speichern. Erstellen Sie eine Datenbanktabelle, indem Sie die folgende SQL-Abfrage ausführen.

CREATE TABLE `payments` ( `id` int(11) NOT NULL AUTO_INCREMENT,
 `payment_id` varchar(255) NOT NULL,
 `payer_id` varchar(255) NOT NULL,
 `payer_email` varchar(255) NOT NULL,
 `amount` float(10,2) NOT NULL,
 `currency` varchar(255) NOT NULL,
 `payment_status` varchar(255) NOT NULL,
 PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Diese Tabelle enthält keinen Fremdschlüssel, da sie nur zu Demozwecken dient. Der Benutzer kann in dieser Tabelle eine Spalte user_id hinzufügen, um auf die Zahlung mit dem Benutzer zu verweisen.

PayPal Payment Gateway-Integration in PHP über die PayPal REST API

Bei Verwendung der PayPal REST API wird der Benutzer zu PayPal umgeleitet, um die Zahlung abzuschließen. Nach der Zahlung wird der Benutzer basierend auf dem Erfolgs- oder Fehlerstatus zu unserer Anwendung zurückgeleitet. Wir haben diese URLs in der config.phpobigen Datei definiert .

Sobald der Benutzer mit erfolgreicher Antwort zu unserer Anwendung zurückkehrt, müssen wir die Zahlung in unserer PHP-Datei ausführen, was success.phpin unserem Fall der Fall ist. Wir speichern die Zahlungsinformationen auch nach Ausführung der Zahlung über die PayPal REST API. Unser Code wird also wie folgt aussehen.

charge.php

<?php
require_once 'config.php';
 
if (isset($_POST['submit'])) {
 
    try {
        $response = $gateway->purchase(array(
            'amount' => $_POST['amount'],
            'currency' => PAYPAL_CURRENCY,
            'returnUrl' => PAYPAL_RETURN_URL,
            'cancelUrl' => PAYPAL_CANCEL_URL,
        ))->send();
 
        if ($response->isRedirect()) {
            $response->redirect(); // this will automatically forward the customer
        } else {
            // not successful
            echo $response->getMessage();
        }
    } catch(Exception $e) {
        echo $e->getMessage();
    }
}

erfolg.php

<?php
require_once 'config.php';
 
// Once the transaction has been approved, we need to complete it.
if (array_key_exists('paymentId', $_GET) && array_key_exists('PayerID', $_GET)) {
    $transaction = $gateway->completePurchase(array(
        'payer_id'             => $_GET['PayerID'],
        'transactionReference' => $_GET['paymentId'],
    ));
    $response = $transaction->send();
 
    if ($response->isSuccessful()) {
        // The customer has successfully paid.
        $arr_body = $response->getData();
 
        $payment_id = $arr_body['id'];
        $payer_id = $arr_body['payer']['payer_info']['payer_id'];
        $payer_email = $arr_body['payer']['payer_info']['email'];
        $amount = $arr_body['transactions'][0]['amount']['total'];
        $currency = PAYPAL_CURRENCY;
        $payment_status = $arr_body['state'];
 
        // Insert transaction data into the database
        $isPaymentExist = $db->query("SELECT * FROM payments WHERE payment_id = '".$payment_id."'");
 
        if($isPaymentExist->num_rows == 0) {
            $insert = $db->query("INSERT INTO payments(payment_id, payer_id, payer_email, amount, currency, payment_status) VALUES('". $payment_id ."', '". $payer_id ."', '". $payer_email ."', '". $amount ."', '". $currency ."', '". $payment_status ."')");
        }
 
        echo "Payment is successful. Your transaction id is: ". $payment_id;
    } else {
        echo $response->getMessage();
    }
} else {
    echo 'Transaction is declined';
}

abbrechen.php

<h3>User is canceled the payment.</h3>

Produktinformationen an PayPal senden

Im obigen Code senden wir den Betrag zur Zahlung an PayPal. Sie können auch Produktinformationen senden. Ihre Kunden können diese Produktdetails auf der Zahlungsseite sehen, bevor sie eine Zahlung vornehmen.

Um die Produktinformationen zu senden, müssen Sie das Array ‘items’ purchasewie folgt an die Methode übergeben.

$response = $gateway->purchase(array(
    'amount' => $_POST['amount'],
    'items' => array(
        array(
            'name' => 'Course Subscription',
            'price' => $_POST['amount'],
            'description' => 'Get access to premium courses.',
            'quantity' => 1
        ),
    ),
    'currency' => PAYPAL_CURRENCY,
    'returnUrl' => PAYPAL_RETURN_URL,
    'cancelUrl' => PAYPAL_CANCEL_URL,
))->send();

Hier habe ich die Produktdetails statisch übergeben. Sie sollten es abhängig von Ihrem Produkt dynamisch gestalten.

Ich hoffe, Sie haben die Integration von PayPal Payment Gateway in PHP kennengelernt. Ich würde gerne Ihre Gedanken oder Vorschläge im Kommentarbereich unten hören.

Zum Thema passende Artikel

Aufnahmequelle: artisansweb.net

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen