Création et utilisation d'alias (token)
Le paiement en un clic est aussi appelé paiement par alias. 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).
Paiements avec l'alias
Les alias permettent :
- Le paiement en un clic: 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 en zero clic: Ce mode permet de créer une transaction à partir d'un alias sans interaction utilisateur. La création s'effectue lors d'un appel serveur à serveur.
- 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
Le paramètre formAction permet la création d'un alias. Utilisez l'une des deux valeurs suivantes:
formAction | Description |
---|---|
ASK_REGISTER_PAY | Ajoute une case à cocher sur le formulaire de paiement pour enregister la carte |
REGISTER_PAY | L'alias sera crée automatiquement |
L'e-mail est obligatoire pour toute création d'alias.
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 are 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"]; ?>
A la fin du paiement, l'objet PaymentTransaction contiendra l'alias du moyen de paiement 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:
{ "currency": "EUR", "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 are 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'e-mail est obligatoire pour toute création d'alias.
L'appel fonctionne comme Charge/CreatePayment. Une transaction de type VERIFICATION sera créée.
kr-answer contiendra donc un objet de type Payment et l'alias sera retourné dans transactions[0].paymentMethodToken.
Utilisation d'un alias: paiement en un clic avec affichage du formulaire
Si vous avez préalablement enregistré un moyen de paiement (alias de carte), vous pouvez créer un paiement en transmettant l'alias à débiter dans le champ paymentMethodToken lors d'un appel au web service Charge/ CreatePayment. Grâce à cette méthode, l'acheteur n'a pas besoin de saisir à nouveau ses informations de carte. Un formulaire pré-rempli sera présenté à l'acheteur, il n'aura plus qu'à valider.
Si votre boutique est configurée pour demander le CVV, ou une authentification 3D-Secure, lors d'un paiement par alias, le formulaire s'adaptera automatiquement.
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 are 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 un formToken. Vous devez ensuite générer votre formulaire de paiement à l'aide du client JavaScript, de la même façon qu'un paiement simple.
Utilisation d'un alias: paiement zéro click sans affichage de formulaire
Vous pouvez créer une transaction à partir d'un alias sans interaction utilisateur (sans demande du CVV ni authentification 3D Secure). L'appel se fera de serveur à serveur et retournera une transaction (pas de notification à la fin du paiement dans ce cas).
Pour cela, effectuez un appel au web service Charge/CreatePayment en transmettant l'alias et en valorisant formAction à SILENT.
Exemple:
{ "amount": 990, "currency": "EUR", "paymentMethodToken": "b6e51ba31f934ac5b25ccad2a52ccd56", "formAction": "SILENT" }
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" }
Émettre une demande de prélèvement SEPA
Le Web Service Charge/CreatePayment peut être utilisé pour émettre une demande de prélèvement, à condition d'avoir au préalable fait signer un mandat de prélèvement récurrent au débiteur.
Consultez la documentation d'intégration du moyen de paiement SEPA Direct Débit pour plus d'informations sur la signature des mandats et la mise en oeuvre des paiements récurrents SDD.
Pour émettre une demande de prélèvement, vous appellez le Web Service Charge/CreatePayment en mode SILENT, en transmettant la RUM à débiter dans l'attribut paymentMethodToken.
Le mode SILENT s'active en valorisant l'attribut formAction à "SILENT". Toute autre valeur provoquera le rejet de la requête.
En fonction des contraintes liées aux différents délais, le marchand sait déterminer quand émettre une demande de prélèvement. Il maîtrise donc la date du transfert de fond. Le montant des prélèvements peut varier d'une échéance à l'autre.
En cas de succès de l'opération, le Web Service retourne un objet Payment. La date de transfert de fond est retournée dans l'attribut transaction.transactionDetails.cardDetails.expectedCaptureDate.
Exemple de requête :
{ "amount":"3990", "currency":"EUR", "formAction":"SILENT", "paymentMethodToken":"0d75bd5f1fef4e779a4154e65abb39ca", "orderId":"myOrderId-605811", "customer":{ "email":"sample@example.com", "reference":"12345678" } }