Magento Zahlungsfluss
Arbeite ich an der Umsetzung eines neuen payment-Modul für Magento und verstehen wollen, das Kern-Konzept hinter dieser Logik. Ich weiß, ich habe zu erweitern, von Mage_Payment_Model_Method_Abstract oder einer Ihrer Kinder Klassen, aber mein problem ist, wenn Sie verwenden und wie Sie zu verwenden, erfassen und genehmigen Methoden in meinem Modell.
Zum Beispiel, wenn ich split der gesamte Prozess in den Schritten wie diesem:
- Benutzer kommt in den Warenkorb und wählt, sagen wir, einige Zahlungsmethode, die gateway.
- Das system fängt die Anforderung ab, sammelt alle eingereichten Daten und sendet dem Benutzer, die gateway-url ein.
- Benutzer legt seine Bestellung (oder bricht) auf dem gateway-Website, die sendet Informationen über Sie in meinem Shop.
- Mein Shop nimmt einige Modifikationen vor, um die Reihenfolge der empfangenen Daten und speichert die Bestellung mit dem status abgeschlossen oder abgebrochen wurde.
Dort, wo in diesen Schritten muss ich autorisieren und capture-Methoden ? Ich würde mich freuen, wenn jemand könnte mir erklären, was autorisieren und capture bedeutet?
InformationsquelleAutor der Frage zokibtmkd | 2011-03-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist der Weg ich habe immer verstanden, die Konzepte, und was Sie brauchen, um wissen zur Umsetzung einer payment-Modul in Magento. Antworten auf Ihre spezifische "wo geschieht dieses" Fett unten, obwohl es nicht ganz so einfach, wie Sie hoffen.
Prä-internet -, Ziegel-und Mörtel-Kreditkarten-Transaktionen wurden in einem zwei-Stufen-Prozess.
Zum Zeitpunkt des Verkaufs, wenn der Händler nahm einen Verbraucher-Kredit-Karte für einen Kauf würden Sie schieben Sie es durch ein point-of-sale-Gerät, das Sie nennen würde-in die Kreditkarte, die zentrale und Fragen: "ist diese Karte berechtigt für dieses Netzwerk, und ist dies insbesondere die Verbraucher-Linie von Kredit zur Verfügung, groß genug, daß dieser Kauf".
Wenn die Bestellung wurde akzeptiert (im Gegensatz zu abgelehnt), die zuständig war, sagte zu autorisierten. Die Verbraucher würden Ihre Produkt -, und das point-of-sale-system/cash-register beachten Sie, dass die Transaktion autorisiert wurde. Dann, am Ende eines Tages, oder am Ende der Woche, bei einigen anderen vorbestimmten regelmäßigen Zeitplan, oder wenn der Eigentümer beschlossen, mit dem trinken aufzuhören, der Händler würde zwar gehen alle Ihre autorisierte Zugänge und senden anderen Anfrage an die zentrale zu erfassen die Mittel aus dem autorisierten Transaktion. Die Erfassung des Fonds ist es, was bringt Geld in die Händler-Konto.
Dies ist immer noch das Modell im Einsatz, die von den meisten gateways, und ist das domain-Modell, dass Magento Inc. entschied sich für die Implementierung für Ihre Zahlung Module.
Den Weg, die Dinge laufen sollten ist, wenn ein Verbraucher erreicht den letzten checkout-Schritte in einem system wie Magento, Magento Themen, eine Autorisierung der Anforderung an die gateway-API. Wenn die Transaktion erfolgreich ist, wird der Auftrag angenommen, in das system, und eine eindeutige ID aus der Autorisierungs-Anfrage gespeichert ist. Als Nächstes, wenn der Verbraucher die Ware versenden, Shop-Besitzer verwendet die Magento admin zu erstellen, eine Rechnung. Die Erstellung dieser Rechnung Probleme eine Aufnahme-Anfrage (über eine Speicher-id zurückgegeben, die von der Autorisierungs-Anfrage). Dies ist, wo diese Methode ruft ausgestellt sind in Magento.
Doch die Dinge werden schwierig, da jede Zahlung-gateway interpretiert diese Begriffe ein wenig anders, und jeder Händler interpretiert Ihre "nicht erfassen, bis wir geliefert haben" Zuständigkeiten anders. Zusätzlich zu dem oben beschriebenen Szenario, Zahlungs-Module system configuration-Wert, bekannt als Zahlung Aktion. Diese kann Autorisieren Nurdie Umsetzung der flow wie oben beschrieben. Es kann auch so eingestellt werden Autorisieren und Capturedie sowohl autorisieren und capture-Zahlung bei der Bestellung. Es kommt noch mehr verwirrend, denn obwohl die Methode aufgerufen wird, Autorisieren und Capture mit den aktuellen Versionen von Magento wird nur die Ausgabe der capture-request in diesen Modus (zumindest für Authorize.net), und Authorize.net wird, intern, lassen Sie erfassen die Anfragen in einem autorisierten, aber nicht aufgezeichneten Zustand für die meisten des Tages. Wie Magento übernimmt Aufträge und Zahlungen und Rechnungen ist ein Bereich, der codebase, dass sich viel ändert von version zu version.
So, die Idee hinter der Magento payment-Modul system Schirmen Sie von der Cluster-F - - -, Programmier-payment-Gateway-Logik. In Ihrem
authorize
Methode, die Sie implementieren, rufen Sie Ihre Zahlungs-Gateways für die Autorisierung von API - (oder ausführen was auch immer überprüft und Logik, die Sie möchten, passieren an dieser Stelle). Dieser Methode übergeben wird, eine Zahlung-Objekt und ein Betrag. Wenn Sie Sie beantragen/durchführen-deine-Logik und bestimmen, es ist aus irgendeinem Grund unwirksam sein, werfen Sie eine Ausnahme mitDieser erzählt Magento die Autorisierung fehlgeschlagen ist, und es wird entsprechend gehandelt (eine Fehlermeldung anzeigen, etc.). Ansonsten legen Sie Daten, die Mitglieder auf die Auszahlung Objekt und Ausgabe einer
Die Daten der Mitglieder sind die Dinge, die Sie später brauchen, wenn die Erfassung der Zahlung. Das bringt uns zu der
capture
Methode des Payment-Modul. Diese Methode wird auch geschickt eine Zahlung-Objekt und ein Betrag. In dieser Methode Sie Ihre capture-Anfrage. Das payment-Objekt wirdcc_trans_id
Daten Mitglieddenen Sie ein Problem erfassen, sich gegen Ihre gateway. Dies ist einer der Mitglieder-Daten sind Sie verantwortlich für die Rettung in
authorize
. Wieder, wenn Ihr code bestimmt die capture fehlgeschlagen ist, wirf eine Ausnahme. Sonst, Siereturn $this
.Den authorize.net payment-Modul verfügt über gute Beispiele dafür, wie dies getan wird.
Betrachten Sie beispielsweise diesen Teil der
capture
MethodeHier die capture-Methode wird geprüft, ob die Zahlung hat
cc_trans_id
. Je nach Ergebnis setztanet_trans_type
:Dieser Wert wird dann verwendet durch die API-request-Objekt zum senden eines API-Aufrufs, die entweder für
Hoffe, das hilft, und viel Glück!
InformationsquelleAutor der Antwort Alan Storm