Magento2: Özel ödeme yöntemi alanı eklemenin en iyi yolu nedir?


13

Magento 2'de özel bir ödeme yöntemi alanı olan yeni bir ödeme yöntemi ayarladım ( magento / offline-ödeme yöntemlerinden "po_number" gibi ). Ve ön uç mükemmel çalışıyor (alan gösteriliyor, onaylanıyor, vb.).

Ancak, sipariş Magento WebAPI isteği yerleştirmek istiyorsanız aşağıdaki hatayı atar:

"Property \" CustomField \ ", \" Magento \ Quote \ Api \ Data \ PaymentInterface \ "sınıfında karşılık gelen ayarlayıcıya sahip değil.

Magento, getPoNumber ve setPoNumber gibi yöntemlerin tanımlandığı çekirdek ödeme arayüzüne göre özel alanı doğrular gibi görünüyor .

Zaten uzantı alanlarını kullanarak özel alan eklemeye çalıştım:

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

ve belirli yöntemlerle arayüzü oluşturdu:

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

Ama bu işe yaramıyor. Magento hala temel ödeme arayüzünü doğrulamaktadır.

Şimdi soru, Magento'nun özel ödeme yöntemi alanını kabul etmesi nasıl sağlanır? Herhangi bir işaretçi çok takdir :)


Ben de ilgileniyorum, aynı yaklaşımı (extension_attributes) kullandım ama başarı yok, sonra fikri bıraktım ve özel alan kullanmak yerine set / getAdditionalInformation ('custom_field') kullandım.
carco

Yanıtlar:


3

Magento2 burada iyi mimaride değil. Ne yaptığı gibi onları geçirilen olduğu extension_attributesbir additional_datasonra bu bilgiyi atanmış, assignData()bu kalıcı olur böylece yöntemle. Daha sonra bu bilgiyi capture()yöntemde alıp kullanıyorum. Burada bir göz atabilirsiniz : Openpay PaymentMethod

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.