Jak dodać niestandardową płatność do Magento 2 Checkout

Opublikowany: 2021-05-11

Spis treści

Jednym z największych ulepszeń Magento 2.x w stosunku do Magento 1.x jest możliwość zintegrowania niestandardowych metod płatności z kasą. W tym samouczku pokażemy Ci, jak zaimplementować renderowanie metody płatności w kasie Magento 2.

Krok 1: Utwórz plik komponentu .js

Na początek renderer metody płatności powinien działać jako komponent interfejsu użytkownika, który zależy od modułu Magento_Checkout i rozszerza domyślny komponent metody płatności (domyślny renderer metody płatności znajduje się w <Magento_Checkout_module_dir>/view/frontend/web/js/view/payment/default.js ).

Utwórz plik .js komponentu (program renderujący metodę płatności) w katalogu niestandardowego modułu. Musi być przechowywany w katalogu <your_module_dir>/view/frontend/web/js/view/ .

Ogólny widok modułu renderującego metodę płatności jest następujący:

 definiować(
    ['Magento_Checkout / js / widok / płatność /
        domyślna'
    ],
    funkcja(Składnik) {
        '
        użyj ścisłego';
        return Component.extend({
            wartości domyślne: {
                szablon: ' % ścieżka do szablonu % '
            },
            // dodaj tutaj wymaganą logikę
        });
    }
);

Aby ta nowa metoda płatności mogła uzyskać dostęp do danych konfiguracji systemu , musi zaimplementować interfejs \Magento\Checkout\Model\ConfigProviderInterface , a implementująca ją klasa musi zostać wstrzyknięta do dostawcy konfiguracji złożonej za pośrednictwem konfiguracji interfejsu DI.

Przykładowy plik .php implementujący \Magento\Checkout\Model\ConfigProviderInterface :

 klasa MyCustomPaymentConfigProvider implementuje \Magento\Checkout\Model\ConfigProviderInterface
{
...
    funkcja publiczna getConfig()
    {
        zwrócić [
            // 'klucz' => 'wartość' par konfiguracji
        ];
    }
...
}

A jeśli Twoja nowa metoda płatności wymaga informacji o karcie kredytowej , powinieneś użyć renderera Magento, aby zaimplementować formularz karty kredytowej (znajdujący się w <Magento_Payment_module_dir>/view/frontend/web/js/view/payment/cc-form.js ).

Krok 2: Utwórz komponent .js rejestrujący renderer

W katalogu modułów niestandardowych utwórz komponent .js UI, który rejestruje renderer metody płatności na liście rendererów. Musi znajdować się w katalogu <your_module_dir>/view/frontend/web/js/view/ .

Zawartość pliku jest jak poniżej:

 definiować(
    ['uiComponent', 'Magento_Checkout / js / model / payment / renderer - lista'],
    funkcjonować(
        Składnik,
        lista rendererów
    ) {
        '
        użyj ścisłego';
        rendererList.push({
                wpisz: ' % payment_method_code % ',
                składnik: ' % js_renderer_component % '
            },
            // inne renderery metod płatności, jeśli są wymagane
        );
        /** W razie potrzeby dodaj logikę widoku */
        return Component.extend({});
    }
);

Krok 3: Utwórz szablon dla składnika metody płatności

Utwórz nowy <your_module_dir>/view/frontend/web/template/<your_template>.html w swoim katalogu modułów. Szablon może używać składni Knockout JS.

Np. szablon do renderowania metody płatności PayPal Express:

https://github.com/magento/magento2/blob/2.4/app/code/Magento/Paypal/view/frontend/web/template/payment/paypal-express.html

