Magento2: วิธีที่ดีที่สุดในการเพิ่มฟิลด์วิธีการชำระเงินที่กำหนดเองคืออะไร


13

ฉันได้ตั้งค่าวิธีการชำระเงินใหม่ใน Magento 2 ด้วยฟิลด์วิธีการชำระเงินที่กำหนดเอง (เช่น "po_number" จากวิธีการชำระเงินแบบวีโอไอพี / ออฟไลน์ ) และส่วนหน้าทำงานได้อย่างสมบูรณ์แบบ (การแสดงฟิลด์การตรวจสอบและอื่น ๆ )

อย่างไรก็ตามหากฉันต้องการสั่งซื้อสินค้าวีโอไอพีคำขอ WebAPI จะเกิดข้อผิดพลาดต่อไปนี้:

"Property \" CustomField \ "ไม่มี setter ที่สอดคล้องกันในคลาส \" Magento \ Quote \ Api \ Data \ PaymentInterface \ "

มันดูเหมือนว่าวีโอไอพีจะตรวจสอบข้อมูลที่กำหนดเองกับอินเตอร์เฟซการชำระเงินหลักที่วิธีการเช่น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 ยังคงตรวจสอบกับอินเทอร์เฟซการชำระเงินหลัก

คำถามคือทำอย่างไรให้วีโอไอพียอมรับฟิลด์วิธีการชำระเงินที่กำหนดเอง คำแนะนำใด ๆ ที่ชื่นชมมาก :)


ฉันยังสนใจฉันใช้วิธีการเดียวกัน (extension_attributes) แต่ไม่ประสบความสำเร็จจากนั้นฉันก็เลิกคิดและใช้ set / getAdditionalInformation ('custom_field') แทนการใช้ฟิลด์ที่กำหนดเอง
carco

คำตอบ:


3

Magento2 ไม่มีสถาปัตยกรรมที่ดีที่นี่ สิ่งที่ฉันได้เป็นผมผ่านพวกเขาเป็นextension_attributesของadditional_dataแล้วได้รับมอบหมายว่าข้อมูลในassignData()วิธีการเพื่อให้ได้รับการยืนยัน หลังจากนั้นฉันดึงข้อมูลดังกล่าวในcapture()วิธีการและใช้งานได้ คุณสามารถดูได้ที่นี่: วิธีการชำระเงินแบบเปิด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.