Créer un ordre de paiement par SMS
Cas d'utilisation
Le marchand crée un ordre de paiement envoyé par SMS à l'acheteur.
Tester
Testez le Web Service Charge/CreatePaymentOrder depuis notre playground : Charge/CreatePaymentOrder.
Requête
Paiement comptant
Exemple de requête
Champs obligatoires :
- Montant : 100,00 €.
- Canal de diffusion : SMS.
- Numéro de téléphone de l'acheteur : "+33611111111"
Champs recommandés :
- Référence de la commande : "myOrderId-1234"
{ "amount": 10000, "currency": "EUR", "orderId": "myOrderId-1234", "channelOptions": { "channelType": "SMS", "smsOptions": { "phoneNumber": "+33611111111" } }, }
/** * 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 €.
- Numéro de téléphone de l'acheteur : "+33611111111".
- Canal de diffusion : SMS.
- 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".
{ "amount": 10000, "currency": "EUR", "orderId": "myOrderId-1234", "channelOptions": { "channelType": "SMS", "smsOptions": { "phoneNumber": "+33611111111" } }, "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 €.
- Canal de diffusion : SMS.
- Numéro de téléphone de l'acheteur : "+33611111111"
- 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".
{ "amount": 10000, "currency": "EUR", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "SMS", "smsOptions": { "phoneNumber": "+33611111111" } }, "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 } ] } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2023-04-20T20:13:26+02:00", "dataCollectionForm": "false" }
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": 10000, "currency": "EUR", "locale": "en_GB", "strongAuthentication": "AUTO", "orderId": "myOrderId-1234", "channelDetails": { "channelType": "SMS", "mailDetails": null, "smsDetails": { "phoneNumber": "+336111111111", "message": "Dear customer, this is a payment order of EUR 2,000.50 valid until 23/04/2020. To confirm, please click on the link below : https://secure.systempay.fr/t/xdt0bcmo", "_type": "V4/SMSDetails" }, "whatsAppDetails": null, "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 of EUR 2,000.50 valid until 23/04/2020. To confirm, please click on the link below : 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" } }
L'ordre de paiement est envoyé par SMS à l'acheteur.
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.| {: .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é.