Magento2: Apa cara terbaik untuk menambahkan bidang metode pembayaran khusus?

13

Saya telah menyiapkan metode pembayaran baru di Magento 2 dengan bidang metode pembayaran khusus (seperti "po_number" dari magento / metode pembayaran offline ). Dan ujung depan berfungsi dengan baik (bidang muncul, validasi, dll.).

Namun, jika saya ingin memesan Magento, permintaan WebAPI melempar kesalahan berikut:

"Properti \" CustomField \ "tidak memiliki setter yang sesuai di kelas \" Magento \ Penawaran \ Api \ Data \ PaymentInterface \ ".

Tampaknya Magento memvalidasi bidang khusus terhadap antarmuka pembayaran inti di mana metode seperti getPoNumber dan setPoNumber didefinisikan.

Saya sudah mencoba menambahkan bidang khusus melalui atribut ekstensi:

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

dan menciptakan antarmuka dengan metode spesifik:

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

Tetapi ini tidak berhasil. Magento masih memvalidasi terhadap antarmuka pembayaran inti.

Pertanyaannya sekarang adalah, bagaimana cara agar Magento menerima bidang metode pembayaran khusus? Setiap pointer sangat dihargai :)

ada kamu
sumber
Saya juga tertarik, saya menggunakan pendekatan yang sama (extension_attributes) tetapi tidak berhasil, kemudian saya membatalkan ide dan saya menggunakan set / getAdditionalInformation ('custom_field') daripada menggunakan bidang kustom.
carco

Jawaban:

3

Magento2 tidak dirancang dengan baik di sini. Apa yang saya lakukan adalah saya melewati mereka extension_attributespada additional_data, kemudian menetapkan informasi itu dalam assignData()metode sehingga tetap ada. Kemudian saya mengambil informasi tersebut dalam capture()metode dan menggunakannya. Anda dapat melihatnya di sini: Metode Pembayaran Openpay

awavi
sumber