Créer un ordre de paiement WhatsApp
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 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": "PAYZEN", "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": "PAYZEN", "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": "PAYZEN", "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": "PAYZEN", "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": "PAYZEN", "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": "PAYZEN", "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. |