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

  • Requête
  • Exemple de requête
  • Réponse
  • Gestion des erreurs

Testez le web service Charge/CreatePaymentOrder depuis notre playground : Charge/CreatePaymentOrder.

Requête pour un paiement comptant

Paramètre Requis Description
channelOptions.channelType Oui Paramètre permettant de définir le canal d'émission de l'ordre de paiement. Doit être valorisé à WHATSAPP.
channelOptions.whatsAppOptions Oui Objet json permettant de définir les paramètres spécifiques à la création d'un ordre de paiement WhatsApp.
channelOptions.whatsAppOptions.phoneNumber Oui Numéro de téléphone du destinataire.
expirationDate Non Date de validité de l'ordre au format ISO-8601. Ne peut pas être antérieure à la date courante et ne peut pas dépasser 90 jours. Si ce paramètre n'est pas envoyé, la valeur appliquée sera celle de la boutique. Ex : 2021-10-05T21:59:59+00:00
locale Non Code représentant le nom de la langue et composé du code de la langue (ISO 639-1) suivi du code du pays (ISO 3166 alpha-2), séparés par le caractère "_". Permet de définir la langue des pages de paiement et du mail de confirmation. Si ce paramètre n'est pas renseigné, la langue sera déduite à partir du numéro de téléphone du destinataire. Par exemple : "fr_FR", "es_ES", "en_GB", "pt_BR"
merchantComment Non Commentaire facultatif destiné à l'utilisateur du Back Office Marchand.  Il se trouve depuis le menu : Gestion> Ordres de paiement : soit en affichant le détail de l'ordre dans l'onglet Informations du champ Identifiant utilisateur source, soit en consultant la colonne Informations utilisateur.
amount Oui Montant à payer, exprimé dans sa plus petite unité monétaire (le centime pour l'euro).
currency Oui Devise du paiement. Code ISO 4217 alpha-3. Ex: "EUR" pour l'euro.
orderId Non Référence de la commande.
taxAmount Non Montant des taxes pour l’ensemble de la commande, exprimé dans sa plus petite unité monétaire (le centime pour l'euro).
taxRate Non Taux de taxe appliqué sur l’ensemble de la commande. La valeur doit être le pourcentage à appliquer (21 pour 21%).
transactionOptions.cardOptions.manualValidation Non Permet de préciser si la validation de la transaction est manuelle. Valeurs possibles: "YES" ou "NO".
transactionOptions.cardOptions.captureDelay Non Indique le délai, en nombre de jours, avant remise en banque.
strongAuthentication Non Permet d’activer ou de désactiver l’authentification forte lors du paiement. Valeurs possibles : "ENABLED", "DISABLED", CHALLENGE_REQUESTED, CHALLENGE_MANDATE, NO_PREFERENCE ou "AUTO".
paymentReceiptEmail Non Adresse email qui sera utilisée pour l'envoi du ticket de paiement à l'acheteur. Nécessite l'activation de la règle de notification "E-mail de confirmation de paiement à destination de l'acheteur".
dataCollectionForm Non Utilisation du formulaire de collecte de données. Valeurs possibles: "true" ou "false".
customer Non Objet contenant les données de l'acheteur.
formAction Non Permet de définir le type de comportement souhaité lors de la création de la transaction.
paymentMethodToken Non Alias du moyen de paiement à utiliser pour le paiement.
paymentMethods Non Liste des moyens de paiement à proposer à l’acheteur.
metadata Non Valeurs personnalisées rattachées à la transaction, au format json.

D'autres champs facultatifs sont disponibles.
Retrouvez l'intégralité des champs dans notre playground : Charge/CreatePaymentOrder (menu à gauche).

Exemple de requête

Paiement comptant

/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": "WHATSAPP",
      "whatsAppOptions": {
    	"phoneNumber":"+33611111111"    
      }
    }
}
{
    "amount": 200050,
    "currency": "PEN",
    "orderId": "myOrderId-999999",    
    "channelOptions": {
      "channelType": "WHATSAPP",
      "whatsAppOptions": {
        "phoneNumber": "+51987654321"
      }
    },
    "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": "WHATSAPP",
      "whatsAppOptions": {
        "phoneNumber": "+5491112345678"
      }
    },
    "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": "WHATSAPP",
      "whatsAppOptions": {
        "phoneNumber": "+573191234567"
      }
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00",
    "locale": "es_CO",
    "dataCollectionForm": "false"
}
{
    "amount": 200050,
    "currency": "EUR",
    "orderId": "myOrderId-999999",
    "channelOptions": {
      "channelType": "WHATSAPP",
      "whatsAppOptions": {
    	"phoneNumber":"+5511123456789"    
      }
    },
    "paymentReceiptEmail": "sample@example.com",
    "expirationDate": "2020-04-20T20:13:26+02:00", 
    "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"];

?>

Réponse

L'objet answer contiendra les paramètres ci-dessous:

