Я установил новый метод оплаты в Magento 2 с настраиваемым полем метода оплаты (например, «po_number» из magento / offline-payment- Methods ). И интерфейс работает отлично (отображение поля, проверка и т. Д.).
Однако, если я хочу разместить заказ Magento, запрос WebAPI выдает следующую ошибку:
"Свойство \" CustomField \ "не имеет соответствующего установщика в классе \" Magento \ Quote \ Api \ Data \ PaymentInterface \ ".
Кажется, что Magento проверяет пользовательское поле по отношению к основному интерфейсу оплаты, где определены методы, такие как getPoNumber и setPoNumber .
Я уже пытался добавить настраиваемое поле с помощью атрибутов расширения:
<extension_attributes for="Magento\Quote\Api\Data\PaymentInterface">
<attribute code="custom_field" type="Vendor\Module\Api\Data\MethodInterface[]" />
</extension_attributes>
и создал интерфейс с конкретными методами:
<?php
namespace Vendor\Module\Api\Data;
use Magento\Framework\Api\ExtensibleDataInterface;
interface MethodInterface extends ExtensibleDataInterface
{
public function setCustomField($customField);
public function getCustomField();
}
Но это не работает. Magento по-прежнему проверяет базовый интерфейс оплаты.
Теперь возникает вопрос, как заставить Magento принять поле пользовательского метода оплаты? Любые указатели очень ценятся :)
источник
Ответы:
Magento2 здесь не очень хорошо спроектирован. То , что я сделал, я прошел мимо них , как
extension_attributes
изadditional_data
, затем назначается эту информацию вassignData()
методе поэтому он получает сохраняется. Позже я получаю такую информацию вcapture()
методе и использую ее. Вы можете посмотреть здесь: Openpay PaymentMethodисточник