Ich habe in Magento 2 eine neue Zahlungsmethode mit einem benutzerdefinierten Zahlungsmethodenfeld eingerichtet (wie "po_number" von magento / offline-payment-methods ). Und das Front-End funktioniert einwandfrei (Feldanzeige, Validierung usw.).
Wenn ich jedoch die Bestellung für Magento aufgeben möchte, gibt die WebAPI-Anforderung den folgenden Fehler aus:
"Eigenschaft" CustomField "hat keinen entsprechenden Setter in der Klasse" Magento \ Quote \ Api \ Data \ PaymentInterface \ ".
Anscheinend überprüft Magento das benutzerdefinierte Feld anhand der zentralen Zahlungsschnittstelle, in der Methoden wie getPoNumber und setPoNumber definiert sind.
Ich habe bereits versucht, das benutzerdefinierte Feld über Erweiterungsattribute hinzuzufügen:
<extension_attributes for="Magento\Quote\Api\Data\PaymentInterface">
<attribute code="custom_field" type="Vendor\Module\Api\Data\MethodInterface[]" />
</extension_attributes>
und erstellte die Schnittstelle mit den spezifischen Methoden:
<?php
namespace Vendor\Module\Api\Data;
use Magento\Framework\Api\ExtensibleDataInterface;
interface MethodInterface extends ExtensibleDataInterface
{
public function setCustomField($customField);
public function getCustomField();
}
Das geht aber nicht. Magento überprüft immer noch die Hauptzahlungsschnittstelle.
Die Frage ist nun, wie man Magento dazu bringt, das benutzerdefinierte Zahlungsmethodenfeld zu akzeptieren. Alle Hinweise sind sehr geschätzt :)
quelle
Antworten:
Magento2 ist hier nicht gut aufgebaut. Was ich getan habe ist , ich sie übergeben , wie
extension_attributes
deradditional_data
, dann , dass die Informationen in der zugeordnetenassignData()
Verfahren , so dass es beharrte wird. Später rufe ich solche Informationen in dercapture()
Methode ab und verwende sie. Hier können Sie einen Blick darauf werfen : Openpay PaymentMethodquelle