Skonfigurowałem nową metodę płatności w Magento 2 z niestandardowym polem metody płatności (np. „Po_number” z magento / metody-offline-płatności ). A interfejs działa idealnie dobrze (wyświetlanie pola, sprawdzanie poprawności itp.).
Jeśli jednak chcę złożyć zamówienie Magento, żądanie WebAPI zgłasza następujący błąd:
„Właściwość \” CustomField \ ”nie ma odpowiedniego ustawiającego w klasie \„ Magento \ Quote \ Api \ Data \ PaymentInterface \ ”.
Wygląda na to, że Magento sprawdza niestandardowe pole względem podstawowego interfejsu płatności, w którym zdefiniowano metody takie jak getPoNumber i setPoNumber .
Próbowałem już dodać niestandardowe pole za pomocą atrybutów rozszerzenia:
<extension_attributes for="Magento\Quote\Api\Data\PaymentInterface">
<attribute code="custom_field" type="Vendor\Module\Api\Data\MethodInterface[]" />
</extension_attributes>
i utworzyłem interfejs za pomocą określonych metod:
<?php
namespace Vendor\Module\Api\Data;
use Magento\Framework\Api\ExtensibleDataInterface;
interface MethodInterface extends ExtensibleDataInterface
{
public function setCustomField($customField);
public function getCustomField();
}
Ale to nie działa. Magento nadal sprawdza zgodność z podstawowym interfejsem płatności.
Pytanie brzmi: jak zmusić Magento do zaakceptowania pola niestandardowej metody płatności? Wszelkie wskazówki są mile widziane :)
źródło
Odpowiedzi:
Magento2 nie ma tutaj dobrze zaprojektowanej architektury. To, co zrobiłem, to przekazanie ich od
extension_attributes
razuadditional_data
, a następnie przypisanie tych informacji doassignData()
metody, aby stały się trwałe. Później pobieram takie informacje wcapture()
metodzie i wykorzystuję je. Możesz zajrzeć tutaj: Openpay PaymentMethodźródło