Créer un ordre de paiement par e-mail
Testez le Web Service Charge/CreatePaymentOrder depuis notre playground : Charge/CreatePaymentOrder.
Requête pour un paiement comptant
Paramètre | Requis | Description |
---|---|---|
channelOptions.channelType | Oui | Paramètre permettant de définir le canal d'émission de l'ordre de paiement. Doit être valorisé à MAIL. |
channelOptions.mailOptions | Oui | Objet json permettant de définir les paramètres spécifiques à la création d'un ordre de paiement par mail. |
channelOptions.mailOptions.recipient | Oui | Adresse e-mail du destinataire. |
channelOptions.mailOptions.bcc | Non | Liste des destinataires supplémentaires. Ces destinataires ne sont pas visibles par le destinataire principal (recipient). Utilisez le point-virgule “;” comme séparateur entre chaque adresse. |
channelOptions.mailOptions.subject | Non | Permet de personnaliser l’objet de l’e-mail. Ce paramètre est obligatoire sauf si vous spécifiez un nom de template valide dans le paramètre channelOptions.mailOptions.template. |
channelOptions.mailOptions.body | Non | Permet de personnaliser le corps de l’e-mail envoyé. Si le paramètre est laissé vide, le template par défaut sera appliqué. |
channelOptions.mailOptions.template | Non | Nom du modèle à utiliser pour générer l’e-mail. Il est nécessaire que le modèle existe dans le Back Office pour que cela fonctionne.Chaque modèle d’e-mail est associé à une langue (ou locale). Pour utiliser un modèle vous devez vous assurer de transmettre la bonne langue dans le paramètre locale. Si le modèle n’est pas trouvé une erreur sera retournée. Si vous avez défini une valeur dans les paramètres subject et body, le template sera ignoré. |
expirationDate | Non | Date de validité de l'ordre au format ISO-8601. Ne peut pas être antérieure à la date courante et ne peut pas dépasser 90 jours. Si ce paramètre n'est pas envoyé, la valeur appliquée sera celle de la boutique. Ex : 2021-10-05T21:59:59+00:00 |
locale | Non | Code représentant le nom de la langue et composé du code de la langue (ISO 639-1) suivi du code du pays (ISO 3166 alpha-2), séparés par le caractère "_". Permet de définir la langue des pages de paiement et du mail de confirmation. Si ce paramètre n'est pas renseigné, la langue utilisée sera celle de la boutique. Par exemple : "fr_FR", "es_ES", "en_GB", "pt_BR" |
merchantComment | Non | Commentaire facultatif destiné à l'utilisateur du Identifiant utilisateur source , soit en consultant la colonne Informations utilisateur . |
amount | Oui | Montant à payer, exprimé dans sa plus petite unité monétaire (le centime pour l'euro). |
currency | Oui | Devise du paiement. Code ISO 4217 alpha-3. Ex: "EUR" pour l'euro. |
orderId | Non | Référence de la commande. |
taxAmount | Non | Montant des taxes pour l’ensemble de la commande, exprimé dans sa plus petite unité monétaire (le centime pour l'euro). |
taxRate | Non | Taux de taxe appliqué sur l’ensemble de la commande. La valeur doit être le pourcentage à appliquer (21 pour 21%). |
transactionOptions.cardOptions.manualValidation | Non | Permet de préciser si la validation de la transaction est manuelle. Valeurs possibles: "YES" ou "NO". |
transactionOptions.cardOptions.captureDelay | Non | Indique le délai, en nombre de jours, avant remise en banque. |
strongAuthentication | Non | Permet d’activer ou de désactiver l’authentification forte lors du paiement. Valeurs possibles : "ENABLED", "DISABLED", CHALLENGE_REQUESTED, CHALLENGE_MANDATE, NO_PREFERENCE ou "AUTO". |
paymentReceiptEmail | Non | Adresse e-mail qui sera utilisée pour l'envoi du ticket de paiement à l'acheteur. Nécessite l'activation de la règle de notification "E-mail de confirmation de paiement à destination de l'acheteur". |
dataCollectionForm | Non | Utilisation du formulaire de collecte de données. Valeurs possibles: "true" ou "false". |
customer | Non | Objet contenant les données de l'acheteur. |
formAction | Non | Permet de définir le type de comportement souhaité lors de la création de la transaction. |
paymentMethodToken | Non | Alias du moyen de paiement à utiliser pour le paiement. |
paymentMethods | Non | Liste des moyens de paiement à proposer à l’acheteur. |
metadata | Non | Valeurs personnalisées rattachées à la transaction, au format json. |
D'autres champs facultatifs sont disponibles.
Retrouvez l'intégralité des champs dans notre playground : Charge/CreatePaymentOrder (menu à gauche).
Exemple de requête
Paiement comptant
3 cas d'utilisation sont disponibles:
- envoyer un e-mail en utilisant le modèle "par défaut" défini par la plateforme de paiement,
- envoyer un e-mail en utilisant un modèle personnalisé, défini dans le back office marchand,
- envoyer un e-mail en personnalisant son contenu directement dans la requête.
Exemple de requête utilisant le modèle par défaut
Le marchand souhaite envoyer un ordre de paiement en utilisant l'objet et le message définis par défaut par la plateforme de paiement.
Pour cela, ne transmettez pas les champs subject, body ni template.
{ "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" }-->
Exemple de requête utilisant un modèle d'e-mail personnalisé
Le marchand a créé, depuis son
Pour cela, utilisez le champ template pour transmettre le nom du modèle à utiliser.
Ne transmettez pas les champs body et subject ils seront ignorés.
Inutile de transmettre le champ locale, sa valeur sera déduite du modèle à utiliser.
{ "amount": 200050, "currency": "EUR", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient":"sample@example.com", "template":"template_fr" } }, "paymentReceiptEmail" : "sample@example.com", "expirationDate" : "2020-04-20T20:13:26+02:00", "dataCollectionForm" : "false" }
{ "amount": 200050, "currency": "EUR", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient":"sample@example.com", "template":"template_en" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "dataCollectionForm": "false" }
{ "amount": 200050, "currency": "PEN", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient":"sample@example.com", "template":"template_es" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "dataCollectionForm": "false" }
{ "amount": 200050, "currency": "ARS", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient":"sample@example.com", "template":"template_es" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "dataCollectionForm": "false" }
{ "amount": 200050, "currency": "COP", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient":"sample@example.com", "template":"template_es" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "dataCollectionForm": "false" }
{ "amount": 200050, "currency": "BRL", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient":"sample@example.com", "template":"template_pt" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "dataCollectionForm": "false" }
Exemple de requête pour envoyer un message personnalisé
Le marchand souhaite personnaliser l'objet et le message de l'e-mail dans sa requête.
Pour cela, ne transmettez pas le champ template.
Utilisez les champs subject et body.
Pour les personnaliser, des variables sont mises à disposition:
Valeur | Description |
---|---|
%url% | URL de l'ordre de paiement. Si cette variable est absente, le lien de paiement sera ajouté automatiquement à la fin du message. |
%amount% | Montant et devise du paiement |
%start_date% | Date de création de l'ordre de paiement. Permet d'indiquer le début de la période de validité de l'ordre de paiement. |
%end_date% | Permet d'indiquer la fin de la période de validité de l'ordre de paiement. |
%shop_name% | Nom de votre boutique tel que défini dans le Back Office |
%reference% | Référence de la commande |
%shop_url% | URL de votre boutique |
%shop_contact% | Adresse e-mail du "gestionnaire de la boutique" telle que définie dans le Back Office |
Dans la réponse, ces variables seront remplacées par leur valeur.
{ "amount": 200050, "currency": "EUR", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient":"sample@example.com", "subject": "Votre commande %reference% sur %shop_name%", "body":"Bonjour, <br/>cet e-mail comporte un lien de paiement d'un montant de %amount% valable jusqu'au %end_date%.<br/>Pour confirmer le paiement, cliquez sur le lien suivant: %url%" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "dataCollectionForm": "false" }
{ "amount": 1500, "currency": "EUR", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient":"sample@example.com", "subject": "Your payment order %reference% from %shop_name%", "body":"Dear customer, <br/>this is a payment order of %amount% valid until %end_date%.<br/>To confirm, please click on the link below: %url%" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "dataCollectionForm": "false" }
{ "amount": 1500, "currency": "PEN", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient":"sample@example.com", "subject": "Su solicitud de pago %reference% por %shop_name%", "body":"Hola, <br/>Este correo electrónico contiene una solicitud de pago por un importe de %amount% válida hasta el %end_date%.<br/> Para confirmar el pago, haga clic en el enlace siguiente: %url%" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "dataCollectionForm": "false" }
{ "amount": 20000, "currency": "ARS", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient":"sample@example.com", "subject": "Su solicitud de pago %reference% por %shop_name%", "body":"Hola, <br/>Este correo electrónico contiene una solicitud de pago por un importe de %amount% válida hasta el %end_date%.<br/> Para confirmar el pago, haga clic en el enlace siguiente: %url%" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "dataCollectionForm": "false" }
{ "amount": 100000, "currency": "COP", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient":"sample@example.com", "subject": "Su solicitud de pago %reference% por %shop_name%", "body":"Hola, <br/>Este correo electrónico contiene una solicitud de pago por un importe de %amount% válida hasta el %end_date%.<br/> Para confirmar el pago, haga clic en el enlace siguiente: %url%" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "dataCollectionForm": "false" }
{ "amount": 200050, "currency": "EUR", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "MAIL", "mailOptions": { "recipient":"sample@example.com", "subject": "Sua oferta de pagamento %reference% por %shop_name%", "body":"Caro cliente, <br/>Este e-mail contém uma ordem de pagamento no valor de %amount% válida até %end_date%.<br/> Para confirmar o pagamento, favor clicar sobre o link seguinte: %url%" } }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "dataCollectionForm": "false" }
Remarque
Si la locale est spécifiée dans la requête, le lien de paiement ainsi que la date de validité de l'ordre seront traduits dans la langue demandée.
Assurez-vous de rédiger le contenu de l'e-mail dans la bonne langue.
Réponse
L'objet answer contiendra les paramètres ci-dessous:
Paramètre | Description |
---|---|
paymentOrderId | ID de l'ordre de paiement. |
paymentURL | URL de paiement. |
paymentOrderStatus | Statut de l'ordre de paiement. |
creationDate | Date et heure de création de l'ordre de paiement. |
updateDate | Date et heure de modification de l'ordre de paiement. |
channelDetails.channelType | Canal de transmission de l'ordre de paiement. Valorisé à MAIL |
channelDetails.mailDetails.recipient | Adresse e-mail du destinataire. |
channelDetails.mailDetails.subject | Objet de l'e-mail envoyé. |
channelDetails.mailDetails.body | Corps de l'e-mail envoyé. |
channelDetails.mailDetails.template | Nom du template utilisé. |
channelDetails.mailDetails.bcc | Liste des destinataires en copie cachée. |
message | Message comportant le lien de paiement, rédigé dans la locale. |
amount | Montant à payer, exprimé dans sa plus petite unité monétaire. |
currency | Devise du paiement. Code ISO 4217 alpha-3. |
locale | Code représentant le nom de la langue et composé du code de la langue (ISO 639-1) suivi du code du pays (ISO 3166 alpha-2), séparés par le caractère "_". |
strongAuthentication | Permet d’activer ou de désactiver l’authentification forte lors du paiement. |
orderId | Référence de la commande. |
paymentReceiptEmail | Adresse e-mail qui sera utilisée pour l'envoi du ticket de paiement à l'acheteur. |
taxAmount | Montant des taxes pour l’ensemble de la commande, exprimé dans sa plus petite unité monétaire. |
taxRate | Taux de taxe appliqué sur l’ensemble de la commande. |
expirationDate | Date de validité de l'ordre au format ISO-8601. |
dataCollectionForm | Utilisation du formulaire de collecte de données. |
merchantComment | Commentaire facultatif. |
transactionDetails.cardDetails.manualValidation | Mode de validation de la transaction. |
transactionDetails.cardDetails.captureDelay | Délai de capture. |
customer | Objet contenant les données de l'acheteur. |
formAction | Permet de définir le type de comportement souhaité lors de la création de la transaction. |
paymentMethodToken | Alias du moyen de paiement à utiliser pour le paiement. |
paymentMethods | Liste des moyens de paiement à proposer à l’acheteur. |
metadata | Valeurs personnalisées rattachées à la transaction, au format json. |
Retrouvez l'intégralité des champs dans notre playground : PaymentOrder
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": "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": "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://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-03-31T15:06:49+00:00", "applicationProvider": "NPS", "metadata": null, "_type": "V4/WebService/Response" } }
Gestion des erreurs
Le Web Service Charge/createPaymentOrder retournera une erreur dans les cas suivants:
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_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. |
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. |
PSP_1022 | Le template spécifié dans la requête n'existe pas pour la locale demandée. |