Informations techniques générales sur le paiement carte bancaire


A - Le bouton d'achat d'abonnement

Le script qui vous est fourni contient :
  • Un formulaire HTML contenant différents champs cachés.
  • Une image dont la source est sur notre serveur et incitant l'internaute à cliquer dessus pour souscrire un abonnement. Cette image est le bouton de validation du formulaire.

Ce formulaire HTML doit contenir au moins 3 champs :
  • Le champ lang dont la valeur peut être "L_FR" (français) ou "L_UK" (anglais).
  • Le champ ids contenant l'identifiant Allopass de votre site.
  • Le champ idd contenant l'identifiant Allopass du document protégé.

Lors de la soumission de ce formulaire, toutes ces données sont envoyées à l'interface de prise d'abonnement.
Lorsque l'internaute achète son pass abonné, alors celui-ci est lié avec les identifiants du site et du document.



B - Le formulaire de saisie du pass abonné

Le script qui vous est fourni contient :
  • Une image PNG dont la source est sur notre serveur et donnant quelques explications à l'internaute.
  • Un formulaire HTML contenant différents champs.

Ce formulaire HTML doit contenir au moins 3 champs :
  • Le champ code (de type TEXT dans le script) dans lequel l'internaute saisit son pass abonné.
  • Le champ ids contenant l'identifiant Allopass de votre site.
  • Le champ idd contenant l'identifiant Allopass du document protégé.

Lors de la soumission de ce formulaire, toutes ces données sont envoyées à l'URL http://payment.allopass.com/subscription/access.apu
Le système Allopass vérifie alors la validité du pass abonné. Si celui-ci est valide, il y a redirection immédiate vers votre URL de retour.



C - Champs optionnels du formulaire d'achat d'abonnement

Vous pouvez ajouter différents champs qui sont optionnels à ce formulaire et qui n'apparaissent pas dans le script fourni par défaut :

a - 1 champ pour reccueillir des informations
  • 1 - Le champ data :
    Ce champ caché (donc de type HIDDEN) peut contenir n'importe quelle valeur de votre choix.
    Si un tel champ est présent et que vous avez configuré une "URL d'acquittement" pour votre document "Carte bancaire", alors cette URL sera appelée avec un paramètre DATAS supplémentaire contenant la valeur de ce champ.



