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?


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.