Magento2: qual è il modo migliore per aggiungere il campo del metodo di pagamento personalizzato?


13

Ho impostato un nuovo metodo di pagamento in Magento 2 con un campo del metodo di pagamento personalizzato (come "po_number" di magento / metodi-pagamento-offline ). E il front-end funziona perfettamente (visualizzazione del campo, validazione, ecc.).

Tuttavia, se voglio effettuare l'ordine Magento, la richiesta WebAPI genera il seguente errore:

"Proprietà \" CustomField \ "non ha setter corrispondente nella classe \" Magento \ Quote \ Api \ Data \ PaymentInterface \ ".

Sembra che Magento convalidi il campo personalizzato rispetto all'interfaccia di pagamento principale in cui sono definiti metodi come getPoNumber e setPoNumber .

Ho già provato ad aggiungere il campo personalizzato tramite gli attributi di estensione:

<extension_attributes for="Magento\Quote\Api\Data\PaymentInterface">
    <attribute code="custom_field" type="Vendor\Module\Api\Data\MethodInterface[]" />
</extension_attributes>

e creato l'interfaccia con i metodi specifici:

<?php
namespace Vendor\Module\Api\Data;
use Magento\Framework\Api\ExtensibleDataInterface;
interface MethodInterface extends ExtensibleDataInterface
{
    public function setCustomField($customField);
    public function getCustomField();
}

Ma questo non funziona. Magento si convalida ancora con l'interfaccia di pagamento principale.

La domanda ora è: come fare in modo che Magento accetti il ​​campo del metodo di pagamento personalizzato? Tutti i suggerimenti sono molto apprezzati :)


Sono anche interessato, ho usato lo stesso approccio (extension_attributes) ma senza successo, quindi ho lasciato cadere l'idea e ho usato set / getAdditionalInformation ('custom_field') invece di usare il campo personalizzato.
carco,

Risposte:


3

Magento2 non è ben progettato qui. Quello che ho fatto è che ho passato loro come extension_attributesdei additional_data, poi assegnato tali informazioni nella assignData()metodo in modo che venga persisteva. Successivamente recupero tali informazioni nel capture()metodo e le utilizzo. Puoi dare un'occhiata qui: Openpay PaymentMethod

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.