Krok 4: Zadeklaruj metodę płatności w układzie

  1. Utwórz nowy <your_module_dir>/view/frontend/layout/checkout_index_index.xml w swoim katalogu modułów
  2. Dodaj następujący kod do tego pliku
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <ciało>
        <referenceBlock name="checkout.root">
            <argumenty>
                <argument name="jsLayout" xsi:type="array">
                    <item name="komponenty" xsi:type="array">
                        <item name="do kasy" xsi:type="array">
                            <item name="dzieci" xsi:type="array">
                                <item name="kroki" xsi:type="array">
                                    <item name="dzieci" xsi:type="array">
                                        <item name="krok rozliczeniowy" xsi:type="array">
                                            <item name="komponent" xsi:type="string">komponent ui</item>
                                            <item name="dzieci" xsi:type="array">
                                                <item name="płatność" xsi:type="array">
                                                    <item name="dzieci" xsi:type="array">
                                                        <!-- Zadeklaruj dodatkowe składniki przed płatnością. START -->
                                                        <item name="beforeMethods" xsi:type="array">
                                                            <item name="komponent" xsi:type="string">komponent ui</item>
                                                            <item name="displayArea" xsi:type="string">przedMetodami</item>
                                                            <item name="dzieci" xsi:type="array">
                                                                <item name="%your_feature_name%" xsi:type="array">
                                                                    <item name="komponent" xsi:type="string">%ścieżka/do/twojego/feature_js_komponent%</item>
                                                                </item>
                                                            </item>
                                                        </item>
                                                        <!-- Zadeklaruj dodatkowe składniki przed płatnością. KONIEC -->
                                                        <!-- Zadeklaruj metodę płatności (składnik, który rejestruje się na liście). START -->
                                                        <item name="renders" xsi:type="array">
                                                            <item name="dzieci" xsi:type="array">
                                                                <item name="%nazwa grupy metod płatności%" xsi:type="array">
                                                                    <!-- Przykład wartości: Magento_Paypal/view/frontend/web/js/view/payment-->
                                                                    <item name="component" xsi:type="string">%component_that_registers_payment_renderer%</item>
                                                                    <item name="metody" xsi:type="array">

                                                                        <!-- Dodaj to, jeśli metoda płatności wymaga podania adresu rozliczeniowego-->
                                                                        <item name="%payment_method_code%" xsi:type="array">
                                                                            <item name="isBillingAddressRequired" xsi:type="boolean">prawda</item>
                                                                        </item>
                                                                    </item>
                                                                </item>
                                                            </item>
                                                        </item>
                                                        <!-- Zadeklaruj metodę płatności (składnik, który rejestruje się na liście). KONIEC -->

                                                        <!-- Zadeklaruj dodatkowe składniki po dokonaniu płatności. START -->
                                                        <item name="afterMethods" xsi:type="array">
                                                            <item name="komponent" xsi:type="string">komponent ui</item>
                                                            <item name="displayArea" xsi:type="string">afterMethods</item>
                                                            <item name="dzieci" xsi:type="array">
                                                                <item name="%your_feature_name%" xsi:type="array">
                                                                    <item name="komponent" xsi:type="string">%ścieżka/do/twojego/feature_js_komponent%</item>
                                                                </item>
                                                            </item>
                                                        </item>
                                                        <!-- Zadeklaruj dodatkowe składniki po dokonaniu płatności. KONIEC -->
                                                    </item>
                                                </item>
                                            </item>
                                        </item>
                                    </item>
                                </item>
                            </item>
                        </item>
                    </item>
                </argument>
            </arguments>
        </referenceBlock>
    </body>
</page>

(Tylko dla trybu produkcyjnego) Krok 5: Uruchom polecenia CLI

W trybie produkcyjnym musisz uruchomić kilka dodatkowych poleceń, takich jak:

 php bin/magento setup:di:kompilacja
php bin/magento setup:static-content:deploy
php bin/magento cache: czyste 

Pakiet rozszerzeń Magento 2 do kasy

Strona kasy jest zdecydowanie najważniejszym miejscem docelowym każdej witryny internetowej, która może albo przyciągnąć klienta do konsumenta, albo odepchnąć go od punktu sprzedaży.
Na szczęście to rozszerzenie Magento 2 Checkout pomaga bez wysiłku zoptymalizować kasę.
Sprawdź garnitur już teraz!


Zobacz też:
Jak dostosować proces realizacji transakcji w Magento 2?
Jak dodać kod rabatowy do kasy w Magento?