agricole
Sign up

Understand 3-D Secure statuses

To help you keep track of your transactions and their 3-D Secure status, it is important to differentiate between a transactions': 

  • 3-D Secure status: The result of the authentication check provided by your customer’s issuer. We return this result in property paymentOutput.cardPaymentMethodSpecificOutput.threeDSecureResults.eci in GetPayment/GetPaymentDetails requests
  • Global transaction status: The result of the authorisation request provided by your acquirer for the gross amount (as defined in your CreatePayment/CreateHostedCheckout request in property order.amountOfMoney.amount). We return this result in property statusOutput.statusCode. Learn more about the global transaction status and all possible outcomes

The table below gives you a full overview of possible scenarios and how our platform displays them to you:

3-D Secure status GetPayment/GetPaymentDetails
in property eci
Transaction status GetPayment/GetPaymentDetails
in property statusCode
Description
5 Depending on the authorisation result by your acquirer either
2
5
9
Your customers have passed the authentication (via a challenge or frictionless flow). In case of fraudulent chargebacks, the issuer is liable

6
12

Depending on the authorisation result by your acquirer either
2
5
9
Your customers did not have the opportunity to perform the authentication check.
In case of fraudulent chargebacks, the issuer is liable
91 2 Your customers did not pass the authentication check because of i.e. incorrect password/PIN. Our platform does not execute the authorisation step at all, abandoning the transaction
92 2 Authentication was not possible due to a technical error.
Our platform does not execute the authorisation step at all, abondoning the transaction (statusCode=2)
Check property paymentOutput.cardPaymentMethodSpecificOutput.threeDSecureResults.liability in GetPayment/GetPaymentDetails requests to learn about the liability shift for fraudulent transactions. Be aware that this is only an indication, as the definite accountability depends on various factors

Ways to integrate

1Use our SDKs

Use our Server SDKs to seamlessly connect your server environment to the Ingenico Direct platform's Server API. These SDKs simplify the API's functionality with easy-to-use platform-specific objects.

Ruby
PHP
Node.js
Java
Python 3
.NET

2Use our plugins

Our Plugins provide a seamless link between your webshop and our platform. By effectively wrapping our RESTful API, these plugins save you time on writing code and make integration quick and easy.

Shopify
Shopware

TEST

1Test 1

Body 1

TEST SDK Download

2Test 2

Body 2

Irgendwann während des Zahlungsvorgangs leiten Sie Ihre Kunden auf unsere sichere Zahlungsseite weiter. Sie geben ihre Kreditkartennummer ein, wir leiten sie an Ihren Akzeptanzpartner weiter und teilen Ihnen das Ergebnis mit.

Hier erfahren Sie, wie der gesamte Transaktionsablauf funktioniert und was Sie in den einzelnen Schritten tun müssen.

Unsere Hosted Checkout Page funktioniert mit allen Zahlungsarten die auf unserer Plattform verfügbar sind. Wenn Ihre Kunden eine Zahlungsmethode einer dritten Partei wählen, findet keine Weiterleitung an den Akzeptanzpartner/Kreditkartenherausgeber statt. Stattdessen werden Ihre Kunden an die dritte Partei weitergeleitet.

Ansteuern der Endpunkt-URLs in der Test-/Live-Umgebung

Unsere Plattform ermöglicht es Ihnen, Anfragen entweder an unsere Test- oder Live-Umgebung zu senden:

  • Endpunkt-URL TEST: MERCHANT_ID/hostedcheckouts
  • Endpunkt-URL LIVE: MERCHANT_ID/hostedcheckouts

Bei Verwendung unserer Server SDKs steuert Ihre Anwendung automatisch die entsprechende Umgebungs-/Integrationsmodus-URL über Objektinstanzen von CommunicatorConfiguration / IClient / CreateHostedCheckoutRequest an. Detaillierte Informationen darüber, wie Sie dies erreichen können, finden Sie im nächsten Kapitel.Dieses enthält auch vollständige Codebeispiele.

Grundlegendes zum Zahlungsablauf

Unsere Server SDKs verfügen über eine Hosted Checkout API. Diese enthält alle Methoden, die Sie benötigen, um alle Schritte eines typischen Zahlungsablaufs durchzuführen:

Die Grafik oben erläutert alle Schritte einer typischen Transaktion über Hosted Checkout Page
  1. Ihr Kunden gehen zur Check-out-Seite und und schließt den Kauf ab
  2. Sie senden eine CreateHostedCheckout-Anfrage an unsere Plattform. Eine typische Anfrage sieht folgendermaßen aus:

