Magento2:カスタム支払い方法フィールドを追加する最良の方法は何ですか?


13

カスタム支払い方法フィールド(magento / offline-payment-methodsの "po_number"など)を使用して、Magento 2で新しい支払い方法を設定しました。フロントエンドは完全に正常に動作しています(フィールドの表示、検証など)。

ただし、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

回答:


3

Magento2は、ここでは適切に設計されていません。私がやったのは、の時点extension_attributesでそれらを渡してからadditional_data、その情報をassignData()メソッドに割り当てて永続化することです。後でcapture()メソッドでそのような情報を取得して使用します。こちらをご覧ください:Openpay PaymentMethod

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.