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.
{ "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
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.
{ "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 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)
Exemple de requête
Champs obligatoires :
- Montant : 100,00 €.
- Règle : Paiement en 3 fois.
- le 1er Avril pour un montant de 50,00 EUR.
- le 1er Mai pour un montant de 30,00 EUR.
- 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.
{ "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 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.systempay.fr/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.systempay.fr/t/xdt0bcmo ).", "_type": "V4/PaymentOrder" }, "ticket": null, "serverDate": "2020-03-31T15:06:49+00:00", "applicationProvider": "NPS", "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é.