Magento2: Jaki jest najlepszy sposób na dodanie pola niestandardowej metody płatności?

13

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 :)

therouv
źródło
Jestem również zainteresowany, zastosowałem to samo podejście (atrybuty rozszerzenia), ale bez powodzenia, porzuciłem pomysł i użyłem set / getAdditionalInformation ('custom_field') zamiast pola niestandardowego.
carco 13.04.16

Odpowiedzi:

3

Magento2 nie ma tutaj dobrze zaprojektowanej architektury. To, co zrobiłem, to przekazanie ich od extension_attributesrazu additional_data, a następnie przypisanie tych informacji do assignData()metody, aby stały się trwałe. Później pobieram takie informacje w capture()metodzie i wykorzystuję je. Możesz zajrzeć tutaj: Openpay PaymentMethod

awavi
źródło