Création et utilisation d’alias (token)

Le paiement en un clic est aussi appelé paiement par alias, ou paiement par identifiant. On trouvera aussi le terme token de paiement pour désigner un alias.

Le paiement par alias permet aux sites marchands d’offrir à leur clients la possibilité d’associer un moyen de paiement à un identifiant, dans le but de faciliter les paiements ultérieurs sur le site (plus besoin de ressaisir son numéro de carte bancaire).

Référence client et alias

On distingue 2 types d’identifiant:

  • La référence client (ou Compte client). Elle est générée par le site marchand et désigne la référence identifiant un acheteur. La manière de gérer ces comptes est libre (par exemple il peut s’agir d’une adresse e-mail couplée à un mot de passe, permettant l’identification du client sur le site). Les informations sur le Compte client sont stockées par le site marchand.
  • L’alias (ou Identifiant de moyen de paiement). Il désigne un moyen de paiement (carte bancaire, compte bancaire, etc.) et un ensemble de données relatives à celui-ci et à son titulaire. Il est associé à une référence client (ou Compte client). Les données bancaires sont stockées et sécurisées par la plateforme de paiement qui dispose de l’agrément PCI-DSS nécessaire au stockage des numéros de cartes. Seul l’alias transite lors des échanges.

Remarque : aucune vérification sur l’unicité de la référence (ou Compte client) n’est effectuée par la plateforme de paiement. L’alias, lui est unique et peut être générée soit par le site marchand soit par la plateforme.

Paiements avec l’alias

Les alias permettent :

  • Le paiement en 1 clic, rapide et sécurisé. L’acheteur n’ayant plus à saisir ses données bancaires lors des paiements ultérieurs. Dans ce cas, une simple étape de confirmation est présentée avec un récapitulatif de la transaction. Si le moyen de paiement est une carte bancaire, le cryptogramme visuel peut être requis à cette étape si cette dernière en possède un.
  • Le paiement par abonnement. A chaque compte client est associé une récurrence et un montant, avec une durée limitée ou non dans le temps.

Sous certaines conditions (à voir avec l’interlocuteur de la plateforme de paiement), il est possible de partager des identifiants (alias) entre plusieurs entités juridiques. Les identifiants partagés entre plusieurs entités juridiques doivent être uniques et doivent être impérativement générés par la plateforme de paiement.

Creation d’un alias lors d’un encaissement

Pour créer un Alias, il faut definir le paramètre formAction. Il peut prendre deux paramètres:

formAction Description
ASK_REGISTER_PAY Ajoute une case à cocher sur le formulaire de paiement enregistrer ma carte
REGISTER_PAY Le token sera crée automatiquement

dans l’appel au web service Charge/CreatePayment:

    {
        "amount": 990,
        "currency": "EUR",
        "formAction": "ASK_REGISTER_PAY",
        "orderId": "myOrderId-999999",
        "customer": {
            "email": "sample@example.com"
        }
    }
    /**
 * I initialize the PHP SDK
 */
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/keys.php';
require_once __DIR__ . '/helpers.php';

/** 
 * Initialize the SDK 
 * see keys.php
 */
$client = new Lyra\Client();

/**
 * I create a formToken
 */
$store = array(
  "amount" => 250, 
  "currency" => "EUR", 
  "formAction" => "ASK_REGISTER_PAY",
  "orderId" => uniqid("MyOrderId"),
  "customer" => array(
    "email" => "sample@example.com"
));

$response = $client->post("V4/Charge/CreatePayment", $store);

/* I check if there is some errors */
if ($response['status'] != 'SUCCESS') {
    /* an error occurs, I throw an exception */
    display_error($response);
    $error = $response['answer'];
    throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] );
}

/* everything is fine, I extract the formToken */
$formToken = $response["answer"]["formToken"];

?>

Au la fin du paiement, l’objet PaymentTransaction contiendra l’alias du moyen de payment dans la propriété paymentMethodToken:

{
    "orderCycle": "CLOSED",
    "orderStatus": "PAID",
    serverDate": "2018-10-02T16:38:13+00:00",
    "orderDetails": (...)
    "customer": (...)
    "transactions": [
    {
        "shopId": "69876357",
        "uuid": "7af034f2883240c2876f6c61c7eab8ea",
        "amount": 990,
        "currency": "EUR",
        "paymentMethodType": "CARD",
        "paymentMethodToken": "b6e51ba31f934ac5b25ccad2a52ccd56",
        (...)
        "_type": "V4/PaymentTransaction"
        }
    ],
    "_type": "V4/Payment"
}

