Tutoriel php simple pour la solution de paiement Stancer de chez Free

Cet article a pour but de me motiver à tester et valider la solution de paiement en ligne Free, Stancer. Elle a beaucoup d’avantage par rapport à Paypal ou Stripe avec notamment une commission par vente vraiment avantageuse.

L’API de Stancer est bien documentée, mais il manque un bon gros tutoriel de mise en place comme chez Stripe. Cet article tente d’y remedier avec un exemple très simple en PHP. On est loin du tutoriel. Je suis ouvert aux commentaires.

J’espère améliorer cette page en proposant une saisie de carte bleue et un traitement plus abouti du paiement validé ou non. Pour la petite histoire, j’ai demandé à l’équipe de Stancer s’ils pensaient mettre en ligne un tutoriel à la manière de Stripe, ils m’ont répondu que ce n’était pas d’actualité…

Comparatif des commissions des solutions de paiement en ligne : PayPal, Stripe et Stancer

Lorsque vous créez un site e-commerce, vous devez choisir une solution de paiement en ligne pour permettre à vos clients de payer vos produits ou services. Il existe de nombreuses solutions de paiement disponibles, chacune avec ses propres avantages et inconvénients.

Dans cet article, nous allons comparer les commissions de trois solutions de paiement populaires : PayPal, Stripe et Stancer. Nous verrons également comment mettre en place Stancer, la solution de paiement de Free. Enfin, nous vous fournirons un script PHP commenté pour tester un paiement par carte bleue avec Stancer.

Solution de paiementCommission par transactionExemple de commission pour un article de 20€
PayPal2,9 % + 0,35 €0,93 €
Stripe1,5 % + 0,25 €0,55 €
Stancer0,7 % + 0,15 €0,29 €

Exemple de commission prise par Paypal, Stripe et Stancer pour un paiement par cartes émises dans un pays de l’EEE (Europe et en devise Euro).

Voici les frais Stancer, pour les cartes bancaires hors zone Euro : 2,5% + 0,25 €.

Mise en place de Stancer

Pour mettre en place Stancer, vous devez d’abord créer un compte sur le site internet de Stancer. Une fois que vous avez créé votre compte, vous devez générer deux clés API, une clé publique et une clé privée.

Pour générer les clés API, rendez-vous dans la section développeur de votre compte Stancer. Cliquez sur le lien « Générer une clé API ».

Vos clés API seront affichées à l’écran. Copiez-les et conservez-les dans un endroit sûr.

Importer la librairie de Stancer

