Ich habe eine Neuinstallation für das Folgende unter Verwendung von Magento2 CE 2.2.0-dev verwendet und das Standard-Thema "Luma" ebenfalls verlassen.
In Bezug auf externe Zahlungsmethoden (Gateways) wie MiGS , Braintree , PayPal und andere unterstützt Magento diese Gateways standardmäßig , bietet jedoch KEINE APIs für diese, die Sie zusammen mit anderen "Checkout" -APIs verwenden können.
Wenn Sie also vorhaben, eine Checkout-App / -Seite mit Magentos APIs zu erstellen, müssen Sie diese Services mithilfe ihres SDK / API manuell integrieren. Glücklicherweise können Sie eine Menge lernen, indem Sie überprüfen, wie Magento diese Services in den Build integriert -in Integrationen.
Um dies zu verstehen, musste ich Braintree konfigurieren, da es das einfachste ist:
- Erstellen Sie ein Sandbox-Konto unter https://www.braintreepayments.com/sandbox
- Greifen Sie auf den Magento Admin-Bereich zu.
- Shops> Konfiguration> Verkauf> Zahlungsmethoden> Braintree> Konfigurieren.
- Stellen Sie sicher, dass "Umgebung" "Sandbox" ist, und geben Sie "Händler-ID", "Öffentlicher Schlüssel" und "Privater Schlüssel" ein.
- Konfiguration speichern.
- Möglicherweise müssen Sie den Cache neu indizieren und / oder aktualisieren.
Wenn Sie ein Produkt in den Warenkorb legen und zur Kasse gehen, wählen Sie im letzten Schritt die Zahlungsmethode Braintree. Nachdem Sie auf die Schaltfläche "Bestellung aufgeben" geklickt haben, werden Sie die folgenden AJAX-Anfragen sehen:
- 2 fordert die Braintree API auf, die Karte zu validieren, die Transaktion durchzuführen und mit dem Transaktionsstatus zu antworten.
- Eine Anfrage an die Magento-API
guest-carts/cartId/payment-information
mit dem üblichen Inhalt, wie in der Magento-API-Dokumentation erläutert.
Danach wird der Prozess wie erwartet mit der Weiterleitung zur Erfolgsseite fortgesetzt, wenn die letzte Anforderung in JSON mit der Bestellung antwortet entity_id
Dies bestätigt, dass Aufrufe an externe Services - in unserem Beispiel Braintree - von der Checkout-Seite NICHT von Magento intern ausgeführt werden. Daher müssen wir dasselbe tun, wenn wir unsere eigene Checkout-Seite / App entwickeln möchten.
Wie bei dem Auftragsstatus zu steuern, grub ich tiefer und fand heraus , dass die Verwendung von Zahlungsmethoden wie MiGs, Braintree, oder PayPal, mit dem Status in einer Reihenfolge ergab processing
statt der üblichen pending
, ich vermuten , dass dies entweder eine Zahlungsmethode Konfiguration oder ein Beobachter , aber es schien eine Konfiguration zu sein, hier sind weitere Details.
Klasse: Magento \ Sales \ Model \ Order \ Payment
Methode: Place ()
Es gibt eine Bedingung, die prüft, ob Initialization
für die Methode erforderlich if ($methodInstance->isInitializeNeeded())
ist. Ist dies der Fall, wird eine von initialize()
Ihnen definierte Methode ausgeführt, mit der Sie sowohl state
als auch angeben können status
.