Zahlungsgateway mit Weiterleitungen in magento2

7

Wie würde ich genau diese Logik in M2 mit der neuen Gateway-API implementieren? https://github.com/ergopalpatel/Magento_Payment_Gateway_Skeleton

Schritte

  1. Der Kunde wählt eine benutzerdefinierte Zahlungsmethode
  2. Wenn Sie auf "Bestellung aufgeben" klicken, wird der Kunde mit einigen zusätzlichen POST-Daten zur externen Zahlungsseite weitergeleitet
  3. Die Zahlungsseite leitet bei Erfolg / Misserfolg zurück zu einem bestimmten Magento-Controller, der das Ergebnis verarbeitet

Ich habe mich umgesehen und festgestellt, dass \ Magento \ Payment \ Model \ Method \ Cc veraltet ist und dass Sie die Gateway-API verwenden sollten. Ich habe die Artikel von Max Pronko und https://www.maxpronko.com/blog/magento-2-payment-gateway-api gelesen und versucht, das Magento-Modul und das Braintree-Modul zu analysieren, aber ich kann meinen Kopf einfach nicht einwickeln um diese herum ist entweder zu viel oder zu wenig los.

Wo fange ich überhaupt an, wenn ich diesen Flow mit Weiterleitungen implementieren möchte? Gibt es irgendwo eine umfassende Dokumentation oder ein auf der Gateway-API implementiertes Modul, das genau das tut, was ich brauche?

BEARBEITEN

Ich habe mich in den Magento_Payment-Code vertieft und es scheint, dass dieser Fluss überhaupt nicht unterstützt wird. Klassen, die das Magento \ Payment \ Gateway \ Http \ ClientInterface implementieren und die Anforderungen und Antworten verarbeiten, scheinen nur mit synchronen Anforderungen gegen ein Webapi zu funktionieren .

Welche Möglichkeiten gibt es dann? Veraltete Komponenten verwenden?

BEARBEITEN

Es scheint, als ob Sie Magento \ Payment \ Model \ MethodInterface verwenden (das eine @ api-Annotation enthält, also hoffe ich, dass es nicht bald veraltet ist) und die Implementierung Ihrer eigenen Logik für Weiterleitungen / Validierungen usw. der richtige Weg ist jetzt.

Eduard
quelle
github.com/ergopalpatel/Magento_Payment_Gateway_Skeleton ist kein Magento-Zahlungsgateway. Weitere
Informationen
Ich habe bereits all diese Ressourcen gesehen, die Gateway-API funktioniert nicht mit Weiterleitungen und asynchronen Anforderungen, oder ich habe nicht herausgefunden, wie es funktioniert. Dort brauche ich Hilfe.
Eduard
Funktioniert tatsächlich, zum Beispiel hat Braintree asynchrone Anforderungen, um Zahlungsfehler abzurufen oder zusätzliche Validierungen zu verarbeiten. Braintree Paypal verwendet Weiterleitungen für das Auschecken von Gästen.
Joni Jones
@Eduard, bitte, wenn Sie Ihre Modulstruktur erstellen, können Sie den Code teilen?
Jsparo30
@ Jsparo30 hast du eine Lösung dafür gefunden
Mujahidh

Antworten:

3

Um ein benutzerdefiniertes Zahlungsmodul mit Umleitung zu implementieren, müssen Sie die folgende Logik implementieren:

  1. Erstellen Sie eine Frontend-Logik, die für das Rendern der benutzerdefinierten Zahlungsmethode verantwortlich ist, mit der Schaltfläche "Bestellung aufgeben".
  2. Konfigurieren Sie die Zahlungsmethode für die "Initialisierung" während der Bestellung, sodass die Bestellung den Status "Ausstehende Zahlung" erhält.
  3. Sobald die Logik "Bestellung aufgeben" ausgeführt und die Bestellung über die Standard-JavaScript-Zahlungskomponente gespeichert wurde, müssen Sie eine WebAPI-POST-Anforderung an den Back-End-Server senden (falls Sie HTTP-POST an eine Zahlungsmethode senden müssen, bevor Sie den Kunden umleiten).

Sie sollten die gesamte Payment Gateway-Infrastruktur von Klassen implementieren:

  • Builder-Klassen zum Vorabfüllen von POST-Parametern für Anforderungen
  • Handler zur Verarbeitung der Antwort vom Zahlungsgateway
  • Validatoren zur Überprüfung der Antwort vom Zahlungsgateway
  • Benutzerdefinierte Befehle für den Fall, dass GatewayCommand für Sie nicht funktioniert und Sie eine eigene Verarbeitungslogik benötigen, wenn Sie eine Anfrage an einen Zahlungsanbieter senden.
  • Die neue Klasse Magento / Payment / Model / Method / Adapter ist jetzt ein zentrales Element für Zahlungsintegrationen. Sie muss unbedingt mit benutzerdefinierten Befehlen konfiguriert werden.

- -

  1. Rufen Sie das Ergebnis von der Ausführung des Web-API-Aufrufs in eine benutzerdefinierte JavaScript-Komponente ab und leiten Sie den Kunden auf eine Zahlungsseite um.
  2. Erstellen Sie Controller, einen für den Erfolg und einen für den Fehler, falls der Zahlungsanbieter 2 URLs für jeden Status festlegen kann. Wenn nicht, erstellen Sie einen Controller, auf dem Sie abhängig von einer Validierung und einer zusätzlichen Logik, die Sie hinzufügen müssen, um den Status zu ändern und eine "Erfassung" oder "Autorisierung" der Zahlung zu erstellen, verschiedene Layout-Updates "custompayment_success" oder "custompayment_error" erstellen.

Einige Klarstellungen:

  • Klasse Magento\Payment\Model\Method\Ccist in der Tat veraltet und sollte nicht verwendet werden.
  • Die Schnittstelle Magento\Payment\Gateway\Http\ClientInterfacesollte zum Senden von Hintergrundanforderungen an ein Zahlungsgateway verwendet werden. Es gibt sogar 2 Implementierungen fürClientInterface

Sollten Sie Fragen haben, lassen Sie es mich bitte wissen.

Max Pronko
quelle
Können Sie bitte den Weiterleitungscode freigeben?
Abdul
Wie verwalte ich standardmäßig magento 2 den Wert des Kontrollkästchens "Allgemeine Geschäftsbedingungen", der an die "Zahlungsinformationen festlegen" übergeben werden muss, bevor auf das externe Zahlungsgateway umgeleitet wird?
Ashwani Shukla
@MaxPronko Sollte die Umleitung der Komponente zu einem externen Dienst aus Sicherheitsgründen eine spezielle Logik enthalten?
Bartosz Kubicki
Dies sollte der Fall sein, falls der Zahlungsdienstleister einige Sicherheitsfunktionen wie Token oder Autorisierung bereitstellt.
Max Pronko
@MaxPronko meinst du von magento sollte ich externe zahlungs-api für ein token anfordern und damit in params auf diese externe zahlungsseite umleiten?
Bartosz Kubicki