Dieses Minimalbeispiel initialisiert nur das Objekt order/hostedCheckoutSpecificInput. In unserer vollständigen API-Referenz sehen Sie, welche anderen Objekte/Eigenschaften verfügbar sind

  1. Unsere Plattform sendet eine Antwort, ein in einer Objektinstanz von CreateHostedCheckoutResponse, die Sie auf Ihre Anfrage hin erstellt haben. Sie enthält eine partialRedirectionURL-Eigenschaft
    // Properties of createHostedCheckoutResponse
    {
        "RETURNMAC": "12345678-90ab-cdef-1234-567890abcdef",
        "hostedCheckoutId": "123456",
        "merchantReference": "7e21badb48fe45848bbc1efef2a88504",
        "partialRedirectUrl": "hostedcheckout/PaymentMethods/Selection/e61340e579e04172a740676ffdda162e"
        "redirectUrl": "https://payment.hostedcheckout/PaymentMethods/Selection/e61340e579e04172a740676ffdda162e"
    }
    
  2. Sie leiten Ihren Kunden im Browser mithilf der Formel https://payment. + PartialRedirectUrl weiter oder nutzen hierfür den vollständigen Pfad in Eigenschaft redirectUrl

    Konstruieren Sie diese URL unter Verwendung des CreateHostedCheckoutResponse-Objekts

    Die/Der Kundin/Kunde gibt ihre/seine Kartennummer in dem Zahlungsformular auf der PartialRedirectUrl / redirectUrl ein

    4'. (optional). Wir führen eine Betrugsüberprüfung durch
  1. Wir leiten den Kunden zu seinem/ihrem Kreditkartenherausgeber zur 3-D-Secure-Authentisierung weiter. Der/Die Karteninhaber/in weist sich aus

Wenn Sie eine Zahlungsmethode einer dritten Partei vorausgewählt haben, leitet die URL Ihre Kunden stattdessen zu dieser dritten Partei weiter.
  1. Unser System erhält das Ergebnis vom Kreditkartenherausgeber. Ausgehend von diesem Ergebnis sind zwei Szenarien möglich:
    a) War die Identifizierung nicht erfolgreich, leiten wir Ihren Kunden zu Ihrer ReturnUrl weiter und beenden damit den Vorgang. Sie können das Ergebnis der Transaktion anfordern wie in Schritt 9) beschrieben

    b) War die Identifizierung erfolgreich, wird der Ablauf bei Schritt 7) fortgesetzt

  2. Wir übermitteln die eigentliche Finanztransaktion an den Akzeptanzpartner zur Transaktionsverarbeitung. Wir erhalten das Transaktionsergebnis

  3. Wir leiten Ihren Kunden zu Ihrer ReturnUrl weiter

  4. Sie fordern das Transaktionsergebnis von unserer Plattform an. Verwenden Sie eine Objektinstanz von GetHostedCheckoutResponse und übergeben Sie die HostedCheckoutId aus der Antwort als Ziel für die soeben erstellte Transaktion. 

    Wenn Ihr Kunde die Eingabe der Kartendaten noch nicht abgeschlossen hat und/oder wir noch kein endgültiges Ergebnis von Ihrem Acquirer erhalten haben, ist die Eigenschaft hostedCheckoutStatus.CreatedPaymentOutput.PaymentStatusCategory null:

    {
      "CreatedPaymentOutput": {},
      "Status": "PAYMENT_CREATED"
    }
    


    Sobald wir ein Ergebnis erhalten haben, enthält diese Eigenschaft ein Ergebnis, das wie folgt aussieht

    {
      "CreatedPaymentOutput": {
        "Payment": {
          "HostedCheckoutSpecificOutput": {
            "HostedCheckoutId": "3104703806"
          },
          "Id": "3104703806_0",
          "PaymentOutput": {
            "AmountOfMoney": {
              "Amount": 100,
              "CurrencyCode": "EUR"
            },
          },
          "Status": "CAPTURED",
          "StatusOutput": {
    		.
    		.
    		.
            "StatusCode": 9
          }
        },
        "PaymentStatusCategory": "SUCCESSFUL"
      },
      "Status": "PAYMENT_CREATED"
    }
    

You can also receive the result via webhooks or a PaymentResponse call. Mind that GetPayment accepts a PAYIDSUB instead of a HostedCheckoutId, which is a HostedCheckoutId plus numeric step indicating the PAYIDSUB's order in the transaction's life cycle. "_0" refers to the first step in the transaction life cycle, thus the initial step when creating the transaction:

  1. War die Transaktion erfolgreich, können Sie die Waren/Dienstleistungen liefern

Was this page helpful?

Do you have any comments?

Thank you