b - 3 champs pour l'affiliation :
  • 1 - Le champ ap_ca :
    Ce champ caché, s'il est présent, doit contenir un "code partenaire", que vous pouvez générer dans la rubrique "Liens partenaires".
    Si un tel champ est présent dans votre formulaire, alors, quel que soit votre visiteur, le pourcentage que vous avez défini en créant ce code partenaire sera crédité au compte de votre partenaire.
    Ce montant est déduit de votre reversement.
    Ce champ peut être utile par exemple si vous vendez un contenu en partenariat avec une autre personne.
    Cette autre personne recevra un pourcentage des gains générés et pourra, comme vous, faire ses demandes de chèques sur Allopass.

  • 2 - Le champ ap_ca_idc[n] (n allant de 0 à 4) :
    Ce champ contient l'identifiant d'un partenaire auquel vous désirez reverser un pourcentage de votre gain sans avoir créé auparavant un lien partenaire.
    Votre partenaire trouvera son identifiant dans la rubrique "Infos personnelles" de l'Espace Webmaster.

  • 3 - Le champ ap_ca_mnt[n] (n allant de 0 à 4) :
    Il s'agit du montant (en pourcentage) à reverser au partenaire que vous avez défini grâce au paramètre ap_ca_idc.
    Cette valeur doit être comprise entre 0 et 100.

    Grâce à ces deux champs ap_ca_idc[n] et ap_ca_mnt[n], vous pouvez redistribuer une partie de votre gain avec un maximum de 5 partenaires différents !
    Bien sûr, la somme de tous les ap_ca_mnt[n] ne doit pas dépasser 100.

    Enfin, en cas de réabonnement de l'internaute, les informations concernant l'affiliation sont maintenues (votre ou vos partenaires recevront donc le même pourcentage qu'au moment de la prise initale de l'abonnement).

  • 4 - ap_ca_map[n] (n allant de 0 à 4)
    Ce champ doit contenir l'identifiant d'un "Programme de reversement pour affiliation".
    Un "Programme de reversement pour affiliation" défini, pour chaque abonnement, le montant fixe (ce n'est donc pas ici un pourcentage) que vous allez reverser à votre partenaire.

    Attention ! Vous ne pouvez pas utiliser conjointement dans un même script d'accès des champs ap_ca_mnt[n] et ap_ca_map[n] !

    De plus, l'utilisation des "Programme de reversement pour affiliation" est incompatible avec les liens partenaires : si votre internaute a cliqué sur l'une de vos bannière d'affiliation, cette affiliation n'est pas prise en compte si un champ ap_ca_map[n] est présent dans votre script d'accès.

    Créez votre propre "Programme de reversement pour affiliation" !



D - Champs optionnels du formulaire de saisie du pass abonné

Vous pouvez ajouter différents champs qui sont optionnels à ce formulaire et qui n'apparaissent pas dans le script fourni par défaut.
  • Le champ data : ce champ caché (donc de type HIDDEN) peut contenir n'importe quelle valeur de votre choix.
    Lors du renvoi de votre client vers votre site en cas de pass abonné valide, votre URL de retour sera appelée avec en plus un paramètre appelé DATAS contenant ce que vous y aviez mis dans le formulaire.

  • Le champ recall : ce champ caché, si présent dans le formulaire et de valeur "1", vous permettra de connaitre le pass abonné qu'a tapé l'internaute en cas de pass valide.
    Un paramètre appelé RECALL vous sera retourné dans l'URL de retour contenant le pass abonné.




E - Vérification de validité d'un pass abonné

Vos scripts en PHP, ASP ou autres peuvent interroger la plateforme Allopass sur la validité d'un pass abonné qui vous est retourné grâce au paramètre recall du formulaire de saisi du pass.

L'idée est que votre script va effectuer une requête HTTP vers notre serveur contenant en paramètre le pass abonné que vous souhaitez vérifier et l'identifiant de votre document privé.

Notre serveur vous répond alors si ce ou ces codes sont valides ou pas pour l'accès à ce document.

Mise en oeuvre :

- Vous devez tout d'abord relever l'identifiant du document protégé. Cet identifiant se trouve dans la liste de vos documents dans la colonne "Identifiant".
Cet identifiant est du type "54/75/4567".

- Ensuite, votre page de retour doit envoyer une requête à notre serveur avec un paramètre appelé CODE contenant le code à vérifier et un paramètre appelé AUTH contenant l'identifiant du document.

- Notre serveur peut vous répondre :
  • OK : ce pass est valide pour l'accès à ce document.
  • NOK : ce pass n'est pas valide.
  • ERR : La requête n'a pas été comprise (peut-être une erreur sur l'identifiant du document).
Vous pouvez, par exemple, si le pass est valide, envoyer un cookie à votre internaute indiquant que celui-ci a bien payé sa consultation.
Sur les autres pages de votre partie privée vous n'aurez plus alors qu'à tester ce cookie. Si celui-ci n'est pas présent, vous redirigez alors l'internaute vers une page d'erreur.

Voici un exemple concret (en PHP, PERL : voir en bas de page):

Votre formulaire HTML de saisie de code se présente ainsi :

<form action ="http://payment.allopass.com/subscription/access.apu" method="POST">

 <input type="hidden" name="ids" value="99">

 <input type="hidden" name="idd" value="74">
 <input type="hidden" name="recall" value="1">
 <input type="text" name="code" size="8">
 <input type="submit" value=" Entrer " >
</form>



Bien sûr, les valeurs des paramètres ids et idd doivent correspondre à ceux fournis dans le script d'origine.

Si votre page de retour est un script appelé retour.php4, alors à la saisie d'un pass valide, ce script sera appelé.
Vous y trouverez la variable $RECALL contenant le pass saisi.

Vous interrogez alors la plateforme Allopass. Voici l'exemple en PHP :

