Batch
Ce produit est en mode pilote. Contactez-nous pour devenir un pilote.

- Évolutivité optimisée pour soumettre de grandes quantités de transactions/opérations de maintenance
- Sécurité accrue en incluant les données directement dans le corps de la requête
- Validation de données robuste grâce à des vérifications anticipées
Directives d'optimisation du traitement
Comme ce produit est en mode pilote, des limitations s'appliquent.
La capacité de soumission de Batch doit respecter les limites de taille de l'API. Ces limites varient en fonction des propriétés incluses dans votre requête et du moyen de paiement utilisé :
- Pour les paiements par carte/PayPal utilisant les propriétés minimales requises, vous pouvez soumettre plus de 10 000 transactions.
- Pour les transactions Apple Pay/Google, cette capacité peut diminuer à environ 2 000 à 2 500 transactions en raison de la taille de la requête JSON en raison des contraintes des propriétés optionnelles supplémentaires, qui varient généralement de 5 à 15 Mo.
Pour optimiser votre implémentation de Batch, nous recommandons
- Tester votre structure de charge utile pour déterminer les tailles de lot optimales.
- Équilibrer la quantité de transactions avec les variations de propriétés pour plus d'efficacité.
Contactez-nous pour obtenir de l'aide sur cette tâche.
En cas de soumission de lot échouée, reportez-vous à notre réponse de plateforme lorsque vous envoyez des requêtes à notre endpoint SubmitBatch.
Commencer
Pour traiter des transactions sur notre plateforme avec cette solution, assurez-vous que
- Vous avez un compte sur notre plateforme.
- Au moins une de nos méthodes de paiement par carte est activée dans le Merchant Portal via Entreprise > Moyens de paiement.
Utilisez-vous le Back Office ?
Vous pouvez vérifier l'état d'activation de la méthode de paiement via Configuration > Activation PM. - Vous avez configuré votre clé API et secret API dans votre compte.
- Votre serveur peut traiter les requêtes serveur à serveur via notre API RESTful.
Tout est prêt ? Apprenez ensuite à utiliser notre solution Batch dans le chapitre suivant !
Comment ça marche
Avant de traiter des transactions en direct, utilisez notre environnement de test. Familiarisez-vous avec notre solution sans frais ni engagement ! Une fois que vous êtes prêt à passer en direct, découvrez ici comment obtenir un compte de production ou contactez-nous !
Les connexions de Server-to-server nécessitent que vos systèmes traitent les données de carte à un moment donné. Cette méthode entraîne un très grand nombre d'exigences PCI.
Cependant, vous pouvez réduire considérablement la portée de votre évaluation et le nombre d'exigences PCI : Remplacez le numéro de carte par un token via notre Hosted Tokenization Page. Cela vous permet de externaliser complètement la gestion des données de carte à notre plateforme. Aucun de vos systèmes utilisant des tokens ne nécessitera d'évaluation.
Moyens d'intégration
Étant donné que ce produit est en mode pilote, nos SDK de serveur ne prennent pas encore en charge cette méthode d'intégration. Au lieu de cela, vous devez envoyer toutes les requêtes comme décrit dans le chapitre "Étapes d'intégration" directement aux points de terminaison API respectifs. Pour ce faire, vous devez suivre un processus d'authentification spécifique décrit dans le guide Authentification.
Formatage JSON
L'utilisation de Batch nécessite l'envoi d'un JSON contenant toutes les données nécessaires pour les opérations de transaction/maintenance. Le contenu du JSON diffère selon les cas d'utilisation individuels. Retrouvez la collection de tous les cas d'utilisation pris en charge dans le chapitre dédié.
Cependant, pour tout cas d'utilisation, la requête elle-même doit répondre aux exigences suivantes :
- Notre point de terminaison SubmitBatch ne prend en charge que les données JSON dans le corps de la requête. Le corps de la requête contient un objet JSON avec le modèle correct comme valeur :
{ "header": { "operationType": "CreatePayment", "merchantBatchReference": "unique-batch-reference", "itemCount": 1 }, "createPayment": [ { "cardPaymentMethodSpecificInput": { "card": { "cardNumber": "4150551403657424", "cvv": "031", "expiryDate": "1231", "cardholderName": "Jacqueline" }, "paymentProductId": 130, "transactionChannel": "ECOMMERCE", "authorizationMode": "FINAL_AUTHORIZATION" }, "order": { "amountOfMoney": { "amount": 5600, "currencyCode": "EUR" }, "references": { "merchantReference": "merchant-reference" } } } ] }
- Chaque opération de transaction/maintenance est un enregistrement formaté comme un objet JSON. Selon le operationType, tous les enregistrements/objets JSON sont placés dans un tableau de
createPayment
capturePayment
cancelPayment
refundPayment - La limite de taille (2000 enregistrements).
Lors de la soumission d'un lot, notre plateforme parsèmera – validera – toujours le JSON. La validation couvre les vérifications pour :
- Propriétés obligatoires manquantes.
- Inadéquation des types de données pour toute propriété.
- Erreurs de syntaxe et de formatage.
- Conversion des objets JSON contenus dans un tableau de
createPayment
capturePayment
cancelPayment
refundPayment
en éléments de lot individuels pour un traitement ultérieur. - La limite de taille (2000 enregistrements).
Étapes d'intégration
Notre solution Batch vous permet de traiter de grandes quantités de transactions en une seule fois. Vos clients fournissent leurs données de carte que vous stockez dans votre système. Au lieu de les soumettre en temps réel, vous pouvez choisir le moment du processus de transaction à votre guise.
En conséquence, votre entreprise n'a pas besoin d'une boutique en ligne : Vous envoyez vos demandes de transaction collectivement à tout moment à notre plateforme. Ainsi, vous pouvez soit :
- Stocker les informations d'identification des cartes de vos clients.
- Utiliser des jetons existants pour MITs.
Pour une soumission ultérieure dans des JSON de lots spécifiques.
Traiter les transactions de cette manière signifie que vous :
- Traitez les transactions/opérations de maintenance de manière asynchrone : Vous définissez le moment réel de la soumission des données de transaction à notre plateforme.
- Recevez un délai pour obtenir les résultats des transactions/opérations de maintenance. Cela dépend du so-called "daily cut-off time" de votre acquéreur : Nous recevons les résultats réels des transactions par intervalles pour toutes les transactions soumises dans un cadre temporel précis.
Les chapitres suivants couvrent une vue d'ensemble à haut niveau d'un flux typique. Il décrit toutes les étapes que vous devez suivre pour le traitement des transactions Batch. Retrouvez une vue d'ensemble détaillée dans ce chapitre.
Contrairement à d'autres méthodes d'intégration, Batch utilise des points de terminaison API individuels pour les différentes étapes du flux de traitement par lots.
- Envoyer une requête SubmitBatch
- Traiter la réponse SubmitBatch
- Envoyer une requête Process
- Obtenir le statut de traitement du lot
Envoyer une requête SubmitBatch
Vous envoyez une requête SubmitBatch à notre plateforme, contenant les données pertinentes dans le corps de la requête. Batch prend en charge deux catégories de cas d'utilisation :
- Traitement de nouvelles transactions (en utilisant des données de carte ou des jetons).
- Réalisation d'opérations de maintenance sur des transactions existantes.
En fonction du cas d'utilisation, la requête doit contenir des propriétés spécifiques. Trouvez différents exemples pour chacun dans notre chapitre dédié.
URLs de points de terminaison en test / direct
- URL de point de terminaison TEST : https://payment.preprod.direct.worldline-solutions.com/v2/{merchantId}/merchant-batches
- URL de point de terminaison PRODUCTION : https://payment.direct.worldline-solutions.com/v2/{merchantId}/merchant-batches
Remplacez "{merchantId}" par votre compte test/en direct sur notre plateforme. En savoir plus sur le "merchantId" dans notre glossaire.
- Cette première étape ne représente que le début du processus de transaction. Vous devez suivre toutes les étapes suivantes pour réellement traiter les transactions/realiser des opérations de maintenance.
- Ne mélangez pas les cas d'utilisation dans une charge utile de requête. Soumettez toujours une requête distincte par cas d'utilisation.
- Sachez que certaines erreurs ou informations manquantes/incorrectes pourraient ne pas être remarquées lorsque vous soumettez une requête. Après avoir traité la requête, notre plateforme la vérifiera à nouveau, et tout problème détecté alors pourrait entraîner l'échec de la transaction.
Traiter la réponse SubmitBatch
Notre plateforme envoie une réponse contenant des informations sur la requête :
{
"merchantBatchReference": "unique-batch-reference",
"totalCount": 0
}
Propriétés | Description |
---|---|
merchantBatchReference | La référence unique du marchand pour le lot. Assurez-vous d'envoyer une valeur pour chaque requête afin de la rendre identifiable parmi d'autres requêtes. Vous utiliserez cette référence dans les requêtes ultérieures pour les actions de suivi. |
totalCount | Nombre total d'enregistrements que vous avez soumis dans la requête Batch. |
Envoyer une requête Process
Pour traiter réellement les transactions/opérations de maintenance à partir des données soumises précédemment dans un délai de 12 heures, vous devez en donner l'instruction à notre plateforme.
Sachez que vous devez traiter un lot précédemment soumis dans les 12 heures. Après cette période, notre plateforme supprimera le lot.
Envoyez une requête avec un corps vide à notre point de terminaison Process, en remplaçant {merchantBatchReference} par la valeur que vous avez définie dans la requête SubmitBatch précédente.
URLs des points de terminaison en test / production (Méthode : POST)
- Test : https://payment.preprod.direct.worldline-solutions.com/v2/{merchantId}/merchant-batches/{merchantBatchReference}/process
- Production : https://payment.direct.worldline-solutions.com/v2/{merchantId}/merchant-batches/{merchantBatchReference}/process
Si notre plateforme ne peut pas traiter la requête du lot pour une raison quelconque, la réponse de notre plateforme fournit des informations via ces propriétés :
Propriétés | Description |
---|---|
errorId |
L'identifiant unique de votre requête sur notre plateforme. Si vous avez besoin de notre aide pour résoudre l'erreur liée à cette requête, veillez à l'ajouter dans votre message lors de votre contact avec nous. |
errors |
errorCode : Code d'erreur à 8 chiffres. category : Description lisible de la catégorie d'erreur globale. httpStatusCode : Code d'erreur à 3 chiffres lié aux codes de statut HTTP standards. id : Description lisible de la catégorie spécifique dans laquelle l'erreur se trouve. message : Description lisible de la catégorie spécifique dans laquelle l'erreur se trouve, fournissant des informations détaillées si disponibles. |
Obtenir le statut de traitement du lot
Obtenez le statut du fichier de lot en envoyant une requête à notre point de terminaison Batches, en remplaçant {merchantBatchReference} par la valeur que vous avez envoyée lors de la soumission de la demande originale :
URLs des points de terminaison en test / live (Méthode : GET)
- Test : https://payment.preprod.direct.worldline-solutions.com/v2/{merchantId}/merchant-batches/{merchantBatchReference}
- Prod : https://payment.direct.worldline-solutions.com/v2/{merchantId}/merchant-batches/{merchantBatchReference}
La réponse de notre plateforme contient diverses propriétés, fournissant des informations sur le lot :
{
"operationType": "CreatePayment",
"merchantBatchReference": "unique-batch-reference",
"itemCount": 1,
"status":"Processed”
}
Propriétés | Description |
---|---|
operationType |
Le type d'opération pour le lot. Valeurs possibles :
|
merchantBatchReference |
L'identifiant unique du lot pour lequel vous avez envoyé la requête. |
itemCount |
Nombre total de transactions/opérations de maintenance pour ce lot. |
status |
Statut du lot soumis. Valeurs possibles :
|
Flux
Découvrez un flux de transaction complet impliquant chaque partie et les étapes (facultatives) dans cet aperçu :
- Votre client se rend sur votre page de paiement et saisit ses données de carte de crédit pour finaliser l'achat.
- Vous stockez les données de carte de crédit de vos clients dans votre système ou vous tokenisez les données de carte.
- Vous envoyez une requête SubmitBatch à notre plateforme.
3'(facultatif). Nous effectuons un contrôle de prévention de la fraude. - Notre plateforme effectue un contrôle de validation et envoie la réponse contenant une merchantBatchReference unique.
- Vous envoyez une requête ProcessBatch à notre plateforme pour traiter les transactions/opérations de maintenance du lot.
- Nous traitons les transactions et recevons le résultat de l'acquéreur.
- Vous envoyez une requête statut de traitement du lot à notre plateforme.
- Si la transaction a été réussie, vous pouvez livrer les marchandises / services.
Cas d'utilisation
Batch est une solution polyvalente pour divers cas d'utilisation. Chaque cas d'utilisation vous oblige à ajouter un ensemble spécifique de propriétés obligatoires/facultatives à chaque enregistrement/objet JSON dans la requête.
Nous distinguons entre le traitement de :
Apprenez dans les chapitres suivants comment composer votre requête par lot pour ces différents cas d'utilisation. Assurez-vous de respecter les règles de formatage JSON.
Les données spécifiques à Batch seront supprimées après 540 jours; cependant, nous n'avons pas de contrôle sur les données transactionnelles.
Transactions
Batch vous permet de traiter de nouvelles transactions en tant que :
- Transactions ponctuelles autonomes avec données de carte/Google Pay/Apple Pay/PaypPal.
- Transactions initiées par le marchand (MIT) avec un token.
- Transactions initiées par le marchand (MIT) avec un payment.id
Transactions ponctuelles autonomes avec données de carte
Votre JSON doit contenir un tableau de createPayment alors que chaque élément dans le tableau représente une transaction :
{
"header": {
"operationType": "CreatePayment",
"merchantBatchReference": "unique-batch-reference",
"itemCount": 1
},
"createPayment": [
{
"cardPaymentMethodSpecificInput": {
"card": {
"cardNumber": "4330264936344675",
"cvv": "031",
"expiryDate": "1231",
"cardholderName": "Jacqueline"
},
"paymentProductId": 1,
"transactionChannel": "ECOMMERCE",
"authorizationMode": "FINAL_AUTHORIZATION"
},
"order": {
"amountOfMoney": {
"amount": 5600,
"currencyCode": "EUR"
},
"references": {
"merchantReference": "merchant-reference"
}
}
}
]
}
Transactions ponctuelles autonomes avec Apple Pay / Google Pay / PayPal
Votre JSON doit contenir un tableau de createPayment alors que chaque élément dans le tableau représente une transaction :
Apple Pay
{
"header": {
"operationType": "CreatePayment",
"merchantBatchReference": "unique-batch-reference",
"itemCount": 1 },
"CreatePayment": [
{
"mobilePaymentMethodSpecificInput": {
"decryptedPaymentData": {
"dpan": "4818528900107388",
"cryptogram": "AswbnTMABpY6sli9HcJ4MAABAAA=",
"expiryDate": "1225"
},
"paymentProductId": 302
},
"order": {
"amountOfMoney": {
"amount": 4000,
"currencyCode": "EUR"
}
}
}
]
}
Google Pay
{
"header": {
"operationType": "CreatePayment",
"merchantBatchReference": "unique-batch-reference",
"itemCount": 1
},
"CreatePayment": [ {
"mobilePaymentMethodSpecificInput": {
"authorizationMode": "FINAL_AUTHORIZATION", "encryptedPaymentData":"{\"signature\":\"MEQCIDIao18aBBvuNN9VsSr3wyPXNObNnepYZemTXPXeKcssAiAsFzc1Yisg2eNKDRKJ3yNXTFQdGnpyl6f5NoZubnMpnQ\\u003d\\u003d\",\"intermediateSigningKey\":{\"signedKey\":\"{\\\"keyValue\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh2zEJsD/Wih76B54p32bVC7usW0FaaTjFteg4wHFUd9fnwFu/009ZfUQJ1ZSLc7QMrwYm+M95IjOtYXFQOODIA\\\\u003d\\\\u003d\\\",\\\"keyExpiration\\\":\\\"1747347367330\\\"}\",\"signatures\":[\"MEQCIBD8dSW5JBd7AcDY3bUFhTrGSR+UjOSzqExbYBu+PnZGAiBM7XEEuw3s1+fxqLIgS81+kkJ2/b2y58VBuuRU/TDiVg\\u003d\\u003d\"]},\"protocolVersion\":\"ECv2\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"QCPEJcoxB3NJ29wIn4oTfVrkbGY6ru8b6Ts0dxB/WRgGDSN9N5udggmqcmECi+2VH7XJUJQhxqh+Y5VZTIQTdkM9kjUpUa2lgF5bdYvqAiTTMdhOu45s6YAdivvxsDZ9yNDaxS2XLmOJ1FsCjQWu4HEwJnuOuTzAnX86lhjt2RFx7RNgh4CUAcobpjV5qGwIeul1qjK5Z+fe/GRt4b5uN12rToiIOD06r5moxOruJPiMKX4EDTAzcTYZb1t97b7GKuptOvTeQGESgeeegW68WWeKlmFQTgBB4L0DlO8C4pS5rjNqLc5Mwf8NVh/EpXToPgRh2HlzQjGbqYUn3jCbamsLkRZhYC/VR1RJzk6jfYIjAA+lK593ObaJhpZodnH+BDtckR01rnWBxLxc6tW2GIwB58MTikcOQOY6hMTL4nBDQyRalH/v3wv0wNWZIQ6j0yePkJ8Ru/sKHrU6Du1TRqrKCC60Yxh/4v1r9/weQlGxarDkTdzuMFDodR+XqcY7aHEnw1XiP3M0apiCmo8/bVoVOPc/8GKwaIL+iWZs6ZtJn6tBOR09n6SVEYU\\\\u003d\\\",\\\"ephemeralPublicKey\\\":\\\"BJP8phYq1EG8JxMs9B+u/3cHPcb9ErRhHuqsGocOcPQY5FCXB40NywL+4yfTzOvzmkp4vshBHOimd/5P1uFyJNo\\\\u003d\\\",\\\"tag\\\":\\\"gWSqgM+uLZfFYlWzDwqnvVBD6v6cjaexXFkWzq1gEqk\\\\u003d\\\"}\"}",
"paymentProductId": 320
},
"order": {
"amountOfMoney": {
"currencyCode": "EUR",
"amount": 3000
},
"references": {
"merchantReference": "merchant-reference"
}
}
}
]
}
PayPal
{
"header": {
"operationType": "CreatePayment",
"merchantBatchReference": "unique-batch-reference",
"itemCount": 1
},
"CreatePayment": [
{
"order": {
"amountOfMoney": {
"currencyCode": "EUR",
"amount": 2980
},
"references": {
"merchantReference": "merchant-reference"
}
},
"redirectPaymentMethodSpecificInput": {
"requiresApproval": true,
"token": "586a14a88b0044a4becb6918f1a27fca"
}
}
]
}
Les connexions de serveur à serveur exigent que vos systèmes traitent les données de carte à un moment donné. Cette méthode implique un très grand nombre d'exigences PCI.
Cependant, vous pouvez considérablement réduire l'étendue de votre évaluation et le nombre d'exigences PCI : Remplacez le numéro de carte par un token. Cela vous permet de déléguer entièrement la gestion des données de carte à notre plateforme.
Transactions initiées par le marchand (MIT) avec un token
Assurez-vous de suivre les directives Card On File pour ce cas d'utilisation.
Votre JSON doit contenir un tableau de createPayment alors que chaque élément dans le tableau représente une transaction. Remplacez les données sensibles de la carte par un token :
{
"header": {
"operationType": "CreatePayment",
"merchantBatchReference": "unique-batch-reference",
"itemCount": 1
},
"createPayment": [
{
"cardPaymentMethodSpecificInput": {
"token": "52f6764169fb419785643a9a9751a33c",
"authorizationMode": "FINAL_AUTHORIZATION",
"transactionChannel": "ECOMMERCE",
"paymentProductId": 3,
"unscheduledCardOnFileRequestor": "merchantInitiated",
"unscheduledCardOnFileSequenceIndicator": "subsequent"
},
"order": {
"amountOfMoney": {
"amount": 5600,
"currencyCode": "EUR"
}
}
}
]
}
Bien que les directives Card On File ne permettent normalement pas de traiter des MITs avec un token, Batch prend en charge ce cas d'utilisation.
Cependant, cela nécessite d'assurer que le principe de liaison dynamique est appliqué dans votre requête. Selon l'origine du token, des différences s'appliquent :
- Si vous avez créé le token via un CIT sur notre plateforme, nous prendrons en charge la liaison dynamique. Vous n'aurez pas besoin de modifier le JSON mentionné ci-dessus.
- Si vous avez créé le token sur une plateforme différente, vous devez inclure la propriété schemeReferenceData dans le JSON.
Indépendamment de l'origine du token, Batch ne prend pas encore en charge les cas d'utilisation de pratiques industrielles.
Transactions initiées par le marchand (MIT) avec un payment.id
Assurez-vous de suivre les directives Card On File pour ce cas d'utilisation. Votre JSON doit contenir un tableau de subsequentPayment où chaque élément du tableau représente une transaction :
{
"header": {
"operationType": "SubsequentPayment",
"merchantBatchReference": "unique-batch-reference",
"itemCount": 1
},
"subsequentPayment": [
{
"paymentId": "48901070_0",
"subsequent": {
"subsequentCardPaymentMethodSpecificInput": {
"subsequentType": "Recurring"
},
"order": {
"amountOfMoney": {
"amount": 1000,
"currencyCode": "EUR"
},
"references": {
"merchantReference": "merchant-reference"
}
}
}
}
]
}
Opérations de maintenance
Batch vous permet de :
Annulations
Créez un JSON avec un tableau de cancelPayment où chaque élément du tableau représente une annulation. Référez-vous à chaque transaction via la propriété paymentId.
{
"header": {
"operationType": "CancelPayment",
"merchantBatchReference": "unique-batch-reference",
"itemCount": 1,
},
"cancelPayment": [
{
"paymentId": "30660197300_0",
"cancel": {
"amountOfMoney": {
"amount": 1000,
"currencyCode": "EUR"
},
"isFinal": true
}
}
]
}
Captures
Créez un JSON avec un tableau de capturePayment où chaque élément du tableau représente une capture. Référez-vous à chaque transaction via la propriété paymentId.
{
"header": {
"operationType": "CapturePayment",
"merchantBatchReference": "unique-batch-reference",
"itemCount": 1
},
"capturePayment": [
{
"paymentId": "30660197300_0",
"capture": {
"amount": 0,
"isFinal": true,
"operationReferences": {
"merchantReference": "merchant-reference"
}
}
}
]
}
Remboursements
Créez un JSON avec un tableau de refundPayment où chaque élément du tableau représente un remboursement. Référez-vous à chaque transaction via la propriété paymentId.
{
"header": {
"operationType": "RefundPayment",
"merchantBatchReference": "unique-batch-reference",
"itemCount": 1
},
"refundPayment": [
{
"paymentId": "30660197300_0",
"refund": {
"amountOfMoney": {
"amount": 1000,
"currencyCode": "EUR"
},
"operationReferences": {
"merchantReference": "merchant-reference"
}
}
}
]
}