Paramètre Description
paymentOrderId ID de l'ordre de paiement.
paymentURL URL de paiement.
paymentOrderStatus Statut de l'ordre de paiement.
creationDate Date et heure de création de l'ordre de paiement.
updateDate Date et heure de modification de l'ordre de paiement.
channelDetails.channelType Canal de transmission de l'ordre de paiement.
channelDetails.whatsAppDetails.phoneNumber Numéro de téléphone du destinataire avec le préfixe internationnal.
message Message comportant le lien de paiement, rédigé dans la locale.
amount Montant à payer, exprimé dans sa plus petite unité monétaire.
currency Devise du paiement. Code ISO 4217 alpha-3.
locale Code représentant le nom de la langue et composé du code de la langue (ISO 639-1) suivi du code du pays (ISO 3166 alpha-2), séparés par le caractère "_".
strongAuthentication Préférence du marchand concernant l'authentification forte.
orderId Référence de la commande.
paymentReceiptEmail Adresse email qui sera utilisée pour l'envoi du ticket de paiement à l'acheteur.
taxAmount Montant des taxes pour l’ensemble de la commande, exprimé dans sa plus petite unité monétaire.
taxRate Taux de taxe appliqué sur l’ensemble de la commande.
expirationDate Date de validité de l'ordre au format ISO-8601.
dataCollectionForm Utilisation du formulaire de collecte de données.
merchantComment Commentaire facultatif.
transactionDetails.cardDetails.manualValidation Mode de validation de la transaction.
transactionDetails.cardDetails.captureDelay Délai de capture.
customer Objet contenant les données de l'acheteur.
formAction Permet de définir le type de comportement souhaité lors de la création de la transaction.
paymentMethodToken Alias du moyen de paiement à utiliser pour le paiement.
paymentMethods Liste des moyens de paiement à proposer à l’acheteur.
metadata Valeurs personnalisées rattachées à la transaction, au format json.

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

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": 10000,
        "currency": "EUR",
        "locale": "fr_FR",
        "strongAuthentication": "AUTO",
        "orderId": "myOrderId-1234",
        "channelDetails": {
            "channelType": "WHATSAPP",
            "mailDetails": null,
            "smsDetails": null,
            "whatsAppDetails": {
                "phoneNumber": "+3361111111",
                "_type": "V4/WhatsAppDetails"
            },
            "ivrDetails": 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": "Bonjour, voici un ordre de paiement envoyé par DEMO STORE d'un montant de 2000.50 EUR valable jusqu'au 23/04/2020. Pour confirmer, veuillez suivre le lien : 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"
}
{
    "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-999999",
        "channelDetails": {
            "channelType": "WHATSAPP",
            "mailDetails": null,
            "smsDetails": null,
            "whatsAppDetails": {
                "phoneNumber": "+51987654321",                
                "_type": "V4/WhatsAppDetails"
            },
            "ivrDetails": 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": Dear customer, this is a payment order sent by DEMO STORE of EUR 2,000.50 valid until 23/04/2020. To confirm, please click on the link below : 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"
}


}
{
    "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": "es_ES",
        "strongAuthentication": "AUTO",
        "orderId": "myOrderId-999999",
        "channelDetails": {
            "channelType": "WHATSAPP",
            "mailDetails": null,
            "smsDetails": null,
            "whatsAppDetails": {
                "phoneNumber": "+51987654321",                
                "_type": "V4/WhatsAppDetails"
            },
            "ivrDetails": 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": "Hola, este mensaje contiene una solicitud de pago enviada por DEMO STORE por un monto de 2.000,50 ARS, válida hasta el 23/04/2020. Para confirmar el pago, haga clic en el enlace siguiente : 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"
}


}
{
    "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": "es_ES",
        "strongAuthentication": "AUTO",
        "orderId": "myOrderId-999999",
        "channelDetails": {
            "channelType": "WHATSAPP",
            "mailDetails": null,
            "smsDetails": null,
            "whatsAppDetails": {
                "phoneNumber": "+573191234567",                
                "_type": "V4/WhatsAppDetails"
            },
            "ivrDetails": 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": "Hola, este mensaje contiene una solicitud de pago enviada por DEMO STORE por un monto de 2.000,50 COP, válida hasta el 23/04/2020. Para confirmar el pago, haga clic en el enlace siguiente : 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"
}


}
{
    "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": "es_ES",
        "strongAuthentication": "AUTO",
        "orderId": "myOrderId-999999",
        "channelDetails": {
            "channelType": "WHATSAPP",
            "mailDetails": null,
            "smsDetails": null,
            "whatsAppDetails": {
                "phoneNumber": "+5491112345678",                
                "_type": "V4/WhatsAppDetails"
            },
            "ivrDetails": 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": "Hola, este mensaje contiene una solicitud de pago por un importe de 2.000,50 PEN, válida hasta el 23/04/2020. Para confirmar el pago, haga clic en el enlace siguiente : 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"
}


}
{
    "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": "pt_BR",
        "strongAuthentication": "AUTO",
        "orderId": "myOrderId-999999",
        "channelDetails": {
            "channelType": "WHATSAPP",
            "mailDetails": null,
            "smsDetails": null,
            "whatsAppDetails": {
                "phoneNumber": "+5511123456789",
                "_type": "V4/WhatsAppDetails"
            },
            "ivrDetails": 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": "Caro cliente, este mensagem contém uma ordem de pagamento enviada por DEMO STORE no valor de 2000.50 BRL válida até 23/04/2020. Para confirmar o pagamento, favor clicar sobre o link seguinte : 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"
}

Gestion des erreurs

Le Web Service Charge/createPaymentOrder retournera une erreur dans les cas suivants:

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_837 Le paramètre channelOptions.whatsAppOptions.phoneNumber est manquant.
INT_839 L'objet whatsAppOptions est manquant.
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_1001 Impossible de joindre la passerelle WhatsApp.
PSP_1002 Le numéro de téléphone du destinataire n’est pas associé à un compte WhatsApp.
PSP_1003 Configuration WhatsApp absente.
PSP_1004 Modèle WhatsApp non disponible pour la locale demandée.
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.
Nous recrutons
Mentions légales
Charte de Protection des Données Personnelles
25.18-1.11