Guardar datos de campo de pago personalizados en magento 2 a través del complemento no funciona,

8

Estoy tratando de guardar mis datos de campo personalizados a través del complemento, pero no funciona.

Clase de complemento

namespace Vendor\Module\Model\Checkout;

class PaymentInformationManagementPlugin {

    protected $paymentMethodManagement;

    public function __construct(
        \Magento\Quote\Model\QuoteFactory $quote, 
        \Magento\Quote\Api\PaymentMethodManagementInterface $paymentMethodManagement
    ) {
        $this->paymentMethodManagement = $paymentMethodManagement;
        $this->quoteManagement = $quoteManagement;
    }    

    public function beforeSavePaymentInformation(
        \Magento\Checkout\Model\PaymentInformationManagement $subject, 
$cartId, 
        \Magento\Quote\Api\Data\PaymentInterface $paymentInformation
    ) {
        //$paymentInformation->getData('extension_attributes');
        $extenstinAttributes = $paymentInformation->getExtensionAttributes();
        $taxCode = $extenstinAttributes->getTaxCode();

        $paymentInformation->setExtensionAttributes($taxCode);
        $this->paymentMethodManagement->set($cartId, $paymentInformation);

        return true;
//        var_dump($taxCode);exit;
//        $quote=$this->quote->create();
//        $quote->getPayment()->setData('tax_code',$taxCode);
//        return $paymentInformation;
    }

}

extenstion_attribute.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Api/etc/extension_attributes.xsd">
    <extension_attributes for="Magento\Quote\Api\Data\PaymentInterface">
        <attribute code="tax_code" type="string"/>
    </extension_attributes>
</config>

di.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Checkout\Model\PaymentInformationManagement">
        <plugin name="save-in-quote-payment" type="Vendor\Module\Model\Checkout\PaymentInformationManagementPlugin" sortOrder="12349"/>
    </type>
</config>

¿Alguien puede ayudarme en esto?

rajat kara
fuente
mostrar más detalles con config
Sohel Rana
obtengo el valor $ taxCode = $ extenstinAttributes-> getTaxCode (); en esta variable pero no puede establecer los datos.
rajat kara
compruebe el código de actualización en cuestión
rajat kara
Recibo los datos del formulario en mi complemento pero no puedo guardarlos.
rajat kara
¿Hiciste esto?
Suresh Chikani

Respuestas:

0

Creo que, para empezar, debes establecer los atributos de extensión de esta manera:

$extensionAttributes = $paymentInformation->getExtensionAttributes();
$extensionAttributes->setTaxCode('something');
$paymentInformation->setExtensionAttributes($extensionAttributes);

Puedes probar este enfoque y decirme cómo te va.

LDusan
fuente