Hébergement mutualisé
Le système Cyberplus chez OVH
Retour au Paiements sécurisés
Cyberplus est le système de paiement proposé par la banque populaire. Il utilise le système développé par le groupe ATOS.
Comment intégrer le système Cyberplus sur votre site ?
Les scripts du kit de paiement sécurisé qui font l'intermédiaire avec la banque sont installés sur notre serveur dédié aux paiements sécurisés, paisec.ovh.net. Ces scripts sont request.cgi, autoresponse.cgi, et response.cgi.
Pour proposer ce système de paiement par carte bancaire, vous devez simplement ajouter un extrait de code au script de votre site qui présente le montant à payer et les moyens de paiement que vous proposez.
Vous trouverez en bas de cette page des extraits de scripts que vous pourrez insérer dans vos programmes CGI, en PHP ou Perl.
Comment fonctionne le système de paiements Cyberplus ?
L'extrait de programme que vous ajoutez à votre site affiche le code HTML retourné par le programme request.cgi qui renvoie la liste des cartes bancaires proposées par votre site.
Le script request.cgi doit être appelé avec les paramètres de la transaction: le montant de montant de la transaction, la devise à utiliser, un identifiant de transaction, et d'autres variables vous permettant de faire varier le comportement du système de paiement. Reportez vous au bas de cette page pour consulter la liste des paramètres que vous pouvez utiliser.
Le visiteur de votre site qui désire payer par carte bancaire clique sur le logo du type de carte qu'il souhaite utiliser. Il est alors redirigé vers le site de la banque sur lequel il va saisir son code confidentiel, protégé par le cryptage de la connexion SSL.
Les données résultant de la transaction sont ensuite communiquées à un autre script CGI sur notre serveur, qui vous les renvoie pas courrier électronique.
Si le visiteur choisit de retourner sur votre site une fois le paiement effectué, il est renvoyé sur une URL que vous aurez déterminée lors de l'installation du système.
Détail des flux d'information
Le schéma ci-dessous, accompagné du texte explicatif qui suit présente les échanges de données qui ont lieu lors des appels de CGI effectués entre les différents serveurs pendant une opération de paiement sécurisé :

