Magento2:添加自定义付款方式字段的最佳方法是什么?


13

我在Magento 2中使用自定义付款方式字段(例如magento / offline-payment-methods中的 “ po_number”)设置了新的付款方式。前端工作得很好(现场显示,验证等)。

但是,如果我要下订单Magento,则WebAPI请求将引发以下错误:

“属性\“ CustomField \”在类\“ Magento \ Quote \ Api \ Data \ PaymentInterface \”中没有相应的设置器。

Magento似乎根据定义了诸如getPoNumbersetPoNumber之类的方法的核心支付接口来验证自定义字段。

我已经尝试通过扩展属性添加自定义字段:

<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接受自定义付款方式字段?任何指针都非常感谢:)


我也很感兴趣,我使用了相同的方法(extension_attributes),但没有成功,于是我放弃了这个想法,而是使用set / getAdditionalInformation('custom_field')而不是使用自定义字段。
carco '16

Answers:


3

Magento2在这里没有很好的架构。我所做的是我通过他们作为extension_attributesadditional_data,然后分配到这些信息assignData()的方法,因此得到持续。稍后,我在capture()方法中检索此类信息并使用它。您可以在这里查看:Openpay PaymentMethod

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.