Aller au contenu principal

Integration serveur a serveur

La solution serveur a serveur permet l'echange direct de donnees de transaction entre votre serveur et la plateforme de paiement Worldline. Cela vous donne un controle total sur l'experience client tout en gerant les paiements directement.

Avantages

  • Controle total - Concevez votre propre page de paiement
  • Experience fluide - Les clients restent dans votre environnement
  • Flexibilite - Personnalisation complete du flux de paiement
Conformite PCI DSS

Cette methode implique la manipulation de donnees de carte, ce qui necessite la conformite PCI DSS. Envisagez d'utiliser la Tokenisation hebergee pour reduire significativement votre perimetre PCI.

Prerequis

Avant d'implementer cette integration, assurez-vous d'avoir :

  1. Un compte Worldline Direct actif
  2. Au moins une methode de paiement activee dans le Portail Marchand
  3. Une cle API et un secret API configures
  4. La conformite PCI DSS (si vous manipulez directement les donnees de carte)
  5. Un serveur capable de traiter les requetes API RESTful

Flux d'integration

Implementation etape par etape

Etape 1 : Initialiser le SDK

Configurez votre SDK serveur avec vos identifiants :

var configuration = new CommunicatorConfiguration
{
ApiEndpoint = new Uri("https://payment.preprod.direct.worldline-solutions.com"),
AuthorizationType = AuthorizationType.V1HMAC,
ApiKeyId = "YOUR_API_KEY",
SecretApiKey = "YOUR_API_SECRET"
};

var client = Factory.CreateClient(configuration);

Points d'acces des environnements :

EnvironnementURL
Testhttps://payment.preprod.direct.worldline-solutions.com
Productionhttps://payment.direct.worldline-solutions.com

Etape 2 : Creer une requete de paiement

Collectez les informations de carte depuis votre page de paiement et envoyez une requete CreatePayment :

var body = new CreatePaymentRequest
{
Order = new Order
{
AmountOfMoney = new AmountOfMoney
{
Amount = 2980,
CurrencyCode = "EUR"
},
Customer = new Customer
{
MerchantCustomerId = "customer123",
ContactDetails = new ContactDetails
{
EmailAddress = "customer@example.com"
},
BillingAddress = new Address
{
CountryCode = "NL",
City = "Amsterdam"
}
},
References = new OrderReferences
{
MerchantReference = "order-12345"
}
},
CardPaymentMethodSpecificInput = new CardPaymentMethodSpecificInput
{
PaymentProductId = 1, // Visa
Card = new Card
{
CardNumber = "4111111111111111",
Cvv = "123",
ExpiryDate = "1225",
CardholderName = "John Doe"
},
ThreeDSecure = new ThreeDSecure
{
RedirectionData = new RedirectionData
{
ReturnUrl = "https://yoursite.com/return"
}
}
}
};

var response = await client.WithNewMerchant("YOUR_MERCHANT_ID")
.Payments
.CreatePaymentAsync(body);

Etape 3 : Gerer la reponse

La reponse inclut un objet merchantAction qui indique la prochaine etape :

{
"payment": {
"id": "000000123400000012340000100001",
"status": "PENDING_AUTHENTICATION",
"statusOutput": {
"statusCode": 50
}
},
"merchantAction": {
"actionType": "REDIRECT",
"redirectData": {
"redirectURL": "https://issuer-bank.com/3ds/authenticate"
}
}
}
ScenariomerchantAction.actionTypeProchaine etape
3DS sans frictionnullTransaction terminee, verifier le statut
Challenge 3DSREDIRECTRediriger le client vers l'URL
Sans 3DSnullTransaction terminee, verifier le statut

Etape 4 : Gerer 3-D Secure (si requis)

Si actionType est REDIRECT, redirigez le client vers l'URL d'authentification :

if (response.merchantAction?.actionType === 'REDIRECT') {
window.location.href = response.merchantAction.redirectData.redirectURL;
}

Apres l'authentification, le client revient a votre returnUrl.

Etape 5 : Recuperer le statut du paiement

Apres le retour du client, recuperez le statut final du paiement :

var paymentDetails = await client.WithNewMerchant("YOUR_MERCHANT_ID")
.Payments
.GetPaymentDetailsAsync(paymentId);

var statusCode = paymentDetails.StatusOutput.StatusCode;

Etape 6 : Afficher les resultats

Gerez le statut du paiement de maniere appropriee :

Code de statutSignificationAction
0-99En attenteAfficher le message de traitement
100-199AutoriseConfirmer la commande, capturer plus tard
500-599RejeteAfficher l'erreur, proposer de reessayer
800-899CaptureConfirmer et executer la commande

Utilisation des tokens

Reduisez le perimetre PCI en utilisant des tokens au lieu des donnees de carte brutes :

Tokens permanents (Carte enregistree)

Stockez les cartes des clients pour les achats futurs :

CardPaymentMethodSpecificInput = new CardPaymentMethodSpecificInput
{
Token = "stored_token_from_previous_transaction"
}

Tokens temporaires (Tokenisation hebergee)

Utilisez des tokens temporaires de la Page de tokenisation hebergee :

CardPaymentMethodSpecificInput = new CardPaymentMethodSpecificInput
{
Token = "temporary_token_from_tokenization"
}
Approche recommandee

L'utilisation de tokens reduit significativement vos exigences de conformite PCI DSS tout en maintenant une experience de paiement fluide.

Webhooks

Implementez les webhooks pour des notifications de statut de paiement fiables :

[HttpPost("webhook")]
public IActionResult HandleWebhook([FromBody] WebhookEvent webhookEvent)
{
var payment = webhookEvent.Payment;
var paymentId = payment.Id;
var statusCode = payment.StatusOutput.StatusCode;

// Mettre a jour le statut de la commande dans votre base de donnees
UpdateOrderStatus(paymentId, statusCode);

return Ok();
}
Important

Les webhooks sont asynchrones. Utilisez-les toujours comme mecanisme de notification de secours, pas pour les decisions de paiement en temps reel.

Bonnes pratiques

  1. Utiliser les tokens - Minimisez le perimetre PCI en utilisant la tokenisation
  2. Implementer 3-D Secure - Incluez toujours les proprietes 3DS pour les paiements par carte
  3. Inclure l'email du client - Requis pour le suivi des conversions dans MyPerformance
  4. Utiliser des references coherentes - Gardez merchantReference coherent pour les analyses
  5. Gerer tous les statuts - Implementez une gestion appropriee pour tous les resultats possibles
  6. Configurer les webhooks - Ne comptez jamais uniquement sur les redirections de retour

SDKs client

Pour collecter les informations de carte cote client :

PlateformeSDK
JavaScriptGitHub
iOS (Swift)GitHub
AndroidGitHub
Flutterpub.dev
React Nativenpm

Prochaines etapes