Schéma des appels de CGI lors d'un paiement en ligne
Les appels de CGI se déroulent ainsi:
- (1) Le visiteur termine ses achats, et arrive sur la page de votre site qui lui présente le montant total à régler, et les moyens de paiements proposés. C'est dans cette page que doit être inclus l'extrait de programme qui affiche le résultat de l'appel au script request.cgi, c'est à dire les cartes bancaires acceptées.
- (2) Le visiteur clique sur la carte qu'il veut utiliser pour la transaction. Il est ensuite amené sur le site de la banque où il saisit son numéro de carte bancaire.
- (3) Lorsque le serveur de la banque affiche le résultat de la transaction (transaction réussie, numéro de carte invalide, etc.), il appelle en même temps le CGI autoresponse.cgi.
- (3bis) Le programme autoresponse.cgi envoie un email vers l'adresse que vous aurez précisée lors de l'installation du système, et appelle éventuellement un CGI de votre site avec les paramètres de la transaction communiqués par la banque. Ce CGI, dont l'URL doit également être précisé lors de l'installation, vous permet par exemple de stocker le résultat du paiement dans une base de données, d'écrire le résultat dans un fichier, etc.
- (4) Sur le site de la banque, le visiteur clique sur le bouton "retour au site WEB". Dans ce cas, le résultat du CGI response.cgi situé sur le serveur paisec.ovh.net est affiché dans le navigateur du visiteur. Si le visiteur choisit de ne pas cliquer sur ce bouton, et, par exemple, ferme son navigateur, response.cgi n'est pas appelé. (C'est pourquoi le CGI autoresponse.cgi est appelé auparavant: on est ainsi certains de recevoir le résultat de la transaction).
- (4bis) Le script response.cgi lit les données retournées par la banque et redirige le navigateur du visiteur vers une URL de votre site.
Vous pouvez préciser lors de l'installation du système deux URL différentes qui seront appelées selon le code de retour de la transaction.
Cette URL peut aussi être un CGI, auquel cas il lui est passé en paramètres les données retournées par la banque. Ce CGI ainsi appelé peut alors afficher dans le navigateur du visiteur une page différente selon le résultat de la transaction.
Extraits de script
Les exemples de code suivants peuvent être utilisés pour intégrer votre système de paiement à votre boutique. Vous pouvez simplement les adapter, ou bien vous en inspirer pour modifier vos propres scripts.
Exemple en PHP:
<?
$login="VOTRELOGIN"; // il s'agit de votre login sur notre serveur paisec.ovh.net
//--- url-encodage des paramètres
$amount = urlencode($total);
$orderId = urlencode($numero_commande);
$currencyCode = 978;
$serverUrl="http://paisec.ovh.net";
$cgiPath="/~$login/cyberplus/bin/request.cgi?"; // en phase de test ce serait: $cgiPath="/~$login/cyberplus/bin/test/request.cgi?";
$cgiParams="amount=$amount&order_id=$orderId¤cy_code=$currencyCode";
//--- récupération du formulaire affichant le bouton
$myfile = file("$serverUrl$cgiPath$cgiParams");
//--- affichage de la liste des cartes bancaires
for($index = 0; $index > count($myfile); $index++)
{
print ($myfile[$index]);
}
?>
Exemple en perl:
use LWP::Simple;
use URI::Escape;
#--- récupération du formulaire affichant le bouton
my $login="VOTRELOGIN"; # il s'agit de votre login sur notre serveur paisec.ovh.net
my $serverUrl="http://paisec.ovh.net";
my $cgiUrl="/~$login/cyberplus/bin/request.cgi?"; # en phase de test ce serait: my $cgiUrl="/~$login/cyberplus/bin/test/request.cgi?";
my $amount='amount=' . uri_escape($total);
my $orderId='&order_id=' . uri_escape($numero_commande);
my $currencyCode='¤cy_code=978';
my $cgiParams="$amout$orderId$currencyCode";
#--- appel du CGI:
my $cardsForm = get "$serverUrl$cgiUrl$cgiParams";
#--- affichage des cartes bancaires acceptées:
print $cardsForm;
Paramètres de transaction
Voici les paramètres qui peuvent être précisés lors de l'appel au script request.cgi, déterminant le comportement des transactions :
- amount: (obligatoire)
Le montant de la transaction à réaliser. Il doit être précisé dans la plus petite unité de la devise utilisée (en centimes par exemple si la devise est le franc français). - order_id: (obligatoire)
C'est l'identifiant de la transaction. C'est à vous de choisir sa valeur, sachant qu'il vous permettra d'identifier la transaction lors que vous seront retournés les résultats de transaction. - currency_code: (défaut: déterminé lors de l'installation)
Indique la devise de la facture proposée à l'internaute. (en format ISO-IS 4217)
| 978: Euro | 840: Dollar américain |
| 124: Dollar canadien | 826: Livre Sterling |
| 392: Yen japonais |
- header_flag: (défaut: déterminé lors de l'installation)
Drapeau d'utilisation d'en-têtes dans l'affichage des blocs de paiement. - merchant_country: (défaut: déterminé lors de l'installation)
Contient le code de pays d'origine du commerçant (sur deux caractères, voir ci-dessous.)
| en: english | da: danois |
| fr: français | fi: finnois |
| ge: allemand | sw: suédois |
| it: italien | po: portugais |
| sp: espagnol | no: norvégien |
| du: néerlandais |
- language: (défaut: déterminé lors de l'installation)
Langage utilisé pour les pages textes (sur deux caractères, voir liste ci-dessus.) - merchant_language: (défaut: déterminé lors de l'installation)
Le code de la langue utilisée par le serveur de la banque avec le commerçant (pour les messages d'erreur par exemple. sur deux caractères, voir liste ci-dessus.) - payment_means: (défaut: déterminé lors de l'installation)
Liste des moyens de paiement proposés par la boutique pour cette transaction.
Les blocs de paiements sont: - loc 1: tous les moyens de paiement.
En-tête affiché: Veuillez sélectionner un des moyens de paiement listé ci-dessous : - Bloc 2: paiement par carte sécurisé par SSL.
En-tête affiché: Si vous payez en utilisant le formulaire standard SSL, veuillez sélectionner une carte de ci-dessous : - Bloc 3: paiement par porte-monnaie virtuel.
En-tête affiché: Si vous payez en utilisant le formulaire standard SSL, veuillez sélectionner une carte de ci-dessous : - Bloc 4: autres moyens de paiement.
En-tête affiché: autres moyens de paiement : - Bloc 5: paiement sécurisé par carte SET.
En-tête affiché: Si vous payez en utilisant SET, veuillez cliquer ci-dessous : - Bloc 6: le porte-monnaie électronique.
En-tête affiché: Si vous payez en utilisant un porte-monnaie électronique : - Bloc 7: micro paiement.
En-tête affiché: Si vous possédez un lecteur de carte smartcard, veuillez cliquer ci-dessous : - Bloc 8: paiement sécurisé par carte en utilisant une smart card.
En-tête affiché: Si vous possédez un lecteur de carte smartcard, veuillez cliquer ci-dessous : - Bloc 9: paiement sécurisé par abonnement (subscription) avec SSL.
En-tête affiché: Payez avec votre abonnement.
- block_align: (défaut: déterminé lors de l'installation)
L'alignement voulu pour le type de blocs de paiements. Valeurs possibles : center (centré), right (aligné à droite, left (aligné à gauche). - block_order: (défaut: déterminé lors de l'installation)
Contient les chiffres des blocs de paiement dans l'ordre voulu pour l'affichage, séparés par une virgule. - browser_type: (défaut: aucun)
type de navigateur du visiteur (contenu de la variable HTTP_USER_AGENT.) - normal_return_logo: (défaut: aucun)
Le nom du fichier du logo du bouton en cas de retour normal à la boutique après la transaction. Si le commerçant ne fournit pas le logo de ce champ, il est remplacé par un bouton texte d'étiquette "Retourn à la boutique". - cancel_return_logo: (défaut: aucun)
Le nom du fichier du logo du bouton de retour en cas d'annulation de l'internaute. Si le commerçant ne fournit pas le logo de ce champ, il est remplacé par un bouton texte d'étiquette "Annuler - Retourn à la boutique". - submit_logo: (défaut: aucun)
Le nom du fichier du logo du bouton de soumission du paiement pendant le paiement d'un internaute. Si le commerçant ne fournit pas le logo de ce champ, il est remplacé par un bouton texte d'étiquette "Validez". - bgcolor: (défaut: déterminé lors de l'installation)
Couleur du fond d'écran lors du paiement de l'internaute. - textcolor: (défaut: déterminé lors de l'installation)
> Couleur du texte affiché sur la fenêtre de paiement. - advert: (défaut: déterminé lors de l'installation
Nom du fichier d'une bannière de publicité d'un format défini à afficher en haut au centre de l'écran de paiement. - background_id: (défaut: aucun)
Nom du fichier du fond d'écran de la page à utiliser sur le serveur de la banque. - target: (défaut: déterminé lors de l'installation)
Nom du cadre dans lequel seront affichés les pages de paiement. - receipt_complement: (défaut: aucun)
Code HTML à insérer sur le ticket du client sous la ligne: prix de la transaction. - caddie: (défaut: aucun)
Informations sur le panier de l'internaute. Ce champ est simplement retourné par le serveur de la banque. - customer_email: (défaut: aucun)
Dans le cas où l'internaute a fourni son adresse email au commerçant pour l'envoi supplémentaire d'une facture par le service de la banque. - data: (défaut: aucun)
Contient des informations personnelles sur la transaction qui sont seulement retournées par le serveur de la banque. (peut être parfois utilisé par le serveur de la banque. Se renseigner auprès d'eux.) - return_context: (défaut: aucun)
Contient des informations personnelles sur la transaction qui sont seulement retournées par le serveur de la banque. (non utilisé par le serveur de la banque.) - template_file: (défaut: aucun)
Le nom du fichier template utilisé sur le serveur de la banque. (annule l'utilisation des fichiers images comme advert, background_id, bgcolor, etc.) - order_validity: (défaut: 2 jours)
Nombre de jours pour la validité de la transaction. Celle-ci ne sera pas prise en compte passé ce délai. - order_validity: (défaut: 2 jours)
Nombre de jours pour la validité de la transaction. Celle-ci ne sera pas prise en compte passé ce délai. - capture_day: (défaut: aucune)
Champ permettant de différer les paiements. - capture_mode: (défaut: aucune)
Champ permettant de définir les méthodes d'envoi en banque. - customer_ip_address: (défaut: aucune)
IP de l'internaute. Si elle est renseignée à l'appel de request.cgi, le serveur de la banque va comparer cette adresse avec celle qu'il trouvera lorsqu'il évoquera le paiement. Si elles ne correspondent pas, la requête de paiement sera rejetée avec un code sécurité d'erreur.
Si elle n'est pas précisée à l'appel de request.cgi, le serveur de la banque renseignera le champ dans la réponse.
retour au début de page



