Eine Affirm-Zahlung annehmen
So akzeptieren Sie die "Jetzt kaufen, später bezahlen"-Zahlungsmethode Affirm.
Notiz
Diese Anleitung hilft Ihnen dabei, Affirm in Ihren Online-Bezahlvorgang zu integrieren. Für persönliche Zahlungen mit Stripe Terminal besuchen Sie Zusätzliche Zahlungsmethoden.
Stripe-Nutzer/innen können die Payment Intents API – einen zentralen Integrationspfad für die Erstellung von Zahlungen mit einer beliebigen unterstützten Methode – verwenden, um Zahlungen per Affirm von Kundinnen/Kunden aus folgenden Ländern anzunehmen:
- Kanada
- Vereinigte Staaten
Die Annahme von Affirm-Zahlungen auf Ihrer Website umfasst Folgendes:
- Objekt zur Zahlungsverfolgung erstellen
- Informationen zur Zahlungsmethode erfassen
- Zahlung zur weiteren Verarbeitung an Stripe übermitteln
- Umgang mit der Affirm-Weiterleitung und relevanten Webhook-Ereignissen
Stripe einrichtenServerseitig
Erstellen Sie zunächst ein Stripe-Konto oder melden Sie sich an.
Verwenden Sie unsere offiziellen Bibliotheken, um von Ihrer Anwendung aus auf die Stripe API zuzugreifen:
PaymentIntent erstellenServerseitig
Ein PaymentIntent ist ein Objekt, das Ihre Absicht, eine Kundenzahlung einzuziehen, darstellt und den gesamten Zahlungsvorgang dokumentiert.
Erstellen Sie zunächst einen PaymentIntent auf Ihrem Server und geben Sie den einzuziehenden Betrag und die Währung an. Wenn Sie bereits eine Integration mit der Payment Intents API haben, fügen Sie Affirm zur Liste der Zahlungsmethoden-Typen für Ihren PaymentIntent hinzu:
Sie können auch das Payment Element verwenden und Zahlungsmethoden über das Dashboard verwalten. Stripe handhabt die Rückgabe geeigneter Zahlungsmethoden basierend auf Faktoren wie Betrag, Währung und Zahlungsablauf der Transaktion. Weitere Informationen finden Sie unter Zahlung akzeptieren.
Client-Geheimnis abrufen
Im PaymentIntent ist ein Client-Geheimnis enthalten, das auf dem Client verwendet wird, um Zahlungen sicher abzuschließen. Es gibt verschiedene Verfahren zum Übergeben des Client-Geheimnisses an den Client.
Angaben zur Zahlungsmethode erfassen und weitergebenClientseitig
Wenn Kundinnen/Kunden über das „Click to Pay“-Verfahren mit Affirm bezahlen, empfehlen wir Ihnen, Stripe.js zu verwenden, um die Zahlung an Stripe zu übermitteln. Stripe.js ist unsere grundlegende JavaScript-Bibliothek für die Erstellung von Zahlungsabläufen. Sie übernimmt automatisch komplexe Integrationsaufgaben und ermöglicht es Ihnen, Ihre Integration in Zukunft unkompliziert um andere Zahlungsmethoden zu erweitern.
Fügen Sie das Stripe.js-Skript auf Ihrer Bezahlseite ein, indem Sie es zum Header der HTML-Datei hinzufügen.
<head> <title>Checkout</title> <script src="https://js.stripe.com/clover/stripe.js"></script> </head>
Erstellen Sie auf Ihrer Zahlungsseite eine Instanz von Stripe.js mit dem folgenden JavaScript.
// Set your publishable key. Remember to change this to your live publishable key in production! // See your keys here: https://dashboard.stripe.com/apikeys var stripe = Stripe();'pk_test_TYooMQauvdEDq54NiTphI7jx'
Anstatt das gesamte PaymentIntent-Objekt an den Client zu senden, verwenden Sie dessen Client-Geheimnis aus Schritt 1. Dieses unterscheidet sich von Ihren API-Schlüsseln, mit denen Anfragen der Stripe-API authentifiziert werden.
Gehen Sie vorsichtig mit dem Client-Geheimnis um, da es die Zahlung abschließen kann. Sie dürfen nicht protokolliert, in URLs eingebettet oder Personen außer dem Kunden selbst zugänglich gemacht werden.
Zahlungserfolgsquoten mit zusätzlichen Details verbessern
Wir empfehlen die Übergabe von Versand- und Abrechnungs-Details, um die Konversionsrate zu verbessern. Dies ist jedoch nicht erforderlich.
In diesem Integrationsleitfaden wird vorgeschlagen, die Versand- und Rechnungsinformationen auf dem Client zu übergeben, nachdem der/die Kund/in seine/ihre Zahlungsmethode ausgewählt hat.
Wenn Sie diese Felder übergeben, sollte die Versandadresse gültige Daten in den Feldern line1, city, state, postal_ und country enthalten. Ebenso müssen Abrechnungsdetails gültige Daten in den Feldern line1, city, state, postal_ und country aufweisen.
PaymentIntent bestätigen
Verwenden Sie stripe. um die Weiterleitung von Ihrer Seite zu verarbeiten und die Zahlung zu ermöglichen. Sie müssen außerdem eine return_url übergeben, um das Ziel anzugeben, an das Nutzer/innen weitergeleitet werden, nachdem sie die Zahlung auf der Website oder in der App von Affirm durchgeführt haben.
Auf der Zahlungsseite von Affirm wählen die Kund/innen die ihnen zur Verfügung stehenden Zahlungsoptionen aus. Weitere Informationen finden Sie auf der Übersichtsseite. Sie können die Zahlungsoptionen auf der Affirm-Zahlungsseite nicht einschränken oder vorab auswählen. Wenn Sie den Kund/innen diese Wahl überlassen, maximieren Sie ihre Möglichkeiten, Transaktionen mit Ihnen durchzuführen.
// Redirects away from the client stripe.confirmAffirmPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}', { payment_method: { // Billing information is optional but recommended to pass in. billing_details: { email: 'jenny@rosen.com', name: 'Jenny Rosen', address: { line1: '1234 Main Street', city: 'San Francisco', state: 'CA', country: 'US', postal_code: '94111', }, }, }, // Shipping information is optional but recommended to pass in. shipping: { name: 'Jenny Rosen', address: { line1: '1234 Main Street', city: 'San Francisco', state: 'CA', country: 'US', postal_code: '94111', }, }, // Return URL where the customer should be redirected after the authorization. return_url: 'https://example.com/checkout/complete', } ).then(function(result) { if (result.error) { // Inform the customer that there was an error. console.log(result.error.message); } });
Wenn Ihr Kunde/Ihre Kundin eine Zahlung übermittelt, leitet Stripe ihn an die return_ weiter und fügt die folgenden URL-Abfrageparameter ein. Die Rückgabeseite kann diese nutzen, um den Status des PaymentIntent abzurufen, damit der Kunde/die Kundin den Zahlungsstatus anzeigen kann.
Wenn Sie die return_ angeben, können Sie auch Ihre eigenen Abfrageparameter für die Verwendung auf der Rückgabeseite anhängen.
| Parameter | Beschreibung |
|---|---|
payment_ | Die eindeutige ID für den PaymentIntent. |
payment_ | Das Client-Geheimnis des PaymentIntent-Objekts. Bei Abonnementintegrationen wird dieses client_secret auch über confirmation_ im Invoice-Objekt sichtbar gemacht |
Wenn Kundinnen und Kunden auf Ihre Seite weitergeleitet werden, können Sie payment_ nutzen, um den PaymentIntent abzufragen und Ihren Kundinnen und Kunden den Transaktionsstatus anzuzeigen.
Affirm-Integration testen
Testen Sie Ihre Affirm-Integration mit Ihren Test-API-Schlüsseln, indem Sie die Weiterleitungsseite anzeigen. Sie können die erfolgreiche Zahlung testen, indem Sie die Zahlung auf der Weiterleitungsseite authentifizieren. Der PaymentIntent wechselt von requires_ zu succeeded.
Um den Fall zu testen, dass sich der/die Nutzer/in nicht authentifizieren kann, verwenden Sie Ihre Test-API-Schlüssel und rufen Sie die Weiterleitungsseite auf. Klicken Sie auf der Weiterleitungsseite in der oberen linken Ecke auf X. Der PaymentIntent wechselt von requires_ zu requires_.
Bei einer Weiterleitung an die Affirm-Sandbox fragt Sie Affirm möglicherweise nach den letzten 4 Ziffern Ihrer SSN. Affirm schlägt vor, '0000' oder '5678' zu verwenden.
OptionalGetrennte Autorisierung und Erfassung
Affirm unterstützt die getrennte Autorisierung und Erfassung. Wenn es zu einer Verzögerung zwischen der Zahlung und der Auslieferung des Kaufs an Ihre Kundinnen/Kunden kommt, sollten Sie die Zahlung zuerst autorisieren und später erfassen. Zum Zeitpunkt der Erfassung leitet Affirm die Fälligkeitstermine für die nachfolgenden Rückzahlungen auf Kundenseite ein. Sie müssen eine autorisierte Affirm-Zahlung innerhalb von 30 Tagen nach der Autorisierung erfassen. Andernfalls wird die Autorisierung automatisch storniert und Sie können die Zahlung nicht mehr erfassen. Stripe storniert auch den PaymentIntent und sendet dann das payment_intent.canceled-Ereignis.
Notiz
Bei sehr großen Bestellbeträgen kann Affirm während der Autorisierung eine Anzahlung von der Kundin/dem Kunden verlangen. Wenn Sie die Zahlung stornieren oder die Autorisierung abläuft, erstattet Affirm die Anzahlung.
Wenn Sie wissen, dass Sie die Zahlung nicht erfassen können, sollten Sie den PaymentIntent stornieren und nicht warten, bis das Zeitfenster von 30 Tagen abgelaufen ist. Durch die proaktive Stornierung des PaymentIntent wird die erste Rate sofort an die Kundin/den Kunden zurückerstattet, sodass keine Verwirrung hinsichtlich der Zahlungen in ihrer Abrechnung entsteht.
Stripe anweisen, nur die Autorisierung durchzuführen
Um anzugeben, dass Sie Autorisierung und Erfassung trennen möchten, legen Sie capture_method beim Erstellen des PaymentIntent auf manual fest. Dieser Parameter weist Stripe an, nur den Betrag auf dem Affirmt-Konto der Kundin/des Kunden zu autorisieren.
curl https://api.stripe.com/v1/payment_intents \ -u: \ -d "amount"=6000 \ -d "confirm"="true" \ -d "currency"="usd" \ -d "payment_method_types[]"="affirm" \ -d "capture_method"="manual" \ // Shipping address is optional but recommended to pass in. -d "shipping[name]"="Jenny Rosen" \ -d "shipping[address][line1]"="1234 Main Street" \ -d "shipping[address][city]"="San Francisco" \ -d "shipping[address][state]"="CA" \ -d "shipping[address][country]"="US" \ -d "shipping[address][postal_code]"=94111 \ -d "payment_method_data[type]"="affirm" \ -d "return_url"="https://www.example.com/checkout/done"sk_test_BQokikJOvBiI2HlWgH4olfQ2
Die Gelder erfassen
Nach erfolgreicher Autorisierung wechselt der Status des PaymentIntent zu requires_. Um die autorisierten Gelder zu erfassen, führen Sie eine PaymentIntent-Erfassungsanfrage durch. Der autorisierte Gesamtbetrag wird standardmäßig erfasst. Sie können nicht mehr oder weniger als die Summe erfassen.
https://api.stripe.com/v1/payment_intents/{{PAYMENT_INTENT_ID}}/capture \ -u: \sk_test_BQokikJOvBiI2HlWgH4olfQ2
Optional Autorisierung stornieren
Wenn Sie eine Autorisierung stornieren müssen, können Sie den PaymentIntent stornieren.
OptionalAffirm-Weiterleitung manuell handhaben
Wir empfehlen, die Abwicklung von Affirm-Weiterleitungen und -Zahlungen auf der Client-Seite mit confirmAffirmPayment Stripe.js zu überlassen. Wenn Sie Stripe.js verwenden, können Sie Ihre Integration viel einfacher um weitere Zahlungsmethoden erweitern. Sie können Ihre Kund/innen jedoch auch mithilfe der folgenden Schritte manuell an Ihren Server weiterleiten:
Erstellen und bestätigen Sie einen PaymentIntent vom Typ
affirm. Durch Angabe vonpayment_erstellen wir eine PaymentMethod und verwenden sie sofort mit diesem PaymentIntent.method_ data Sie müssen außerdem im Feld
return_die Weiterleitungs-URL angeben, an die Ihre Kund/innen weitergeleitet werden, nachdem sie ihre Zahlung abgeschlossen haben. Sie können in dieser URL Ihre eigenen Abfrageparameter übergeben. Diese Parameter sind bei Abschluss des Weiterleitungsablaufs in der endgültigen URL enthalten.url Command Linecurl https://api.stripe.com/v1/payment_intents \ -u: \ -d "amount"=6000 \ -d "confirm"="true" \ -d "currency"="usd" \ -d "payment_method_types[]"="affirm" \ // Shipping address is optional but recommended to pass in. -d "shipping[name]"="Jenny Rosen" \ -d "shipping[address][line1]"="1234 Main Street" \ -d "shipping[address][city]"="San Francisco" \ -d "shipping[address][state]"="CA" \ -d "shipping[address][country]"="US" \ -d "shipping[address][postal_code]"=94111 \ // Billing details are optional but recommended to pass in. -d "payment_method_data[billing_details][name]"="Jenny Rosen" \ -d "payment_method_data[billing_details][email]"="jenny@example.com" \ -d "payment_method_data[billing_details][address][line1]"="1234 Main Street" \ -d "payment_method_data[billing_details][address][city]"="San Francisco" \ -d "payment_method_data[billing_details][address][state]"="CA" \ -d "payment_method_data[billing_details][address][country]"="US" \ -d "payment_method_data[billing_details][address][postal_code]"=94111 \ -d "payment_method_data[type]"="affirm" \ -d "return_url"="https://example.com/checkout/complete"sk_test_BQokikJOvBiI2HlWgH4olfQ2Der erstellte
PaymentIntenthat den Statusrequires_, und der Typ füraction next_istaction redirect_.to_ url { "status": "requires_action", "next_action": { "type": "redirect_to_url", "redirect_to_url": { "url": "https://hooks.stripe.com/...", "return_url": "https://example.com/checkout/complete" } }, "id": "pi_xxx", "object": "payment_intent", "amount": 6000, "client_secret": "pi_xxx_secret_xxx", "confirm": "true", "confirmation_method": "automatic", "created": 1579259303, "currency": "usd", "livemode": true, "charges": { "data": [], "object": "list", "has_more": false, "url": "/v1/charges?payment_intent=pi_xxx" }, "payment_method_types": [ "affirm" ] }Leiten Sie die Kund/innen an die in der Eigenschaft
next_angegebene URL weiter. Das folgende Codebeispiel ist nur eine Annäherung und kann sich vom Weiterleitungsverfahren in Ihrem Web-Framework unterscheiden.action. redirect_ to_ url. url Wenn der Kunde/die Kundin den Bezahlvorgang abgeschlossen hat, wird er/sie an die in Schritt 1. erstellte
return_weitergeleitet. Die URL-Abfrageparameterurl payment_undintent payment_sind enthalten. Wenn dieintent_ client_ secret return_bereits Abfrageparameter enthält, werden diese ebenfalls beibehalten.url Wir empfehlen die Verwendung von Webhooks, um den Zahlungsstatus zu bestätigen.
OptionalHandhabung von Ereignissen nach der Zahlung
Stripe übermittelt ein payment_intent.succeeded-Ereignis, wenn die Zahlung abgeschlossen ist. Verwenden Sie im Dashboard einen Webhook oder eine Partnerlösung, um diese Ereignisse zu empfangen und Aktionen auszuführen (Versenden einer Bestellbestätigung per E-Mail an die Kund/innen, Erfassen des Verkaufs in einer Datenbank oder Einleiten des Versandablaufs).
Überwachen Sie diese Ereignisse, statt auf einen Callback vom Client zu warten. Auf dem Client könnte der Kunde/die Kundin das Browserfenster schließen oder die App beenden, bevor der Callback erfolgt ist und böswillige Clients könnten die Antwort manipulieren. Wenn Sie Ihre Integration so einrichten, dass asynchrone Ereignisse überwacht werden, hilft Ihnen dies auch dabei, in Zukunft mehr Zahlungsmethoden zu akzeptieren. Hier erhalten Sie Informationen zu den Unterschieden zwischen allen unterstützten Zahlungsmethoden.
Manuelles Bearbeiten von Ereignissen im Dashboard
Verwenden Sie das Dashboard, um Ihre Testzahlungen im Dashboard anzuzeigen, E-Mail-Belege zu senden, Auszahlungen zu bearbeiten oder fehlgeschlagene Zahlungen erneut zu versuchen.
Erstellen eines benutzerdefinierten Webhooks
Erstellen Sie einen benutzerdefinierten Webhook-Handler, um auf Ereignisse zu hören und eigene asynchrone Zahlungsabläufe zu implementieren. Testen und debuggen Sie Ihre Webhook-Integration lokal mit der Stripe CLI.
Integrieren einer vorgefertigten App
Bearbeiten Sie häufige Unternehmensereignisse, wie z. B.Automatisierung oderMarketing und Vertrieb, indem Sie eine Partneranwendung integrieren.
OptionalPayment Method Messaging auf Ihrer Website anzeigen
Das Payment Method Messaging Element ist eine integrierbare Komponente der Nutzeroberfläche, die Ihre Kundinnen/Kunden direkt auf Ihren Produkt-, Warenkorb- oder Zahlungsseiten darüber informiert, welche „Jetzt kaufen, später bezahlen“-Zahlungsoptionen ihnen beim Bezahlvorgang zur Verfügung stehen.
Informationen zum Hinzufügen des Payment Method Messaging Element zu Ihrer Website finden Sie unter Payment Method Messaging anzeigen.

