• France
état des services
démonstrations
assistance
FAQContacter le support
Tutoriels vidéo
Rechercher
Catégories
Tags
docs.
France
Espagne
Europe (Anglais)
Inde
Accueil
Cas d'usage
Créer un paiement
Créer un paiement en plusieurs fois
Proposer un paiement complémentaire
Créer un paiement par alias (token)
Créer un lien de paiement
Créer un abonnement
Gérer vos abonnements
Gérer vos transactions (rembourser,...)
Analyser vos journaux
Docs API
Formulaire embarqué
API REST
Formulaire en redirection
SDK Mobile
Échange de fichiers
Mandats SEPA par API REST
Exemples de code
Moyens de paiement
Modules de paiement
Marketplace
Guides
Back Office Marchand
Back Office Expert
Guides fonctionnels

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.

2 modes existent :

  • Mode E-commerce
  • Mode Instore (en magasin)

Mode E-commerce

Pour le mode E-commerce, vous devez disposer d'un contrat de paiement e-commerce (VADS).

Requête

Exemple avec les champs obligatoires et recommandés :

  • Montant : 100,00 EUR;

  • E-mail de l'acheteur;

  • Nom du moyen de paiement;

/fr-FR/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreateQRCode
{
"amount": 10000,
"currency": "EUR",
"customer": {
    "email": "sample@example.com"
  },
  "paymentMethodType": "PAYCONIQ"
}
/fr-FR/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreateQRCode
{
  "amount": 10000,
  "currency": "EUR",
  "customer": {
      "email": "sample@example.com"
    },
    "paymentMethodType": "UPI"
  }

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.

Pour le mode Instore, vous devez disposer d'un contrat de paiement de proximité (VAD).

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.

/fr-FR/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreateQRCode
{
"amount": 10000,
"currency": "EUR",
"customer": {
  "email": "sample@example.com"
},
"paymentMethodType": "PAYCONIQ",
"transactionOptions": {
    "paymentMethodOptions": {
      "paymentSource": "INSTORE",
      "deviceSerialNumber": "123456"
     }
   }
}
/fr-FR/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreateQRCode
{
  "amount": 10000,
  "currency": "EUR",
  "customer": {
    "email": "sample@example.com"
  },
    "paymentMethodType": "UPI",
    "transactionOptions": {
      "paymentMethodOptions": {
        "paymentSource": "INSTORE",
        "deviceSerialNumber": "123456"
       }
     }
  }
/fr-FR/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreateQRCode
 // Choose Alma en 3 times   
{
"amount": 10000,
"currency": "EUR",
"paymentMethodType": "ALMA_3X",
"customer": {
  "email": "sample@example.com"
},
"transactionOptions": {
  "paymentMethodOptions": {
    "paymentSource": "INSTORE",
    "deviceSerialNumber": "123456"
   }
 }
}
/fr-FR/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreateQRCode
 // Choose Alma en 4 times   
{
"amount": 10000,
"currency": "EUR",
"customer": {
  "email": "sample@example.com"
},
"paymentMethodType": "ALMA_4X",
"transactionOptions": {
  "paymentMethodOptions": {
    "paymentSource": "INSTORE",
    "deviceSerialNumber": "123456"
   }
 }
}
/fr-FR/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreateQRCode
{
"amount": 10000,
"currency": "EUR",
"customer": {
  "email": "sample@example.com"
},
"paymentMethodType": "ALIPAY_PLUS",
"transactionOptions": {
  "paymentMethodOptions": {
    "paymentSource": "INSTORE",
    "deviceSerialNumber": "123456"
   }
 }
}
/fr-FR/rest/V4.0/api/kb/authentication.html
https://api.lyra.com/api-payment/V4/Charge/CreateQRCode
{
"amount": 10000,
"currency": "EUR",
"customer": {
  "email": "sample@example.com"
},
"paymentMethodType": "WECHAT",
"transactionOptions": {
  "paymentMethodOptions": {
    "paymentSource": "INSTORE",
    "deviceSerialNumber": "123456"
   }
 }
}

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" 
}

Intégrez le code "data:image/png;base64," puis la valeur du champ qrCode.value 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. | {: .lita-excluded-col1}

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ée.

  1. Renseignez uniquement l'URL de notification dans la section API REST (TEST ou PRODUCTION) : Procédure.
  2. Analysez l'IPN : Procédure.
Nous recrutons
Mentions légales
Charte de Protection des Données Personnelles
25.22-1.11