Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Automatisation des opérations financières
Plateformes et places de marché
Gestion de fonds
Outils de développement
Démarrer
Paiements
Automatisation des opérations financières
Démarrer
Paiements
Automatisation des opérations financières
Plateformes et places de marché
Gestion de fonds
Aperçu
À propos des paiements Stripe
Mettre votre intégration à niveau
Analyses des paiements
Paiements en ligne
PrésentationTrouver votre cas d'usageManaged Payments
Utiliser Payment Links
Créer une page de paiement
Développer une intégration avancée
Développer une intégration dans l'application
Moyens de paiement
Ajouter des moyens de paiement
    Présentation
    Options d'intégration des moyens de paiement
    Gérer les moyens de paiement par défaut dans le Dashboard
    Types de moyens de paiement
    Cartes bancaires
    Prélèvements bancaires
    Virements avec redirection bancaire
      Bancontact
      BLIK
      EPS
      FPX
      iDEAL
      Przelewy24
      Sofort
        Supprimer et remplacer SOFORT
        Accepter un paiement
        Enregistrer les coordonnées bancaires lors du paiement
        Configurer des paiements futurs
      TWINT
    Virements bancaires
    Virements (Sources)
    Achetez maintenant, payez plus tard
    Paiements en temps réel
    Coupons
    Portefeuilles
    Activer des moyens de paiement locaux par pays
    Moyens de paiement personnalisés
Gérer les moyens de paiement
Paiement accéléré avec Link
Interfaces de paiement
Payment Links
Checkout
Web Elements
Elements intégrés à l'application
Scénarios de paiement
Tunnels de paiement personnalisés
Acquisition flexible
Orchestration
Paiements par TPE
Terminal
Autres produits Stripe
Financial Connections
Cryptomonnaies
Climate
AccueilPaiementsAdd payment methodsBank redirectsSOFORT

Accepter un paiement Sofort

Découvrez comment accepter les paiements effectués à l'aide de Sofort, un moyen de paiement très répandu en Europe.

Copier la page

Avertissement

SOFORT has been discontinued as of March 31, 2025. For more information, read our support page.

Mise en garde

Nous vous recommandons de suivre le guide Accepter un paiement, sauf si vous devez exécuter la confirmation manuelle côté serveur, ou si votre intégration requiert la présentation de moyens de paiement de manière distincte. Si vous avez déjà intégré Elements, consultez le Guide de migration du Payment Element.

Sofort est un moyen de paiement à usage unique et à notification différée avec lequel le client doit authentifier son paiement. Le client paie avec Sofort en étant redirigé depuis votre application vers le portail de sa banque afin qu’il authentifie le paiement. Le client reçoit généralement la notification d’échec ou de réussite sous 2 à 14 jours.

Remarque

Pour accepter Sofort, vous devez respecter les Conditions d’utilisation du service Sofort.

Configurer Stripe
Côté serveur
Côté client

Tout d’abord, il vous faut un compte Stripe. Inscrivez-vous.

Côté serveur

Pour cette intégration, votre serveur doit être doté d’endpoints qui communiquent avec l’API Stripe. Utilisez les bibliothèques officielles pour accéder à l’API Stripe depuis votre serveur :

Command Line
Ruby
# Available as a gem sudo gem install stripe
Gemfile
Ruby
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Côté client

Le SDK iOS de Stripe est disponible en open source et fait l’objet d’une documentation complète. Il est également compatible avec les applications prenant en charge iOS 13 et les versions ultérieures.

Pour installer le SDK, veuillez suivre les étapes ci-dessous :

  1. In Xcode, select File > Add Package Dependencies… and enter https://github.com/stripe/stripe-ios-spm as the repository URL.
  2. Sélectionnez le dernier numéro de version, visible sur notre page des versions.
  3. Ajoutez le produit StripePaymentsUI à la cible de votre application.

Remarque

For details on the latest SDK release and past versions, see the Releases page on GitHub. To receive notifications when a new release is published, watch releases for the repository.

Configurez le SDK avec votre clé publiable Stripe au démarrage de votre application. Cela lui permet d’envoyer des requêtes à l’API Stripe.