Creation d’un alias sans encaisser

Dans certains cas, vous souhaitez uniquement créer un alias sans éffectuer d’encaissement. Pour cela, vous devez utiliser le web service Charge/CreateToken:

{
    "orderId": "myOrderId-999999",
    "customer": {
        "email": "sample@example.com"
    }  
}
    /**
 * I initialize the PHP SDK
 */
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/keys.php';
require_once __DIR__ . '/helpers.php';

/** 
 * Initialize the SDK 
 * see keys.php
 */
$client = new Lyra\Client();

/**
 * I create a formToken
 */
$store = array(
  "orderId" => uniqid("MyOrderId"),
  "customer" => array(
    "email" => "sample@example.com",
));

$response = $client->post("V4/Charge/CreateToken", $store);

/* I check if there is some errors */
if ($response['status'] != 'SUCCESS') {
    /* an error occurs, I throw an exception */
    display_error($response);
    $error = $response['answer'];
    throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] );
}

/* everything is fine, I extract the formToken */
$formToken = $response["answer"]["formToken"];

?>
{
    "orderId": "myOrderId-999999",
    "customer": {
        "email": "sample@example.com"
    }  
}
    /**
 * I initialize the PHP SDK
 */
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/keys.php';
require_once __DIR__ . '/helpers.php';

/** 
 * Initialize the SDK 
 * see keys.php
 */
$client = new Lyra\Client();

/**
 * I create a formToken
 */
$store = array(
  "orderId" => uniqid("MyOrderId"),
  "customer" => array(
    "email" => "sample@example.com",
));

$response = $client->post("V4/Charge/CreateToken", $store);

/* I check if there is some errors */
if ($response['status'] != 'SUCCESS') {
    /* an error occurs, I throw an exception */
    display_error($response);
    $error = $response['answer'];
    throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] );
}

/* everything is fine, I extract the formToken */
$formToken = $response["answer"]["formToken"];

?>

L’appel fonctionne comme Charge/CreatePayment. Une transaction à zero euro sera créé. L’alias sera retourné dans transactions[0].paymentMethodToken.

Utilisation d’un alias dans l’API REST

Si vous avez préalablement enregistré un moyen de paiement (alias de carte), vous pouvez directement enregistrer un paiement en utilisant le paiement par alias. Grâce à cette méthode, l’acheteur n’a pas besoin de saisir à nouveau ses informations de carte.

Pour enregistrer une carte, veuillez consulter la page :

Un alias de carte ressemble à :

Pour l’utiliser, il suffit d’envoyer l’alias préalablement créé en utilisant le Web Service Charge/CreatePayment .

Exemple:

    {
        "amount": 990,
        "currency": "EUR",
        "paymentMethodToken": "b6e51ba31f934ac5b25ccad2a52ccd56"
    }
    /**
 * I initialize the PHP SDK
 */
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/keys.php';
require_once __DIR__ . '/helpers.php';

/** 
 * Initialize the SDK 
 * see keys.php
 */
$client = new Lyra\Client();

/**
 * create a transaction with a payment method token
 */
$store = array(
  "amount" => 250, 
  "currency" => "EUR",
  "paymentMethodToken" => "b6e51ba31f934ac5b25ccad2a52ccd56"
);

/**
 * do the web-service call
 */
$response = $client->post("V4/Charge/CreatePayment", $store);

/* I check if there is some errors */
if ($response['status'] != 'SUCCESS') {
    /* an error occurs, I throw an exception */
    display_error($response);
    $error = $response['answer'];
    throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] );
}

?>

Charge/CreatePayment retourne directement une transaction comme :

{
    "shopId": "69876357",
    "orderCycle": "CLOSED",
    "orderStatus": "PAID",
    "serverDate": "2018-09-27T14:02:17+00:00",
    "orderDetails": (...)
    "customer": (...)
    },
    "transactions": [{
        "shopId": "69876357",
        "uuid": "5b158f084502428499b2d34ad074df05",
        "amount": 990,
        (...)
        "_type": "V4/PaymentTransaction"
    }],
    "_type": "V4/Payment"
}