Hosted Checkout Page
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 |
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) |
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.
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.
TEST
1Test 1
Body 1
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.
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:
- Ihr Kunden gehen zur Check-out-Seite und und schließt den Kauf ab
- 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
- 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" } - 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
- Wir leiten den Kunden zu seinem/ihrem Kreditkartenherausgeber zur 3-D-Secure-Authentisierung weiter. Der/Die Karteninhaber/in weist sich aus
- 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 - Wir übermitteln die eigentliche Finanztransaktion an den Akzeptanzpartner zur Transaktionsverarbeitung. Wir erhalten das Transaktionsergebnis
- Wir leiten Ihren Kunden zu Ihrer ReturnUrl weiter
- 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:
- War die Transaktion erfolgreich, können Sie die Waren/Dienstleistungen liefern