AppDelegate.swift
Swift
import UIKit import StripePaymentsUI @main class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { StripeAPI.defaultPublishableKey =
"pk_test_TYooMQauvdEDq54NiTphI7jx"
// do any other necessary launch configuration return true } }

Remarque

Use your test keys while you test and develop, and your live mode keys when you publish your app.

Créer un PaymentIntent
Côté serveur

Un PaymentIntent représente votre intention d’encaisser un paiement auprès d’un client et suit le cycle de vie du processus de paiement.

Côté serveur

Créez un PaymentIntent sur votre serveur et précisez le montant amount à encaisser ainsi que la devise eur (Sofort ne prend en charge aucune autre devise). Si vous avez déjà une intégration Payment Intents, ajoutez sofort à la liste des types de moyens de paiement.

Command Line
cURL
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=eur \ -d "payment_method_types[]"=sofort

Modification de la langue préférée

Par défaut, Stripe affiche la page d’autorisation de Sofort dans la langue correspondant au code pays spécifié. Vous pouvez remplacer cette langue par la langue préférée de votre client en précisant ce choix dans la requête et en modifiant la valeur de la propriété preferred_language. Les valeurs prises en charge sont de, en, es, it, fr, nl et pl.

Command Line
cURL
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=eur \ -d "payment_method_types[]"=sofort \ -d "payment_method_options[sofort][preferred_language]"=de

Au lieu de transmettre à l’application la totalité de l’objet PaymentIntent, renvoyez sa clé secrète du client. Il s’agit d’une clé unique qui vous permet de confirmer le paiement et d’actualiser les informations de paiement côté client, le tout sans autoriser la manipulation d’informations sensibles comme le montant du paiement.

Côté client

Côté client, demandez un PaymentIntent depuis votre serveur et sauvegardez la clé secrète du client.

CheckoutViewController.swift
Swift
Afficher l'exemple dans son intégralité
class CheckoutViewController: UIViewController { var paymentIntentClientSecret: String? func startCheckout() { // Request a PaymentIntent from your server and store its client secret } }

Envoyer le paiement à Stripe
Côté client

Lorsqu’un client appuie sur le bouton permettant de payer avec Sofort, confirmez le PaymentIntent pour finaliser le paiement. Configurez un objet STPPaymentIntentParams avec la clé secrète du client du PaymentIntent côté serveur. Sofort nécessite que vous recueilliez le code pays de la banque de votre client et que vous le transmettiez dans le paramètre STPPaymentMethodSofortParams.

Plutôt que d’envoyer la totalité de l’objet PaymentIntent au client, utilisez sa clé secrète. Il ne s’agit pas de la même chose que vos clés API qui authentifient les requêtes de l’API de Stripe. La clé secrète du client est une chaîne qui permet à votre application d’accéder à des champs importants du PaymentIntent (par exemple, status) tout en masquant les champs sensibles (par exemple, customer).

Configurer une URL de redirection

Le SDK iOS peut présenter une vue Web dans votre application pour effectuer le paiement Sofort. Une fois l’authentification effectuée, la vue Web peut disparaître automatiquement au lieu que ce soit votre client qui la ferme. Pour cela, configurez une URL personnalisée ou un lien universel et configurez votre délégation d’application de façon à transférer l’URL au SDK.

Swift
// This method handles opening custom URL schemes (for example, "your-app://stripe-redirect") func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { let stripeHandled = StripeAPI.handleURLCallback(with: url) if (stripeHandled) { return true } else { // This was not a Stripe url – handle the URL normally as you would } return false } // This method handles opening universal link URLs (for example, "https://example.com/stripe_ios_callback") func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { if userActivity.activityType == NSUserActivityTypeBrowsingWeb { if let url = userActivity.webpageURL { let stripeHandled = StripeAPI.handleURLCallback(with: url) if (stripeHandled) { return true } else { // This was not a Stripe url – handle the URL normally as you would } } } return false }

Appelez STPPaymentHandler confirmPayment pour finaliser le paiement.

Swift
let paymentIntentParams = STPPaymentIntentParams(clientSecret: paymentIntentClientSecret) let sofort = STPPaymentMethodSofortParams() sofort.country = "DE" paymentIntentParams.paymentMethodParams = STPPaymentMethodParams(sofort: sofort, billingDetails: nil, metadata: nil) paymentIntentParams.returnURL = "payments-example://stripe-redirect" STPPaymentHandler.shared().confirmPayment(paymentIntentParams, with: self) { (handlerStatus, paymentIntent, error) in switch handlerStatus { case .succeeded: // Payment succeeded // ... case .canceled: // Payment canceled // ... case .failed: // Payment failed // ... @unknown default: fatalError() } }

Gérer les événements post-paiement

As Sofort is a delayed notification payment method, the PaymentIntent’s status remains in a payment_intent.processing state for up to 14 days from its creation (also known as the cutoff date). In a sandbox, the PaymentIntent’s status remains in the processing state for three minutes to simulate this.

  • Stripe recommande d’exécuter les achats pendant l’état de traitement. En moyenne, vous pouvez vous attendre à ce que 0,2 % des tentatives de paiement Sofort échouent après avoir atteint l’état de traitement. Cette recommandation s’applique uniquement aux paiements Sofort en raison de son faible taux d’échec et ne s’applique pas aux autres moyens de paiement avec notification différée.
  • Vous préférez peut-être n’exécuter les commandes qu’après avoir reçu l’événement payment_intent.succeeded. Stripe envoie cet événement après que la tentative de paiement a été confirmée et que les fonds sont garantis.
  • Si un client n’effectue pas le paiement, Stripe envoie l’événement payment_intent.failed et le PaymentIntent repasse à l’état requires_payment_method.

Utilisez le Dashboard, un webhook personnalisé ou une solution partenaire pour recevoir ces événements et exécuter des actions, comme envoyer une confirmation de commande par e-mail à votre client, enregistrer la vente dans une base de données ou lancer un workflow de livraison.

Manuellement

Utilisez le Dashboard Stripe pour consulter tous vos paiements Stripe, envoyer des reçus par e-mail, gérer les virements et réessayer d’effectuer les paiements ayant échoué.

  • Afficher vos paiements tests dans le Dashboard

Code personnalisé

Créez un gestionnaire de webhooks pour écouter des événements et créer des tunnels de paiement asynchrones personnalisés. Testez et déboguez votre intégration de webhooks en local, grâce à la CLI Stripe.

  • Créer un webhook personnalisé

Applications préconfigurées

Intégrez une application partenaire pour gérer les événements métier courants, comme l’automatisation, le marketing ou les ventes.

Paiements contestés

Le risque de fraude ou de paiements non reconnus est faible, car le client doit authentifier son paiement auprès de sa banque. Par conséquent, vous n’aurez pas à gérer de litiges qui se transforment en contestations de paiement avec retrait des fonds de votre compte Stripe.

Tentatives ayant échoué

Si une tentative de paiement n’a pas été confirmée dans le temps imparti, l’état de l’objet PaymentIntent bascule automatiquement de processing à requires_payment_method. De plus si les fonds sont reçus après la date limite, le client reçoit automatiquement un remboursement.

En moyenne, environ 0,2 % des tentatives de paiement Sofort échouent. Ce chiffre varie en fonction de votre secteur ou de votre base de clients. En fonction du montant moyen de paiement que vous enregistrez, du type de produits ou de services que vous offrez et du risque associé à votre activité, il peut être plus judicieux de traiter les commandes uniquement après avoir reçu l’événement payment_intent.succeeded.

Remboursements

Sofort accepte uniquement les demandes de remboursement dans les 180 jours suivant la date du débit initial. Passé ce délai, le remboursement du paiement n’est plus possible.

Vous pouvez soumettre un remboursement pour les paiements en attente qui n’ont pas encore été confirmés. Si vous créez un remboursement partiel ou complet pour un PaymentIntent dont l’état est processing, le remboursement est exécuté uniquement une fois que l’état a basculé sur succeeded. Si l’état du PaymentIntent est requires_payment_method après l’échec d’une tentative de paiement, les remboursements partiels et complets sont marqués comme annulés, puisque les fonds n’ont jamais quitté le compte bancaire du client.

Cette page vous a-t-elle été utile ?
OuiNon
Besoin d'aide ? Contactez le service Support.
Rejoignez notre programme d'accès anticipé.
Consultez notre log des modifications.
Des questions ? Contactez l'équipe commerciale.
LLM ? Lire llms.txt.
Propulsé par Markdoc