カスタム支払い方法フィールド(magento / offline-payment-methodsの "po_number"など)を使用して、Magento 2で新しい支払い方法を設定しました。フロントエンドは完全に正常に動作しています(フィールドの表示、検証など)。
ただし、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でカスタム支払い方法フィールドを受け入れる方法です。ポインタは大歓迎です:)
私も興味があり、同じアプローチ(extension_attributes)を使用しましたが、成功しませんでした。その後、アイデアを落とし、カスタムフィールドを使用する代わりにset / getAdditionalInformation( 'custom_field')を使用しました。
—
-carco