Fehlgeschlagene Zahlungen
Affirm berücksichtigt mehrere Faktoren bei der Entscheidung, ob eine Transaktion akzeptiert oder abgelehnt wird (zum Beispiel die Dauer der Nutzung von Affirm durch den/die Käufer/in, den ausstehenden Betrag, den der/die Kund/in zurückzahlen muss und den Wert der aktuellen Bestellung).
Bieten Sie in Ihrem Bezahlvorgang immer weitere Zahlungsoptionen wie card an, da Affirm-Zahlungen eine höhere Ablehnungsrate haben als viele andere Zahlungsmethoden. In diesen Fällen wird die PaymentMethod getrennt, und der Status des PaymentIntent-Objekts wechselt automatisch zu requires_.
Anders als bei einer abgelehnten Zahlung wird bei einem Affirm-PaymentIntent mit dem Status requires_ erwartet, dass die Kundinnen/Kunden die Zahlung innerhalb von 12 Stunden nach Weiterleitung zur Affirm-Website abschließen. Wenn nach 12 Stunden keine Aktion erfolgt ist, wird die PaymentMethod getrennt und der Status des PaymentIntent-Objekts wechselt automatisch zu requires_.
Teilen Sie Ihren Kund/innen in diesen Fällen mit, dass sie es mit einer anderen Zahlungsoption versuchen sollten, die in Ihrem Bezahlvorgang zur Verfügung gestellt wird.
Fehlercodes
Im Folgenden finden Sie die häufigsten Fehlercodes und die entsprechenden empfohlenen Maßnahmen:
| Fehlercode | Empfohlene Maßnahme |
|---|---|
payment_ | Ein allgemeiner Fehler, der darauf hinweist, dass der Bezahlvorgang mit Affirm fehlgeschlagen ist. Zusätzliche Informationen können im Grund für das Zahlungsergebnis verfügbar sein. |
payment_ | Affirm hat die Kundenzahlung abgelehnt. Als nächsten Schritt muss sich der Kunde/die Kundin an Affirm wenden, um weitere Informationen einzuholen. |
payment_ | Die Kundin/der Kunde hat die Zahlung auf der Affirm-Checkout-Seite nicht abgeschlossen und die Payment-Sitzung ist abgelaufen. Stripe setzt PaymentIntents, die nicht erfolgreich autorisiert wurden, automatisch 12 Stunden nach Erstellung des ursprünglichen Checkouts außer Kraft. |
payment_ | Bei Affirm ist ein Fehler im Zusammenhang mit der Dienstleistung aufgetreten und kann die Anfrage nicht abschließen. Versuchen Sie es zu einem späteren Zeitpunkt erneut. |
amount_ | Geben Sie einen Betrag innerhalb der Standard-Transaktionslimits von Affirm ein. |
amount_ | Geben Sie einen Betrag innerhalb der Standard-Transaktionslimits von Affirm ein. |
Bei einigen Fehlern können zusätzliche Erkenntnisse im Grund für das Zahlungsergebnis enthalten sein:
| Ergebnisursachen | Was bedeutet das? |
|---|---|
generic_ | Der Standardgrund für das Ergebnis eines Zahlungsfehlers. Dies weist in der Regel darauf hin, dass der Partner die Zahlung abgelehnt hat (z. B. aufgrund unzureichender Deckung), dass die Bank die Zahlung abgelehnt hat, dass die Transaktion einen Kauf mit hohem Risiko beinhaltete oder auf einen ähnlichen Grund. In diesen Fällen erhält Stripe möglicherweise nicht immer einen Ablehnungsgrund. |
affirm_ | Entweder hat der Kunde/die Kundin den Bezahlvorgang mit Affirm explizit abgebrochen oder Affirm hat den Kreditanspruch des Kunden/der Kundin abgelehnt. Stripe kann den Unterschied zwischen diesen beiden Ereignistypen nicht erkennen. |