Zahlungen per FPX akzeptieren
So akzeptieren Sie Zahlungen per FPX, einer gängigen Zahlungsmethode in Malaysia.
Vorsicht
Der Inhalt dieses Abschnitts bezieht sich auf ein Legacy-Produkt. Verwenden Sie den Leitfaden Zahlungen akzeptieren für den aktuellsten Integrationspfad. Auch wenn Stripe dieses Produkt jetzt noch unterstützt, kann sich dies ändern, wenn das Produkt nicht mehr unterstützt wird.
Bei FPX handelt es sich um eine Zahlungsmethode für die einmalige Nutzung. Bei Zahlungen mit FPX werden Kundinnen/Kunden zum Senden der Zahlung von Ihrer Website weggeleitet und dann wieder auf Ihre Website zurückgeleitet, wo Sie eine sofortige Benachrichtigung über den Erfolg oder das Fehlschlagen der Zahlung erhalten.
So aktivieren Sie FPX-Zahlungen:
- Gehen Sie im Dashboard zu den Einstellungen für Zahlungsmethoden. Falls Sie das noch nicht getan haben, aktivieren Sie Ihr Stripe-Konto.
- Suchen Sie FPX unter Bank Redirects (Bankumleitungen) und wählen Sie Aktivieren aus.
- Akzeptieren Sie die Nutzungsbedingungen von FPX.
FPX ist nur für Händler/innen mit Sitz in Malaysia verfügbar. Weitere Informationen zu Ländern, Währungen und Zahlungsmethoden, die mit Stripe-Produkten kompatibel sind, finden Sie unter Unterstützung von Zahlungsmethoden.
Notiz
FPX ist eine Zahlungsmethode für die einmalige Nutzung und kann nicht für wiederkehrende oder zusätzliche Zahlungen verwendet werden. Sie wird derzeit von Stripe Billing nicht unterstützt. Die Unterstützung für FPX-Zahlungen für Custom-Konten befindet sich in der Betaphase. Bitte kontaktieren Sie bei Support-Anfragen den Stripe-Support.
Stripe einrichtenServerseitig
Zunächst benötigen Sie ein Stripe-Konto. Registrieren Sie sich jetzt.
Nutzen Sie unsere offiziellen Bibliotheken für den Zugriff auf die Stripe-API über Ihre Anwendung:
PaymentIntent erstellenServerseitig
Ein PaymentIntent stellt Ihre Absicht dar, Zahlungen von Kundinnen/Kunden einzuziehen. Der PaymentIntent dokumentiert jede Phase des gesamten Zahlungsvorgangs. Erstellen Sie einen PaymentIntent, sobald Sie den Betrag kennen (zum Beispiel zu Beginn des Bezahlvorgangs). Sie benötigen für die Erstellung des PaymentIntent folgende Werte:
| Parameter | Wert |
|---|---|
payment_ | fpx |
amount | Eine positive ganze Zahl in der kleinsten Währungseinheit, die den Betrag darstellt, der von dem Kunden/der Kundin abgebucht wird (zum Beispiel 1099 für eine Zahlung von 10,99 RM). Stripe unterstützt einen Mindestbetrag von 2 RM und einen Höchstbetrag von 30.000 RM pro Transaktion. |
currency | myr (FPX muss immer Ringgit verwenden). |
Sie können den Betrag auch später aktualisieren, falls er sich ändern sollte (zum Beispiel bei der Berechnung der Versandgebühren und Steuern).
Angaben zur Zahlungsmethode erfassenClientseitig
Stripe Elements beinhaltet vorgefertigte Komponenten der Nutzeroberfläche zur Erfassung von Zahlungsdetails. Elements ist ein Feature von Stripe.js und steht damit automatisch zur Verfügung. Fügen Sie das Stripe.js-Skript auf Ihrer Zahlungsseite ein, indem Sie es in den head Ihrer HTML-Datei einbinden. Laden Sie Stripe.js immer direkt von js.stripe.com, um die PCI-Konformität zu gewährleisten. Fügen Sie das Skript nicht in ein Paket ein und hosten Sie selbst keine Kopie davon.
<head> <title>Checkout</title> <script src="https://js.stripe.com/clover/stripe.js"></script> </head>
Erstellen Sie mit folgendem JavaScript-Code eine Instanz von Elements auf Ihrer Bezahlseite:
const stripe = Stripe(); const elements = stripe.elements();'pk_test_TYooMQauvdEDq54NiTphI7jx'
Weisen Sie Elements in Ihrem Zahlungsformular einen festen Platz zu. Erstellen Sie in Ihrem Zahlungsformular leere DOM-Nodes (Container) mit eindeutigen IDs und übergeben Sie diese IDs dann an Elements.
<form id="payment-form"> <div class="form-row"> <div> <label for="fpx-bank-element"> FPX Bank </label> <div id="fpx-bank-element"> <!-- A Stripe Element will be inserted here. --> </div> </div> </div> <button id="fpx-button" data-secret="{{ CLIENT_SECRET }}"> Submit Payment </button> <!-- Used to display form errors. --> <div id="error-message" role="alert"></div> </form>
Vorsicht
Diese Dokumentation bezieht sich auf eine Legacy-Funktion, die in der neuesten Version von Stripe.js nicht mehr verfügbar ist. Wir empfehlen die Nutzung des Payment Element, einer Web-UI-Komponente, die über 40 Zahlungsmethoden akzeptiert, Eingaben validiert und Fehler behandelt.
Wenn das oben erwähnte Formular geladen wurde, erstellen Sie eine Instanz des Elements fpxBank und verbinden Sie sie mit dem oben erstellten Element-Container:
const style = { base: { // Add your base input styles here. For example: padding: '10px 12px', color: '#32325d', fontSize: '16px', }, }; // Create an instance of the fpxBank Element. const fpxBank = elements.create( 'fpxBank', { style: style, accountHolderType: 'individual', } ); // Add an instance of the fpxBank Element into the container with id `fpx-bank-element`. fpxBank.mount('#fpx-bank-element');
Zahlung an Stripe sendenClientseitig
Um eine Zahlung auf der Client-Seite zu erstellen, übergeben Sie das Client-Geheimnis aus dem in Schritt 1 erstellten PaymentIntent-Objekt.
Verwenden Sie stripe.confirmFpxPayment, um die Weiterleitung von Ihrer Seite zu verarbeiten und die Zahlung zu ermöglichen. Fügen Sie dieser Funktion einereturn_ hinzu, um das Ziel anzugeben, an das Nutzer/innen weitergeleitet werden, nachdem sie die Zahlung auf der Website oder in der App ihrer Bank durchgeführt haben.
const form = document.getElementById('payment-form'); form.addEventListener('submit', async function(event) { event.preventDefault(); const fpxButton = document.getElementById('fpx-button'); const clientSecret = fpxButton.dataset.secret; const result = await stripe.confirmFpxPayment(clientSecret, { payment_method: { fpx: fpxBank, }, // Return URL where the customer should be redirected after the authorization return_url: `${window.location.href}`, }); if (result.error) { // Inform the customer that there was an error. const errorElement = document.getElementById('error-message'); errorElement.textContent = 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.
Integration testen
Erfolgreiche und fehlgeschlagene Fälle der Authentifizierung
Testen Sie Ihre FPX-Integration, indem Sie eine beliebige Bank mit Ihren Test-API-Schlüsseln auswählen und 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, in dem Nutzer/innen sich nicht authentifizieren können, wählen Sie aus der Liste mit Ihren Test-API-Schlüsseln eine Bank aus. Klicken Sie auf der Weiterleitungsseite auf Fail test payment (Testzahlung ablehnen). Der PaymentIntent wechselt von requires_ zu requires_.
Bestätigung der Fehlerfälle
Andere mögliche Fehlerfälle sind Verbindungen zu Banken, die offline sind oder Verarbeitungsfehler während des Bestätigungsvorgangs. Um diese Fehler auszulösen, stellen Sie unten den Wert fpx[bank] für bestätigen auf einen der Testwerte für Bankenfehler ein. Der PaymentIntent nimmt den Status requires_ an. Erfahren Sie mehr über diese Fehlercodes.
| Parameter | Wert | Fehlercode |
|---|---|---|
fpx[bank] | test_ | offline_ |
fpx[bank] | test_ | payment_ |
Ereignisse nach Zahlung verarbeitenServerseitig
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.
OptionalEreignisse des FPX-Bank-Elements verarbeiten
Sie können die Konfigurationsoptionen (zum Beispiel den style) des fpxBank-Elements mithilfe von . aktualisieren.
Das FPX-Bank-Element gibt die von Kund/innen gewählte Bank an, wenn sie sich ändert. Um mit dem Wert der Bank eine zusätzliche Logik auszuführen (zum Beispiel für das Feld, das für die Validierung des Formulars erforderlich ist), können Sie das Change-Ereignis überwachen:
fpxBank.on('change', function(event) { var bank = event.value; // Perform any additional logic here... });
Das Änderungsereignis enthält andere hilfreiche Parameter:
| Parameter | Beschreibung |
|---|---|
elementType | Der Name des Elements. Der Standardwert ist fpxBank. |
empty | Wenn true, ist der Wert leer. |
complete | Wenn true, hat der/die Kund/in den Wert ausgewählt. Sie können diesen Parameter verwenden, um den Rest Ihres Formulars schrittweise offenzulegen, um das Einreichen des Formulars zu ermöglichen. |
value | Die FPX-Bank, die der Kunde/die Kundin aus dem Element ausgewählt hat. Der FPX-Leitfaden enthält die vollständige Bankenliste. |
OptionalFPX-Weiterleitung manuell verarbeiten
Wir empfehlen, die Verarbeitung von FPX-Weiterleitungen und -Zahlungen mit confirmFpxPayment Stripe.js zu überlassen. Sie können Kund/innen aber auch manuell weiterleiten. Gehen Sie dazu wie folgt vor:
Geben Sie die URL an, an die Ihre Kund/innen weitergeleitet werden, sobald die Zahlung abgeschlossen ist.
An dieser Stelle prüft Stripe, ob die ausgewählte Bank online und für die Authentifizierung verfügbar ist. Ist die Bank nicht verfügbar, gibt Stripe den folgenden Fehlercode und die folgende Fehlermeldung zurück:
error_code offline_bank error_message %{bank} ist zurzeit offline. Versuchen Sie es mit einer anderen Bank. Sie sollten den Kunden/die Kundin dann auffordern, entweder eine andere Bank oder eine andere Zahlungsmethode auszuwählen, um die Transaktion abzuschließen.
Testen einer Offline-Bank Sie können den oben beschriebenen
offline_-Fehler testen, indem Sie in Schritt 2 eine PaymentMethod mit dem folgenden Wert erstellen und diese dann wie oben gezeigt an den PaymentIntent anhängen.bank Parameter Wert fpx[bank]test_offline_ bank Beim Bestätigen des
PaymentIntentgilt der Statusrequires_. Der Typ füraction next_istaction redirect_.to_ url "next_action": { "type": "redirect_to_url", "redirect_to_url": { "url": "https://hooks.stripe.com/...", "return_url": "https://example.com/checkout/complete" } }Leiten Sie die Kundin/den Kunden an die in der Eigenschaft
next_angegebene URL weiter.action const action = intent.next_action; if (action && action.type === 'redirect_to_url') { window.location = action.redirect_to_url.url; }
Bei Abschluss des Bezahlvorgangs werden die Kund/innen an das Ziel return_ weitergeleitet. Die URL-Abfrageparameter payment_ und payment_ sind enthalten und Sie können wie oben beschrieben Ihre eigenen Abfrageparameter übergeben.
Anforderungen für den Bezahlvorgang und die Zahlungsbestätigung
Sie müssen auf der Seite Ihres Bezahlvorgangs die folgenden Anforderungen erfüllen:
| Anforderung | Detail |
|---|---|
| FPX-Logo anzeigen. | Laden Sie das FPX-Logo hier herunter. |
| FPX Buyer Bankauswahl in einer Dropdown-Liste erstellen | Die Namen der Banken müssen mit denen in der Bankauskunft übereinstimmen. |
| Die Nutzungsbedingungen von FPX müssen als Standardformulierung und URL angegeben werden. | Standardformulierung: Indem Sie auf Weiter klicken, stimmen Sie den Nutzungsbedingungen von FPX zu. |
Die folgenden Informationen müssen auf der Zahlungsbestätigungsseite angezeigt werden, auf die Ihr/e Kund/in nach Abschluss der Authentifizierung durch seine/ihre Bank zurückkehrt.
| Informationen | Informationsquelle |
|---|---|
| Transaktionsdatum und -zeit | created aus dem Charge-Objekt. |
| Betrag | amount aus dem Charge-Objekt. |
| Bestellnummer des Verkäufers | statement_ aus dem Charge-Objekt. |
| FPX-Transaktions-ID | payment_ aus dem Charge-Objekt. |
| Name der Bank des/der Käufer/in | payment_ aus dem Charge-Objekt |
| Transaktionsstatus | status aus dem Charge-Objekt |
Sie können diese Informationen zu der Zahlung aus dem Ereignis payment_ abrufen.
Nutzer/innen der API-Version 2022-08-01 oder älter: Sie können diese Informationen zu der Zahlung aus dem Ereignis payment_ oder direkt aus dem PaymentIntent abrufen.
Bankreferenz
| Name der Bank | Wert |
|---|---|
| Affin Bank | affin_bank |
| Alliance Bank | alliance_bank |
| AmBank | ambank |
| Bank Islam | bank_islam |
| Bank Muamalat | bank_muamalat |
| Bank Rakyat | bank_rakyat |
| BSN | bsn |
| CIMB Clicks | cimb |
| Hong Leong Bank | hong_leong_bank |
| HSBC Bank | hsbc |
| KFH | kfh |
| Maybank2E | maybank2e |
| Maybank2U | maybank2u |
| OCBC Bank | ocbc |
| Public Bank | public_bank |
| RHB Bank | rhb |
| Standard Chartered | standard_chartered |
| UOB Bank | uob |
Fehlercodes
Im Folgenden finden Sie die häufigsten Fehlercodes und die entsprechenden empfohlenen Maßnahmen:
| Fehlercode | Empfohlene Aktion |
|---|---|
invalid_ | FPX-Transaktionen müssen größer als 2 RM und kleiner als 30.000 RM sein. |
invalid_ | Die angegebene Bank wird von FPX nicht unterstützt. Bitte verwenden Sie eine der Optionen aus der oben genannten Bankauskunft. |
invalid_ | FPX unterstützt nur MYR-Transaktionen. |
missing_ | Ein erforderlicher Parameter fehlt. Bitte prüfen Sie die error_, um mehr Informationen über den erforderlichen Parameter zu erhalten. |
offline_ | Die angegebene Bank ist zurzeit offline. Versuchen Sie es mit einer anderen Bank oder Art der Zahlungsmethode. |
payment_ | Die Zahlungsmethode ist zurzeit nicht verfügbar. Bitten Sie Ihre Kundin/Ihren Kunden, zum Fortfahren auf eine andere Zahlungsmethode auszuweichen. |
payment_ | Es ist ein unerwarteter Fehler aufgetreten, der uns daran hindert, den PaymentIntent zu bestätigen. Es sollte erneut versucht werden, den PaymentIntent zu bestätigen. |
Auszahlungen und Überweisungen
Zur Einhaltung entsprechender Vorschriften werden Ihre FPX-Gelder über ein separates fpx-Guthaben auf Ihrem Konto abgewickelt. Sie könnten also an einem Tag zwei separate Auszahlungen erhalten, und zwar eine für Ihre FPX-Gelder und eine weitere für alle anderen Gelder. Bei Connect-Plattformen können Sie eine Auszahlung oder eine Überweisung von Ihrem fpx-Guthaben erstellen, indem Sie fpx als source_ angeben:
Sie können Ihren Saldo auch abrufen, um eine Aufschlüsselung Ihres available und pending Stripe-Saldos nach source_ anzuzeigen.