Créer un ordre de paiement par e-mail
Cas d'utilisation
Le marchand crée un ordre de paiement envoyé par e-mail à 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 : MAIL.
- E-mail de l'acheteur : "customer@example.com".
Champs recommandés :
- Référence de la commande : "myOrderId-1234".
{ "amount": 10000, "currency": "EUR", "orderId": "myOrderId-1234", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient": "customer@example.com" } } }
<!-- <pre data-language="json" data-market="es-PE">
{
 "amount": 200050,
 "currency": "PEN",
 "orderId": "myOrderId-999999", 
 "channelOptions": {
 "channelType": "MAIL",
 "mailOptions": {
 "recipient": "sample@example.com"
 }
 },
 "paymentReceiptEmail": "sample@example.com",
 "expirationDate": "2020-04-20T20:13:26+02:00",
 "locale": "es_PE",
 "dataCollectionForm": "false"
}
</pre>
{ "amount": 200050, "currency": "ARS", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient": "sample@example.com" } }, "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": "MAIL", "mailOptions": { "recipient": "sample@example.com" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "locale": "es_CO", "dataCollectionForm": "false" }
{ "amount": 200050, "currency": "BRL", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient": "sample@example.com" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "locale": "pt_BR", "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 €.
E-mail de l'acheteur : "customer@example.com".
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": "MAIL", "mailOptions": { "recipient": "customer@example.com" } }, "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) - non disponible pour le paiement SEPA
Exemple de requête
Champs obligatoires :
- Montant : 100,00 €.
- Canal de diffusion : MAIL.
- E-mail de l'acheteur : "customer@example.com".
- 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 2023 pour un montant de 20,00 EUR.
Champs recommandés :
- Référence de la commande : "myOrderId-1234".
{ "amount": 10000, "currency": "EUR", "orderId": "myOrderId-1234", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient": "customer@example.com" } }, "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://sogecommerce.societegenerale.eu/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": "MAIL", "mailDetails": { "subject": "Your payment order", "body": "<b>Message sent by DEMO STORE</b> <p>Dear customer,</p> <p>This e-mail is a payment order of EUR 2,000.50 valid until 01/04/2020. To confirm, please click on the link below : </p> <p>https://sogecommerce.societegenerale.eu/t/w5izg024</p> <p>In case of problems, or if this message is not correctly displayed, please contact support@demostore.com.</p>", "template": null, "recipient": "customer@example.com", "bcc": null, "_type": "V4/MailDetails" }, "smsDetails": null, "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": "<b>Message sent by DEMO STORE</b> <p>Dear customer,</p> <p>This e-mail is a payment order of EUR 2,000.50 valid until 01/04/2020. To confirm, please click on the link below : </p> <p>https://sogecommerce.societegenerale.eu/t/w5izg024</p> <p>In case of problems, or if this message is not correctly displayed, please contact support@demostore.com.</p>", "_type": "V4/PaymentOrder" }, "ticket": null, "serverDate": "2020-03-31T15:06:49+00:00", "applicationProvider": "SOGECOM", "metadata": null, "_type": "V4/WebService/Response" } }
L'ordre de paiement est envoyé par e-mail à 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é.