He configurado un nuevo método de pago en Magento 2 con un campo de método de pago personalizado (como "po_number" de magento / offline-payment- method ). Y el front end funciona perfectamente bien (campo que se muestra, validación, etc.).
Sin embargo, si quiero hacer el pedido de Magento, la solicitud de WebAPI arroja el siguiente error:
"Propiedad \" CustomField \ "no tiene el configurador correspondiente en la clase \" Magento \ Quote \ Api \ Data \ PaymentInterface \ ".
Parece que Magento valida el campo personalizado contra la interfaz de pago central donde se definen métodos como getPoNumber y setPoNumber .
Ya intenté agregar el campo personalizado a través de atributos de extensión:
<extension_attributes for="Magento\Quote\Api\Data\PaymentInterface">
<attribute code="custom_field" type="Vendor\Module\Api\Data\MethodInterface[]" />
</extension_attributes>
y creó la interfaz con los métodos específicos:
<?php
namespace Vendor\Module\Api\Data;
use Magento\Framework\Api\ExtensibleDataInterface;
interface MethodInterface extends ExtensibleDataInterface
{
public function setCustomField($customField);
public function getCustomField();
}
Pero esto no funciona. Magento aún se valida contra la interfaz de pago principal.
La pregunta ahora es, ¿cómo hacer que Magento acepte el campo de método de pago personalizado? Cualquier puntero es muy apreciado :)
fuente
Respuestas:
Magento2 no está bien arquitecturado aquí. Lo que hice fue pasarlos a partir
extension_attributes
deadditional_data
entonces, luego asigné esa información en elassignData()
método para que persista. Más tarde recupero dicha información en elcapture()
método y la uso. Puedes echar un vistazo aquí: Openpay PaymentMethodfuente