Créer un ordre de paiement SVI
Cas d'utilisation
Le marchand crée un ordre de paiement SVI. L'acheteur paie en transmettant une référence au SVI (champ ivrPaymentOrderId
).
Requête
Paiement SVI
Exemple de requête
Champs obligatoires :
- Montant : 100,00 €.
- Canal de diffusion : IVR.
- Référence de la commande : "myOrderId-1234".
/preview/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": "IVR" } }
{ "amount": 200050, "currency": "EUR", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "IVR" }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00" }
{ "amount": 200050, "currency": "ARS", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "IVR" }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00" }
{ "amount": 200050, "currency": "COP", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "IVR" }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00" }
{ "amount": 200050, "currency": "EUR", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "IVR" }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00" }
/** * 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"]; ?>
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": null, "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": "IVR", "mailDetails": null, "smsDetails": null, "whatsAppDetails": null, "ivrDetails": { "ivrPaymentOrderId": "0123", "_type": "V4/IVRDetails" } "_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": null, "_type": "V4/PaymentOrder" }, "ticket": null, "serverDate": "2020-03-31T15:06:49+00:00", "applicationProvider": "LYRA", "metadata": null, "_type": "V4/WebService/Response" } }
L'ordre de paiement est créé et payable via le SVI.
L'acheteur doit transmettre cette référence au SVI, champ ivrPaymentOrderId
( dans cet exemple : 0123) pour payer.
Retrouvez la description et l'intégralité des autres 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_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_1007** | La date d'expiration de l'ordre de paiement ne peut etre antérieure à la date courante ni excédée 90 jours.|
{: .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ée.