Lưu dữ liệu trường thanh toán tùy chỉnh trong magento 2 thông qua plugin không hoạt động,


8

Tôi đang cố gắng lưu dữ liệu trường tùy chỉnh của mình thông qua plugin nhưng nó không hoạt động.

Lớp học bổ trợ

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_attribution.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>

Bất cứ ai có thể vui lòng giúp tôi về điều này.


hiển thị chi tiết hơn với cấu hình
Sohel Rana

tôi đang nhận được giá trị $ taxCode = $ extenstinAttribut-> getTaxCode (); trong biến này nhưng không thể thiết lập dữ liệu.
rajat kara

vui lòng kiểm tra mã cập nhật trong câu hỏi
rajat kara

tôi đang nhận được dữ liệu biểu mẫu trong plugin của mình nhưng không thể lưu dữ liệu.
rajat kara

Bạn đã làm điều này?
Suresh Chikani

Câu trả lời:


0

Tôi nghĩ rằng để bắt đầu, bạn cần đặt các thuộc tính mở rộng như thế này:

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

Bạn có thể thử phương pháp này và cho tôi biết làm thế nào bạn nhận được trên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.