Vous souhaitez intégrer le paiement pré approuvé PayPal sur votre site web ? Ça tombe bien, dans cet article, nous allons voir ensemble comment faire. Comme vous le savez si vous êtes une entreprise et souhaitez vendre les abonnements sur votre site web, le paiement pré approuvé est l’option qu’il vous faut. En effet, ça vous permet de demande le paiement à vos clients sans être constamment derrière eu pour les réclamations. Dans cet article, nous verrons brièvement ce que c’est le paiement pré approuvé. Ensuite, nous expliquerons comment ça marche. Pour finir, nous allons voir comment vous pouvez l’intégrer sur votre site web. Si vous souhaitez du code prêt à l’usage, vous pouvez cliquer sur ce lien et nous contactez.
C’est un mécanisme utilisé par des plateformes comme PayPal qui permet à un marchand ou à un fournisseur de services de débiter automatiquement le compte d’un client. Vous pouvez le faire sans demander son approbation explicite pour chaque transaction après l’autorisation initiale. Ce type de paiement est couramment utilisé pour les paiements récurrents. Les entreprises l’utilisent pour les abonnements ou pour des achats multiples où l’utilisateur a donné une autorisation unique pour des transactions futures.
Le mode de fonctionnement des paiements pré-approuvé est le suivant:
Le client donne son consentement pour que son compte PayPal soit débité automatiquement à l’avenir. Cela se fait généralement en acceptant un accord de facturation (Billing Agreement) avec le marchand. Lors de cette étape, PayPal demande au client de confirmer qu’il autorise des paiements futurs.
Après cette autorisation initiale, le marchand peut déclencher des paiements automatiques sans que le client ait besoin d’approuver à chaque fois. Cela est utile pour des services comme
Le client conserve le contrôle sur ces paiements en pouvant annuler l’accord de facturation à tout moment via son compte PayPal.
Si vous consommez des services en ligne, vous avez certainement eu l’occasion de faire recours à des paiements récurrents.
Pour des services qui nécessitent des paiements mensuels, hebdomadaires ou annuels (comme Netflix, Spotify).
Pour des services publics ou d’autres factures régulières où le montant peut varier (téléphone, électricité).
Pour les services qui permettent au client de faire des achats multiples sans avoir à approuver chaque paiement (par exemple, les plateformes de covoiturage ou de location de logements).
En résumé, un paiement pré-approuvé permet à un client de donner son consentement une seule fois pour une série de transactions futures, facilitant ainsi les paiements automatisés sans nécessiter une intervention manuelle à chaque fois.
Pour intégrer un paiement pré-approuvé PayPal sur votre site web, vous devez suivre les étapes ci-dessous :
Vous pouvez utiliser les composantes php.
Noter que cette approche n’est plus maintenue par PayPal. Pour une option plus sécurisée, veuillez-vous référer à l’approche de l’option 2.
Pour PHP, vous pouvez utiliser Composer pour installer le SDK PayPal :
composer require paypal/rest-api-sdk-php
Pour JavaScript, incluez simplement le script PayPal sur votre page :
<script src="https://www.paypal.com/sdk/js?client-id=YOUR_CLIENT_ID"><script>
Utilisez l’API PayPal pour créer un paiement pré-approuvé. Voici les étapes principales à suivre :
Exemple d’appel API pour créer une Billing Agreement :
$agreement = new Agreement();
$agreement->setName('Payment Agreement')
->setDescription('Agreement for future payments')
->setStartDate('2023-12-20T10:00:00Z');
$plan = new Plan();
$plan->setId('P-xxxxxxxxxxxx');
$agreement->setPlan($plan);
$payer = new Payer();
$payer->setPaymentMethod('paypal');
$agreement->setPayer($payer);
try {
$agreement->create($apiContext);
$approvalUrl = $agreement->getApprovalLink();
echo "Redirect user to: " . $approvalUrl;
} catch (Exception $ex) {
// Handle exception
}
Une fois le client redirigé vers l’URL de confirmation PayPal, vous pouvez utiliser le jeton retourné pour capturer les paiements à l’avenir.
Exemple pour capturer un paiement pré-approuvé :
$agreement = new Agreement();
$agreement->execute($token, $apiContext);
Avant de passer en production, utilisez l’environnement Sandbox pour tester toutes les transactions. Assurez-vous que les paiements sont correctement capturés et que vous pouvez exécuter des transactions récurrentes ou pré-approuvées.
Une fois les tests terminés, remplacez les informations d’identification Sandbox par celles de l’environnement Live dans votre code.
Cette intégration vous permet de débiter le compte PayPal du client de manière automatique sans demander de nouvelles autorisations après l’approbation initiale.
Le PayPal Checkout SDK en PHP a également été abandonné. Cependant, vous pouvez toujours intégrer PayPal en utilisant l’API REST de PayPal directement sans SDK. Vous utiliserez des requêtes HTTP standard en PHP (via cURL
ou des bibliothèques comme Guzzle) pour interagir avec l’API PayPal.
Voici un exemple de code en PHP pour obtenir un jeton d’accès :
$clientId = 'YOUR_CLIENT_ID';
$clientSecret = 'YOUR_CLIENT_SECRET';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api-m.sandbox.paypal.com/v1/oauth2/token");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "$clientId:$clientSecret");
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
$headers = [];
$headers[] = "Accept: application/json";
$headers[] = "Accept-Language: en_US";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
$json = json_decode($response);
$accessToken = $json->access_token;
Exemple de création d’une commande de paiement avec cURL en PHP :
$accessToken = 'YOUR_ACCESS_TOKEN';
$orderData = [
"intent" => "CAPTURE",
"purchase_units" => [[
"amount" => [
"currency_code" => "USD",
"value" => "100.00"
]
]],
"application_context" => [
"cancel_url" => "https://example.com/cancel",
"return_url" => "https://example.com/return"
]
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api-m.sandbox.paypal.com/v2/checkout/orders");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($orderData));
$headers = [];
$headers[] = "Content-Type: application/json";
$headers[] = "Authorization: Bearer $accessToken";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
$order = json_decode($response);
echo "Approve the payment at: " . $order->links[1]->href;
Exemple pour capturer un paiement :
$orderId = 'ORDER_ID';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api-m.sandbox.paypal.com/v2/checkout/orders/$orderId/capture");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$headers = [];
$headers[] = "Content-Type: application/json";
$headers[] = "Authorization: Bearer $accessToken";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
$capture = json_decode($response);
print_r($capture);
https://api-m.sandbox.paypal.com/
https://api-m.paypal.com/
Vous pouvez consulter la documentation de l’API PayPal pour plus de détails sur les autres fonctionnalités disponibles.
En utilisant directement les appels d’API, vous évitez de dépendre d’un SDK obsolète et avez plus de contrôle sur l’intégration des paiements dans votre site.