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

답변:


3

Magento2는 여기서 잘 구성되지 않았습니다. 내가 한 일은 나는 그들을 전달됩니다 extension_attributesadditional_data다음에 그 정보를 할당 assignData()이 지속됩니다 있도록하는 방법. 나중에 capture()메소드 에서 이러한 정보를 검색 하여 사용합니다. 당신은 여기를 볼 수 있습니다 : Openpay PaymentMethod

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.