• France
état des services
démonstrations
assistance
FAQContacter le support
Video tutorials
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

Créer un ordre de paiement par URL

Cas d'utilisation

Le marchand crée un ordre de paiement par URL. L'envoi de l'URL de paiement est réalisé par le marchand.

Tester

Testez le web service Charge/CreatePaymentOrder depuis notre playground.

Requête

Paiement comptant

Exemple de requête
Champs obligatoires :
  • Montant : 100,00 €.

Champs recommandés :

  • Référence de la commande : "myOrderId-1234".
  • Canal de diffusion : URL.
/fr-FR/rest/V4.0/api/kb/authentication.html
https://github.com/lyra/rest-php-examples/blob/master/www/minimalEmbeddedForm.php#L9-L44
https://api.lyra.com/api-payment/V4/Charge/CreatePaymentOrder
{
    "amount": 10000,
    "currency": "EUR",
    "orderId": "myOrderId-1234",
    "channelOptions": {
      "channelType": "URL"      
    }
}
{
    "amount": 200050,
    "currency": "PEN",
    "orderId": "myOrderId-999999",    
    "channelOptions": {
      "channelType": "URL"      
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "es_PE",
    "dataCollectionForm": "false"
}
{
    "amount": 200050,
    "currency": "ARS",
    "orderId": "myOrderId-999999",    
    "channelOptions": {
      "channelType": "URL"      
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "es_AR",
    "dataCollectionForm": "false"
}
{
    "amount": 200050,
    "currency": "COP",
    "orderId": "myOrderId-999999",   
    "channelOptions": {
      "channelType": "URL"      
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "es_CO",
    "dataCollectionForm": "false"
}
/**
 * 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", 
"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"];

?>
/**
 * 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", 
"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"];

?>

Pour connaître l'intégralité et la description des champs, consultez le playground : Charge/CreatePaymentOrder (menu à gauche).

Paiement en plusieurs fois

Prérequis
- soumis à option et/ou en fonction de votre offre - non disponible pour le paiement SEPA
Exemple de requête
Champs obligatoires :
  • Montant : 100,00 €.
  • Règle :
    • Montant du premier paiement : 50,00 € .
    • Nombre d’échéances : 3 pour du paiement en 3 fois.
    • Période (en jours) entre chaque échéance : 7 jours.

Champs recommandés :

  • Référence de la commande : "myOrderId-1234".
  • Canal de diffusion : URL.
/fr-FR/rest/V4.0/api/kb/authentication.html
https://github.com/lyra/rest-php-examples/blob/master/www/minimalEmbeddedForm.php#L9-L44
https://api.lyra.com/api-payment/V4/Charge/CreatePaymentOrder
  
      {
        "amount": 10000,
        "currency": "EUR",
        "orderId": "myOrderId-1234",
        "channelOptions": {
          "channelType": "URL"      
        },
        "transactionOptions": {
          "installmentOptions": {
            "firstAmount": 5000,
            "count": 3,
            "period": 7
          }
        }
      }

Le premier paiement de 50,00 EUR est créé à J+0.

Le deuxième paiement de 25,00 EUR est créé à J+7.

Le troisième paiement de 25,00 EUR est créé à J+14.

La somme totale des montants doit être égale à la valeur du champ amount. La date de la dernière échéance ne peut être supérieure à 12 mois par rapport à la date de soumission du formulaire. Si la date de la dernière échéance est supérieure à la date de validité de la carte, aucune échéance ne sera enregistrée et l'acheteur sera notifié par un message de ce problème.

La description et l'intégralité des champs sont disponibles (menu à gauche) : Charge/CreatePaymentOrder.

Paiement en plusieurs fois avec un écheancier personnalisé

Prérequis
  • soumis à l’option "Paiement en plusieurs fois avancé"
  • non prise en compte de la valeur du champ Capture Delay (délai de remise en banque)
  • non disponible pour le paiement SEPA
Exemple de requête
Champs obligatoires :
  • Montant : 100,00 €.
  • Règle : Paiement en 3 fois.
  1. le 1er Avril pour un montant de 50,00 EUR.
  2. le 1er Mai pour un montant de 30,00 EUR.
  3. le 1er Juin pour un montant de 20,00 EUR.

Champs recommandés :

  • Référence de la commande : "myOrderId-1234".
  • Canal de diffusion : URL.
/fr-FR/rest/V4.0/api/kb/authentication.html
https://github.com/lyra/rest-php-examples/blob/master/www/minimalEmbeddedForm.php#L9-L44
https://api.lyra.com/api-payment/V4/Charge/CreatePaymentOrder
    {
      "amount": 10000,
      "currency": "EUR",
      "orderId": "myOrderId-1234",
      "channelOptions": {
        "channelType": "URL"      
      },
      "transactionOptions": {
        "installmentOptions": {
          "schedules": [
            {
               "date": "2023-04-01T23:59:59+00:00",
               "amount": 5000
             },
             {
                "date": "2023-05-01T23:59:59+00:00",
                "amount": 3000
             },
             {
                "date": "2023-06-01T23:59:59+00:00",
                "amount": 2000
             }
           ]
        }
      }
    }

La somme totale des montants doit être égale à la valeur du champ amount. La date de la dernière échéance ne peut être supérieure à 12 mois par rapport à la date de soumission du formulaire. Si la date de la dernière échéance est supérieure à la date de validité de la carte, aucune échéance ne sera enregistrée et l'acheteur sera notifié par un message de ce problème.

La description et l'intégralité des champs sont disponibles (menu à gauche) : Charge/CreatePaymentOrder.

Réponse

Exemple de réponse
{
    "webService": "Charge/CreatePaymentOrder",    
    "version": "V4",
    "applicationVersion": "5.5.0",
    "status": "SUCCESS",
    "answer": {
        "paymentOrderId": "fd8f6060f824427ba687d0161e46af8f",
        "paymentURL": "https://secure.lyra.com/t/328zq5so",
        "paymentOrderStatus": "RUNNING",
        "creationDate": "2020-03-31T15:06:49+00:00",
        "updateDate": null,
        "amount": 200050,
        "currency": "EUR",
        "locale": "en_GB",
        "strongAuthentication": "AUTO",
        "orderId": "myOrderId-1234",
        "channelDetails": {
            "channelType": "URL",
            "mailDetails": null,
            "smsDetails":  null,
            "whatsAppDetails": null,
            "_type": "V4/ChannelDetails"
        },
        "paymentReceiptEmail": "sample@example.com",
        "taxRate": null,
        "taxAmount": null,
        "expirationDate": "2020-04-20T18:13:26+00:00",
        "transactionDetails": {
            "cardDetails": {
                "manualValidation": "NO",
                "captureDelay": 0,
                "_type": "V4/CardDetails"
            },
            "_type": "V4/PaymentOrderTransactionDetails"
        },
        "dataCollectionForm": false,
        "merchantComment": null,
        "message": "I pay EUR 2,000.50 via secure payment before 23/04/2020 (if the link does not work, copy the URL : https://secure.lyra.com/t/xdt0bcmo ).",
        "_type": "V4/PaymentOrder"
    },
    "ticket": null,
    "serverDate": "2020-03-31T15:06:49+00:00",
    "applicationProvider": "LYRA",
    "metadata": null,
    "_type": "V4/WebService/Response"
}


}

Le marchand doit envoyer le lien de paiement à l'acheteur. Le lien de paiement correspond au champ paymentURL de l'objet Answer.

Retrouvez la description et l'intégralité des champs dans notre playground : PaymentOrder


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_856 Le paramètre locale est invalide.
INT_858 Le paramètre taxRate est invalide.
INT_869 Le paramètre taxAmount est invalide.
INT_928 Le format du champ installmentOptions.firstAmount est invalide ou le champ n'est pas transmis.
INT_929 Le paramètre installmentOptions.count est invalide.
INT_930 Le paramètre installmentOptions.period est invalide.
INT_931 Le paramètre installmentOptions.schedules[] est invalide.
INT_932 Le paramètre installmentOptions.schedules[date] est invalide.
INT_933 Le format du champ installmentOptions.schedules[amount] est invalide ou le champ n'est pas transmis.
PSP_519 Devise inconnue.
PSP_606 Devise non supportée par le contrat.
PSP_1007 La date d'expiration de l'ordre de paiement ne peut etre antérieure à la date courante ni excédée 90 jours.
PSP_1015 Aucun formulaire de collecte de données pour cette boutique.
PSP_1018 Le formulaire de collecte de données ne peut être utilisé pour la devise demandée.

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.18-1.11