✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Integrazione del gateway di pagamento PayPal in PHP utilizzando l’API REST di PayPal

371

PayPal è uno dei gateway di pagamento più affidabili su Internet. È ampiamente utilizzato sui siti Web per accettare pagamenti online. Tuttavia, la documentazione dell’API PayPal non è di facile comprensione. Per uno sviluppatore che integrerà per la prima volta il gateway di pagamento PayPal, ci vorranno molte ore per riuscirci. Ho passato una quantità folle di ore a leggere la documentazione dell’API PayPal. E poi rendersi conto che non è necessario leggere a fondo la documentazione di Paypal per integrarla.

In questo articolo, studiamo come integrare un gateway di pagamento PayPal utilizzando PayPal REST API. Useremo la libreria GitHub fornita da Omnipay. Omnipay fornisce un modo semplice e pulito per integrare diversi gateway di pagamento nella tua applicazione web. Anche la loro struttura del codice è pulita ed efficiente. Gli sviluppatori lo adorerebbero.

Ottieni l’ID cliente PayPal e il segreto cliente

Per l’integrazione di PayPal nel sito Web, devi prima creare un’app API REST su un account sviluppatore PayPal. Una volta creata l’app, otterrai l’ID client e il segreto client che richiederanno nei passaggi successivi.

Per creare l’app API REST, vai al tuo account sviluppatore PayPal e accedi alla dashboard.

Nella dashboard dello sviluppatore, fai clic sul menu "Le mie app e credenziali". Fare clic sul pulsante "Crea app" nella sezione delle app dell’API REST.

Nel passaggio successivo, inserisci il nome dell’app e otterrai l’ID cliente e il segreto del cliente. Nel mio caso, nello screenshot qui sotto posso vedere le credenziali della sandbox. Possono essere credenziali live nel tuo caso. Oppure puoi provare anche con le tue credenziali sandbox.

Integrazione del gateway di pagamento PayPal in PHP utilizzando l'API REST di PayPal

Installazione della libreria e configurazione di base

Come ho detto, utilizzeremo Omnipay per l’integrazione dell’API REST di PayPal. Dobbiamo prima installare le loro librerie usando il Composer. Esegui il comando seguente per installare le librerie.

composer require league/omnipay omnipay/paypal

Dopo aver installato la libreria, creare un file di configurazione in cui archiviare le nostre credenziali API, scrivere la connessione DB e inizializzare il gateway.

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

Qui, ho passato il parametro "Paypal_Rest" al metodo di creazione di Omnipay. Omnipay in background chiama l’API REST di PayPal mentre effettua il pagamento attraverso di essa.

Quindi, crea un semplice modulo in cui un utente può inserire l’importo. A scopo dimostrativo, mantengo solo un campo nel modulo. Puoi estendere il modulo secondo le tue esigenze.

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>

Quando il pagamento viene completato, dovremmo salvare i dettagli della transazione nella tabella del database. Crea una tabella di database eseguendo la query SQL seguente.

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;

Questa tabella non contiene chiavi esterne in quanto è solo a scopo dimostrativo. L’utente può aggiungere una colonna user_id in questa tabella per fare riferimento al pagamento con l’utente.

Integrazione del gateway di pagamento PayPal in PHP utilizzando l’API REST di PayPal

Quando si utilizza PayPal REST API, l’utente reindirizzerà a PayPal per completare il pagamento. Dopo aver effettuato il pagamento, l’utente reindirizzerà alla nostra applicazione in base allo stato di successo o fallimento. Abbiamo definito questi URL nel config.phpfile sopra.

Una volta, l’utente reindirizza alla nostra applicazione con risposta positiva, dobbiamo eseguire il pagamento nel nostro file PHP che è success.phpnel nostro caso. Archiviamo anche le informazioni di pagamento dopo aver eseguito il pagamento utilizzando l’API REST di PayPal. Quindi il nostro codice sarà il seguente.

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();
    }
}

success.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';
}

cancella.php

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

Invia le informazioni sul prodotto a PayPal

Nel codice sopra, stiamo inviando l’importo da pagare su PayPal. Potresti anche voler inviare informazioni sul prodotto. I tuoi clienti possono vedere questi dettagli del prodotto nella pagina di pagamento prima di effettuare un pagamento.

Per inviare le informazioni sul prodotto, è necessario passare l’array "items" al purchase metodo come segue.

$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();

Qui ho passato staticamente i dettagli del prodotto. Dovresti renderlo dinamico a seconda del tuo prodotto.

Spero che tu abbia avuto modo di conoscere l’integrazione del gateway di pagamento PayPal in PHP. Mi piacerebbe sentire i tuoi pensieri o suggerimenti nella sezione commenti qui sotto.

articoli Correlati

Fonte di registrazione: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More