<?php
 $RECALL=$_GET["RECALL"];
 if (trim($RECALL)=="") 
 {
  // La variable RECALL est vide, renvoi de l'internaute
  //vers une page d'erreur
  Header("Location: erreur.html");
  exit;
 }

 // $RECALL contient le code d'accès
 $RECALL = urlencode($RECALL); 

 // $AUTH doit contenir l'identifiant de VOTRE document

 $AUTH = urlencode("54/75/456");

 // envoi de la requête vers le serveur Allopass
 // dans la variable $r[0] on aura la réponse du serveur
 // dans la variable $r[1] on aura "ABOCB"

 $r=@file("http://payment.allopass.com/api/checkcode.apu?code=$RECALL&auth=$AUTH");

 // on teste la réponse du serveur
 if (ereg("ERR",$r[0]) || ereg("NOK",$r[0])) 
 {
  // Le serveur a répondu ERR ou NOK : l'accès est donc refusé
  header("Location: erreur.html");
  exit;
 }

 // Le pass est valide !
 // on place un cookie appelé CODE_OK et qui vaut la valeur 1
 // Ce cookie est valide jusqu'à ce que l'internaute ferme son navigateur
 // Dans les pages suivantes, il n'y aura plus qu'à tester l'existence du cookie
 // S'il existe, c'est que l'internaute est autorisé,
 // sinon on le renverra sur une page d'erreur

 setCookie("CODE_OK","1",0,"/",".mondomaine.com",false);

 //Remplacez dans la ligne ci-dessus ".mondomaine.com" par le nom de domaine
 //de votre site!
 //Par exemple, si votre site est accessible à l'adresse :
 //  http://perso.herbergeur.com/mapage
 //alors il faudra que vous mettiez ".herbergeur.com"
 //(n'oubliez pas le "." devant le nom de domaine !!)

         
?>


Dans les pages suivantes de la zone payante de votre site, vous pouvez alors vérifier l'existence de ce cookie comme suit :

<?php
 if ($_COOKIE['CODE_OK']!='1') 
 {  
  Header("Location: erreur.html");
  exit;
 }
?>

Cela dit, la sécurité maximum sera obtenu en enregistrant dans un système de session le fait que votre visiteur a bien utilisé Allopass pour consulter votre site.



F - Compatibilité avec les documents payants "A l'acte"

Si, lors de la configuration de votre document payant par Carte Bancaire vous avez choisi que le pass abonné soit compatible avec un ou plusieurs de vos accès "A l'acte" existant, l'internaute pourra alors y accèder en saisissant son pass abonné dans la case de saisie du code d'accès.

Dans le cas d'un accès multicode, l'internaute n'a qu'à saisir son pass abonné dans la première case.

Concernant la protection de vos pages :
  • Si vous utilisez la protection en Javascript : vous n'avez rien à modifier
    Si vous utilisez une protection par PHP (avec interrogation de notre plateforme via requête http), il faudra alors que vous testiez la seconde ligne de la réponse de notre serveur qui, dans le cas d'un pass abonné, renvoi la valeur "ABOCB".


G - URL d'acquittement

Si, lors de la configuration de votre document payant par Carte Bancaire vous avez indiqué une "URL d'acquittement" pointant vers l'un de vos scripts, alors ce script sera appelé lorsque l'achat du pass abonné est accepté (ou lors des renouvellements acceptés).

Différents paramètres sont joints à cette URL :
  • AUTH : identifiant du document
  • DAYS : durée de l'abonnement
  • EXPIRE : date de fin d'abonnement (forme : JJ/MM/AAAA_HH:MM:SS)
  • CODE : code abonnement délivré à l'internaute
  • TRANS : numéro de la transaction
  • AMOUNT : montant payé par l'internaute
  • RENEW : à la valeur "1" s'il s'agit d'un renouvellement
  • COUNTRY : code du pays de l'internaute
  • DATAS : données "DATAS" si présentes dans le script d'achat de pass abonné.

De plus, vous pouvez ultérieurement retrouver toutes les URL d'acquittement appelées sur les dernières 48 heures.

Pour cela, il faut appeler l'url :
http://www.allopass.com/webm_get_abocb_ack_xml.php4?IDC=XXX&PWD=YYY

Avec :
  • XXX : le numero de votre compte allopass
  • YYY : son mot de passe

Vous pouvez également appeler cette url en SSL via :

https://secure.allopass.com/webm_get_abocb_ack_xml.php4?IDC=XXX&PWD=YYY

En cas de succès, ce qui est retourné est de la forme suivante :

<?xml version="1.0"?>
<ack>
 <Etat>OK</Etat>
 <Calls>

  <Call>

   <URL>url_appelée</URL>
   <Dinsert>1102354370</Dinsert> (date d'insertion)
   <Dcall>1102354371</Dcall> (date d'appel de l url)
   <DinsertTXT>06/12/2004 18:32:50</DinsertTXT> (idem, en clair)
   <DcallTXT>06/12/2004 18:32:51</DcallTXT> (idem, en clair)
  </Call>

  ....

 </Calls>
</ack>


En cas d'erreur :

<?xml version="1.0"?>

<ack>
 <Etat>NOK</Etat>
 <ErreurDescription>explications</ErreurDescription>
</ack>