Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Intégration de la passerelle de paiement PayPal dans PHP à l’aide de l’API REST PayPal

268

PayPal est l’une des passerelles de paiement les plus fiables sur Internet. Il est largement utilisé sur les sites Web pour accepter les paiements en ligne. Cependant, la documentation de l’API PayPal n’est pas facile à comprendre. Pour un développeur qui va intégrer la passerelle de paiement PayPal pour la première fois, il faudra de longues heures pour y arriver. J’ai passé un nombre insensé d’heures à lire la documentation de l’API PayPal. Et réalisez plus tard qu’il n’est pas nécessaire de lire la documentation Paypal en profondeur pour l’intégrer.

Dans cet article, nous étudions comment intégrer une passerelle de paiement PayPal à l’aide de l’API REST PayPal. Nous allons utiliser la bibliothèque GitHub fournie par Omnipay. Omnipay fournit un moyen simple et propre d’intégrer différentes passerelles de paiement sur votre application Web. Leur structure de code est également propre et efficace. Les développeurs adoreraient.

Obtenir l’identifiant client PayPal et le secret client

Pour l’intégration de PayPal dans le site Web, vous devez d’abord créer une application API REST sur un compte de développeur PayPal. Une fois l’application créée, vous obtiendrez l’identifiant client et le secret client qui seront nécessaires dans les étapes suivantes.

Pour créer une application API REST, accédez à votre compte de développeur PayPal et connectez-vous au tableau de bord.

Dans le tableau de bord du développeur, cliquez sur le menu "Mes applications et informations d’identification". Cliquez sur le bouton « Créer une application » dans la section des applications de l’API REST.

À l’étape suivante, remplissez le nom de l’application et vous obtiendrez votre identifiant client et votre secret client. Dans mon cas, dans la capture d’écran ci-dessous, je peux voir les informations d’identification du bac à sable. Il peut s’agir d’informations d’identification en direct dans votre cas. Ou vous pouvez également essayer avec vos informations d’identification sandbox.

Intégration de la passerelle de paiement PayPal dans PHP à l'aide de l'API REST PayPal

Installation de la bibliothèque et configuration de base

Comme je l’ai dit, nous utiliserons Omnipay pour l’intégration de l’API REST PayPal. Nous devons d’abord installer leurs bibliothèques à l’aide de Composer. Exécutez la commande ci-dessous pour installer les bibliothèques.

composer require league/omnipay omnipay/paypal

Après avoir installé la bibliothèque, créez un fichier de configuration dans lequel nous stockons nos informations d’identification API, écrivons la connexion DB et initialisons la passerelle.

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

Ici, j’ai passé le paramètre ‘Paypal_Rest’ à la méthode de création d’Omnipay. Omnipay en arrière-plan appelle l’API REST PayPal tout en effectuant le paiement via celle-ci.

Ensuite, créez un formulaire simple où un utilisateur peut entrer le montant. À des fins de démonstration, je ne garde qu’un champ dans le formulaire. Vous pouvez étendre le formulaire selon vos besoins.

formulaire.html

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

Lorsque le paiement est terminé, nous devons enregistrer les détails de la transaction dans la table de la base de données. Créez une table de base de données en exécutant la requête SQL ci-dessous.

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;

Cette table ne contient aucune clé étrangère car elle sert uniquement à des fins de démonstration. L’utilisateur peut ajouter une colonne user_id dans cette table pour référencer le paiement avec l’utilisateur.

Intégration de la passerelle de paiement PayPal dans PHP à l’aide de l’API REST PayPal

Lors de l’utilisation de l’API REST PayPal, l’utilisateur sera redirigé vers PayPal pour effectuer le paiement. Après avoir effectué le paiement, l’utilisateur sera redirigé vers notre application en fonction du statut de réussite ou d’échec. Nous avons défini ces URL dans le config.phpfichier ci-dessus.

Une fois que l’utilisateur est redirigé vers notre application avec une réponse réussie, nous devons exécuter le paiement dans notre fichier PHP, ce qui est success.phpdans notre cas. Nous stockons également les informations de paiement après l’exécution du paiement à l’aide de l’API REST PayPal. Notre code sera donc le suivant.

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

succès.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';
}

annuler.php

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

Envoyer des informations sur le produit à PayPal

Dans le code ci-dessus, nous envoyons le montant à payer sur PayPal. Vous pouvez également envoyer des informations sur le produit. Vos clients peuvent voir les détails de ces produits sur la page de paiement avant d’effectuer un paiement.

Pour envoyer les informations sur le produit, vous devez transmettre le tableau ‘items’ à la purchase méthode comme suit.

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

Ici, j’ai passé les détails du produit de manière statique. Vous devez le rendre dynamique en fonction de votre produit.

J’espère que vous avez entendu parler de l’intégration de la passerelle de paiement PayPal en PHP. J’aimerais entendre vos pensées ou vos suggestions dans la section des commentaires ci-dessous.

Articles Liés

Source d’enregistrement: artisansweb.net

Ce site utilise des cookies pour améliorer votre expérience. Nous supposerons que cela vous convient, mais vous pouvez vous désinscrire si vous le souhaitez. J'accepte Plus de détails