Payer avec un QR Code
Cas d'utilisation
Grâce au Web Service Charge/CreateQRCode, le marchand crée un QR code.
Une fois créé et affiché, l'acheteur scanne le QR Code pour payer.
Mode E-commerce
Requête
Exemple avec les champs obligatoires et recommandés :
Montant : 100,00 EUR;
E-mail de l'acheteur;
Nom du moyen de paiement;
Retrouvez la description et l'intégralité des champs depuis le playground : Charge/CreateQRCode (menu à gauche).
Mode Instore (en magasin)
Le mode Instore
vous permet de proposer un moyen de paiement en affichant un QR Code sur un terminal de paiement.
Requête
Exemple avec les champs obligatoires et recommandés :
Montant : 100,00 EUR ;
E-mail de l'acheteur;
Nom du moyen de paiement;
Numéro de série du terminal;
Origine du paiement :
INSTORE
;
Pour Alma, seuls les paiements en 3 et 4 fois sont disponibles pour le mode `Instore`.
Retrouvez la description et l'intégralité des champs depuis le playground : Charge/CreateQRCode (menu à gauche).
Réponse
Trois types de réponse existent dans le champ qrCode.qrType
:
- URL
- DATA
- IMAGE (encodée en
base64
)
Exemple de réponse
URL
{ "webService": "Charge/CreateQRCode", "version": "V4", "applicationVersion": "6.10.0", "status": "SUCCESS", "answer": { "uuid": "3e14c758e0464a1f85f6de287689306d", "amount": 10000, "currency": "EUR", "orderId": "myOrderId-1234", "qrCode": { "expirationDate": "2024-02-22T09:55:44+00:00", "qrType": "URL", "value": "https://secure.lyra.com/checkout(...)entID=253965149&s=M", "copyPasteValue": null, "_type": "URL" }, "_type": "V4/Charge/CreateQRCodeResponse" }, (...) "_type": "V4/WebService/Response" }
Le champ qrCode.value
contient une URL. L'acheteur clique sur l'URL pour afficher le QR Code.
Le marchand peut aussi créer un QR Code avec l'URL générée. Exemple d'implémentation en PHP :
<?php
include('phpqrcode/qrlib.php'); // Load the PHP QR Code librairy
$url='qrCode.value'; // Retrieve the answer.qrCode.value
QRcode::png($url, 'image-qrcode.png'); // Create the QR Code
?>
DATA
{ "webService": "Charge/CreateQRCode", "version": "V4", "applicationVersion": "6.10.0", "status": "SUCCESS", "answer": { "uuid": "3e14c758e0464a1f85f6de287689306d", "amount": 10000, "currency": "EUR", "orderId": "myOrderId-1234", "qrCode": { "expirationDate": "2024-01-04T09:50:27+00:00", "qrType": "DATA", "value": "00020101021226(...)f3f8-44fa-805d-3552f3ae759c5204000053039865802BR5925LYRA NETWORK TEL M PAGAME6009SAO PAULO62070503***630426BD", "_type": "DATA" }, "_type": "V4/Charge/CreateQRCodeResponse" }, (...) "_type": "V4/WebService/Response" }
Utilisez la valeur du champ qrCode.value
pour créer le QR Code.
Exemple d'implémentation en PHP :
<?php
include('phpqrcode/qrlib.php'); // Load the PHP QR Code librairy
$value='qrCode.value'; // Retrieve the answer.qrCode.value
QRcode::png($value, 'image-qrcode.png'); // Create the QR Code
?>
IMAGE (encodée en base64)
{ "webService": "Charge/CreateQRCode", "version": "V4", "applicationVersion": "6.10.0", "status": "SUCCESS", "answer": { "uuid": "3e14c758e0464a1f85f6de287689306d", "amount": 10000, "currency": "EUR", "orderId": "myOrderId-1234", "qrCode": { "expirationDate": "2024-01-04T09:50:27+00:00", "qrType": "IMAGE", "value": "iVBORw07(...)wewJpltJrLXvdENKGtEvQpazhQYeMy3B4up5XyA64lTSD+Apcr0Opbr760ZEKiSLRj8r/F3AH5oAdICpAVIC5A8gD9G7EWe3QLtLAAAAABJRU5ErkJggg==", "_type": "IMAGE" }, "_type": "V4/Charge/CreateQRCodeResponse" }, (...) "_type": "V4/WebService/Response" }
Récupérez la valeur du champ qrCode.value
encodée en base64
et l'insérez dans une balise img
.
<div> <img src="data:image/png;base64,iVBORw07(...)wewJpltJrLXvdENKGtEvQpazhQYeMy3B4up5XyA64lTSD+Apcr0Opbr760ZEKiSLRj8r/F3AH5oAdICpAVIC5A8gD9G7EWe3QLtLAAAAABJRU5ErkJggg==" alt="QR Code"> </div>
Retrouvez la description et l'intégralité des champs dans notre playground : QRCodeTransaction
Gestion des erreurs
Tableau des erreurs
| Code | Description | | ------------ | ----------------------------------------------------------------------------------------------------------- | | **INT_009** | Le format du champ **amount** est invalide ou le champ n'est pas transmis. | | **INT_010** | Le format du champ **currency** est invalide ou le champ n'est pas transmis. | | **INT_050** | Le paramètre **strongAuthentication** est invalide. | | **INT_815** | Le paramètre **description** est trop long. La longueur maximale est de 65 caractères. | | **INT_856** | Le paramètre **locale** est invalide. | | **INT_858** | Le paramètre **taxRate** est invalide. | | **INT_869** | Le paramètre **taxAmount** est invalide. | | **PSP_519** | Devise inconnue. | | **PSP_606** | Devise non supportée par le contrat. | | **PSP_1091** | La création du QR Code a échoué dans l'application. | | **PSP_1094** | Erreur lors de la création du QR Code. | | **PSP_1095** | Le numéro de série de l'appareil (champ `transactionOptions.paymentMethodOptions.deviceSerialNumber`) est **obligatoire** si le champ `transactionOptions.paymentMethodOptions.paymentSource` a pour valeur 'INSTORE'. |
Analyse du résultat du paiement
Pour connaître le résultat du paiement, implémentez l’URL de notification à la fin du paiement (également appelée IPN). L'utilisation du champ ipnTargetUrl
est déconseillé.