Magento2: Cách tốt nhất để thêm trường phương thức thanh toán tùy chỉnh là gì?


13

Tôi đã thiết lập một phương thức thanh toán mới trong Magento 2 với trường phương thức thanh toán tùy chỉnh (như "po_number" từ magento / phương thức thanh toán ngoại tuyến ). Và giao diện người dùng đang hoạt động hoàn toàn tốt (trường hiển thị, xác nhận, v.v.).

Tuy nhiên, nếu tôi muốn đặt hàng Magento, yêu cầu WebAPI sẽ đưa ra lỗi sau:

"Thuộc tính \" CustomField \ "không có trình thiết lập tương ứng trong lớp \" Magento \ Trích dẫn \ Api \ Data \ PaymentInterface \ ".

Có vẻ như Magento xác thực trường tùy chỉnh đối với giao diện thanh toán cốt lõi nơi các phương thức như getPoNumbersetPoNumber được xác định.

Tôi đã cố gắng thêm trường tùy chỉnh thông qua các thuộc tính mở rộng:

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

và tạo giao diện với các phương thức cụ thể:

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

Nhưng điều này không làm việc. Magento vẫn xác nhận đối với giao diện thanh toán cốt lõi.

Câu hỏi bây giờ là, làm thế nào để Magento chấp nhận trường phương thức thanh toán tùy chỉnh? Bất kỳ con trỏ được nhiều đánh giá cao :)


Tôi cũng quan tâm, tôi đã sử dụng cùng một cách tiếp cận (extension_attribut) nhưng không thành công, sau đó tôi đã bỏ ý tưởng và tôi đã sử dụng set / getAdditableIn information ('custom_field') thay vì sử dụng trường tùy chỉnh.
carco

Câu trả lời:


3

Magento2 không được kiến ​​trúc tốt ở đây. Những gì tôi đã làm là tôi đi ngang qua chúng như extension_attributescủa additional_data, sau đó gán thông tin rằng trong assignData()phương pháp để nó được tồn. Sau đó tôi lấy thông tin đó trong capture()phương thức và sử dụng nó. Bạn có thể xem tại đây: Openpay PaymentMethod

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.