Modifier un ordre de paiement
Cas d'utilisation
Le marchand souhaite modifier le contenu d'un ordre de paiement (montant, message, etc..).
Le Web Service Charge/PaymentOrder/Update permet de modifier uniquement les ordres de paiement créés avec le Web Service Charge/CreatePaymentOrder.
Seuls les ordres de paiement en cours (statut RUNNING) peuvent faire l'objet d'une modification. Le canal de diffusion ne peut pas être modifié.
Tester
Testez le web service Charge/PaymentOrder/Update depuis notre playground.
Requête
Champs obligatoires
Montant avec la devise. Référence de l'ordre de paiement : paymentOrderId. Canal de diffusion (sauf pour le lien URL):
- Par e-mail :
channelOptions.mailOptions | Objet json définissant les paramètres de l'ordre de paiement. |
channelOptions.mailOptions.recipient | Adresse e-mail de l'acheteur. |
- Par SMS :
channelOptions.smsOptions | Objet json définissant les paramètres de l'ordre de paiement. |
channelOptions.smsOptions.phoneNumber | Numéro de téléphone mobile de l'acheteur. |
Exemple de requête
Modifiez les données suivantes :
- Montant : 200,00 €.
- Référence de la commande : "myOrderId-999999".
- Canal de diffusion : MAIL.
{ "paymentOrderId": "d63e7f507a6f4dfa86cb40a833ecfd85", "amount": 20000, "currency": "EUR", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient": "customer@example.com" } } }
{ "paymentOrderId": "d63e7f507a6f4dfa86cb40a833ecfd85", "amount": 200050, "currency": "PEN", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient": "sample@example.com" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-05-20T20:13:26+02:00", "locale": "es_PE", "dataCollectionForm": "true" }
{ "paymentOrderId": "d63e7f507a6f4dfa86cb40a833ecfd85", "amount": 200050, "currency": "ARS", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient": "sample@example.com" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-05-20T20:13:26+02:00", "locale": "es_AR", "dataCollectionForm": "true" }
{ "paymentOrderId": "d63e7f507a6f4dfa86cb40a833ecfd85", "amount": 200050, "currency": "COP", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient": "sample@example.com" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-05-20T20:13:26+02:00", "locale": "es_CO", "dataCollectionForm": "true" }
/** * 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
Exemple de Réponse
{ "webService": "Charge/PaymentOrder/Update", "version": "V4", "applicationVersion": "5.5.0", "status": "SUCCESS", "answer": { "paymentOrderId": "d63e7f507a6f4dfa86cb40a833ecfd85", "paymentURL": "https://secure.systempay.fr/t/328zq5so", "paymentOrderStatus": "RUNNING", "creationDate": "2020-03-31T15:06:49+00:00", "updateDate": "2020-04-29T12:55:50+00:00", "amount": 20000, "currency": "EUR", "locale": "en_GB", "strongAuthentication": "AUTO", "orderId": "myOrderId-999999", "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://secure.systempay.fr/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": "sample@example.com", "bcc": null, "_type": "V4/MailDetails" }, "smsDetails": null, "whatsAppDetails": null, "_type": "V4/ChannelDetails" }, "paymentReceiptEmail": "sample@example.com", "taxRate": null, "taxAmount": null, "expirationDate": "2020-05-20T18:13:26+00:00", "transactionDetails": { "cardDetails": { "manualValidation": "NO", "captureDelay": 0, "_type": "V4/CardDetails" }, "_type": "V4/PaymentOrderTransactionDetails" }, "dataCollectionForm": true, "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://secure.systempay.fr/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-04-29T12:55:50+00:00", "applicationProvider": "NPS", "metadata": null, "_type": "V4/WebService/Response" } }
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_836** | L'objet **smsOptions** est manquant. | | **INT_837** | Le paramètre **channelOptions.whatsAppOptions.phoneNumber** est manquant. | | **INT_838** | Le paramètre **channelOptions.smsOptions.phoneNumber** est manquant. | | **INT_839** | L'objet **whatsAppOptions** est manquant. | | **INT_841** | L'objet **mailOptions** est manquant. | | **INT_850** | Le paramètre **channelOptions.mailOptions.recipient** 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. | | **INT_902** | Le format du champ **paymentOrderId** est invalide ou le champ n'est pas transmis. | | **PSP_519** | Devise inconnue. | | **PSP_606** | Devise Oui supportée par le contrat. | | **PSP_1000** | L'ordre de paiement n'existe pas. | | **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 Oui disponible pour la locale demandée. | | **PSP_1005** | Modification impossible sur un ordre de paiement payé. | | **PSP_1006** | Modification impossible sur un ordre de paiement expiré. | | **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_1011** | Le mode (TEST ou PRODUCTION) de l'ordre de paiement ne correspond pas à celui de la requête. | | **PSP_1015** | Aucun formulaire de collecte de données pour cette boutique. | | **PSP_1017** | Le canal de diffusion ne peut pas être modifié. | | **PSP_1018** | Le formulaire de collecte de données ne peut être utilisé pour la devise demandée. | | **PSP_1022** | Le template spécifié dans la requête n'existe pas pour la locale demandée. | {: .lita-excluded-col1 }