Pour utiliser Stancer, dans votre application ou site Web, vous devez importer la librairie Stancer. Vous pouvez le faire en utilisant la commande suivante, dans un dossier de votre hébergeur, avec Composer (un tuto pour installer Composer si vous ne connaissez pas, (ou ce tuto pour votre hébergeur avec putty) dans la console (cmd sous WIndows), sinon, vous installez les sources directement sur votre hébergement :

composer require stancer/api

OU

composer require stancer/stancer

Il vous faudra aussi importer la librairie Guzzle :

composer require guzzlehttp/guzzle

Une fois que l’API Stancer a été installée, vous pouvez commencer à créer des transactions de tests.

Utilisation de Putty sur un hébergeur de type OVH

Montre les versions des packages installés :

php composer.phar show

Mettre à jour la version de Stancer :

 php composer.phar update stancer/stancer

Script simple de paiement par carte bleue via l’interface Stancer

Voici un script au plus simple, en PHP, commenté pour tester un paiement par carte bleue avec Stancer.

  1. On crée un objet paiement Stancer
  2. On génère l’url de paiement chez Stancer où le client va pouvoir effectuer son paiement
  3. Une fois le paiement effectuait, le client sera redirigé vers l’url de retour.

L’avantage de cette méthode est la simplicité. Stancer gère toute la saisie de la carte bleue du client, l’interface et le contrôle du paiement, la gestion des erreurs, etc…

<?php
// Charger l'autoloader de Stancer, qui est nécessaire pour charger les classes Stancer.
require 'vendor/autoload.php';

// Récupérer les clés API de Stancer TEST ou LIVE
$api_key = 'ptest_Mu****************jDh';
$api_secret = 'stest_nk****************ofK';

// Configurer la connexion à Stancer en mode test
$config = Stancer\Config::init([$api_key, $api_secret]);
$config->setHttpClient($guzzle);
$config->setMode(Stancer\Config::TEST_MODE); //ici en mode TEST

// Paramètres de la commande et du client
$numCart = "98565"; // Numéro de panier
$orderId = "20020202"; // ID de la commande
$telephone = "+330660454007"; // Numéro de téléphone du client
$email = "email@emailhu.fr"; // Adresse email du client
$name = "Bebert Bidlon"; // Nom du client
$total = 2000; // Montant total (20 euros)

// Créer un objet client Stancer
$customer = new Stancer\Customer();
$customer->setEmail($email);
$customer->setMobile($telephone);
$customer->setName($name);

// Créer un objet paiement Stancer
$payment = new Stancer\Payment();
$payment->setCustomer($customer); //On ajoute le client à ce paiement
$payment->setAmount($total); // Montant du paiement
$payment->setOrder_id($orderId); // ID de la commande
$payment->setCurrency('EUR'); // Devise (EUR)
$payment->setAuth(true);// valide le paiement 3D-Secure

// Générer un identifiant unique pour le paiement
$now = new DateTime();
$now->setTimezone(new DateTimeZone('UTC'));
$uniqueId = uniqid($now->format('U'));
$payment->setUniqueId($uniqueId);

// Définir une description optionnelle de la commande
//$payment->setDescription("MyFirstPayment");

// Définir l'URL de redirection après le paiement
$payment->setReturn_url('https://www.votreSiteInternet.com/stancer/commande.php?orderid=' . $orderId . '&total=' . $total . '&uniqueId=' . $uniqueId);

// Lancer le paiement et récupérer l'ID de la transaction
$IdObjectPaiement = $payment->send();

// Afficher l'ID de la transaction en mode test hein ;)
echo "paiement retour : " . $IdObjectPaiement . "<br/>";
$IdObjectPaiement = str_replace('"', '', $IdObjectPaiement);

// Générer l'URL de redirection vers Stancer pour que le client puisse payer
echo "url de paiement : " . '<a href="https://payment.stancer.com/' . $api_key . '/' . $IdObjectPaiement . '?lang=' . $lang . '">https://payment.stancer.com/' . $api_key . '/' . $IdObjectPaiement . '?lang=' . $lang . '</a>';

?>

 

Script de test de paiement par carte bleue écrit en php

Voici un script PHP commenté pour tester un paiement par carte bleue avec Stancer :

<?php
// Charger l'autoloader de Stancer, qui est nécessaire pour charger les classes Stancer.
require 'vendor/autoload.php';

// Définir les clés API de test pour Stancer. Vous pouvez obtenir ces clés API sur le site Web de Stancer.
$api_key = 'ptest_Mu********************jDh';
$api_secret = 'stest_******************9ofK';

// Créer une nouvelle instance de la classe Stancer\Config. La configuration est utilisée pour spécifier les détails de connexion à l'API Stancer
$config = Stancer\Config::init([$api_key, $api_secret]);

// Définir le client HTTP à utiliser pour communiquer avec Stancer. Le client HTTP par défaut est Guzzle, mais vous pouvez également utiliser un autre client si vous le souhaitez.
$config->setHttpClient($guzzle);

// Définir le mode d'exécution de la transaction en mode test. Cela signifie que la transaction ne sera pas réellement effectuée, mais plutôt simulée. Sinon, LIVE_MODE en production
$config->setMode(Stancer\Config::TEST_MODE);


// Création d'un nouvel objet Stancer\Customer. Cet objet représente le client qui passe la commande.
$customer = new Stancer\Customer();
$customer->setEmail('david@example.net');
$customer->setMobile('33639980102');
$customer->setName('David Coaster');

// Création d'un nouvel objet Stancer\Card. Cet objet représente la carte bancaire utilisée pour effectuer le paiement.
$card = new Stancer\Card();
$card->setNumber('4111111111111111');
$card->setExpMonth(12);
$card->setExpYear(2024);
$card->setCvc('999');
$card->setName('David Coaster');

// création d'un nouvel objet Stancer\Payment. Cet objet représente le paiement en cours. Il contient des informations sur la carte bancaire, le client, le montant, le numéro de commande, la devise, la description et l'URL de retour.
$payment = new Stancer\Payment();
$payment->setCard($card);
$payment->setCustomer($customer);	
$payment->setAmount(500); 
$payment->setOrder_id('545450');
$payment->setCurrency('EUR');
$payment->setDescription('MyFirstPayment');
$payment->return_url('https://www.exemple.com/merci_commande.php');

// Envoie de la transaction à Stancer.
$ret=$payment->send();


// Cette condition vérifie si la transaction a réussi. Si elle a réussi, un message informatif est affiché.
if( $payment->isSuccess() )
{
    echo "paiement réussi !";
    
}
?>

Vous pouvez voir sur votre compte Stancer les transactions et les statistiques de ces paiements test en appuyant sur le bourton Mode Test en bas à gauche du sommaire.

Remarques sur la solution de paiement Stancer

  • Les commissions de PayPal, Stripe et Stancer peuvent varier en fonction de votre pays et de votre secteur d’activité.
  • Stancer propose également des commissions par abonnement, qui peuvent être plus avantageuses pour les entreprises qui effectuent un grand nombre de transactions.
  • Cet article n’est qu’un exemple. Il n’a pas valeur de document officiel.
  • La documentation officielle de Stancer
  • La librairie PHP de Stancer
  • Le module Stancer gratuit pour Prestashop
  • Un article qui résume bien l’offre Stancer ( TPE, SEPA, paiement en ligne)

A propos Norbert

Auteur du site https://sostracteur.fr

2 Commentaires

  1. Merci Norbert, parfait cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *