Magento 2 Checkout'a Özel Ödeme Nasıl Eklenir

Yayınlanan: 2021-05-11

İçindekiler

Magento 2.x'in Magento 1.x'e göre en büyük gelişmelerinden biri, özel ödeme yöntemlerinin kasaya entegre edilebilmesidir. Bu eğitimde, Magento 2 kasasında bir ödeme yöntemi oluşturmanın nasıl uygulanacağını göstereceğiz.

1. Adım: .js bileşen dosyasını oluşturun

Başlangıç ​​olarak, ödeme yöntemi oluşturucunuz Magento_Checkout modülüne bağlı olan ve varsayılan ödeme yöntemi bileşenini genişleten bir UI bileşeni olarak hareket etmelidir (varsayılan ödeme yöntemi oluşturucu <Magento_Checkout_module_dir>/view/frontend/web/js/view/payment/default.js bulunur) <Magento_Checkout_module_dir>/view/frontend/web/js/view/payment/default.js ).

Özel modül dizininizde bileşenin .js dosyasını (ödeme yöntemi oluşturucusu) oluşturun. <your_module_dir>/view/frontend/web/js/view/ dizininde saklanmalıdır.

Ödeme yöntemi oluşturucusunun genel görünümü aşağıdaki gibidir:

 tanımlamak(
    ['Magento_Checkout / js / görünüm / ödeme /
        varsayılan'
    ],
    fonksiyon(Bileşen) {
        '
        sıkı kullanın';
        Component.extend({
            varsayılanlar: {
                şablon: ' % şablonuna giden yol % '
            },
            // gerekli mantığı buraya ekleyin
        });
    }
);

Bu yeni ödeme yönteminin sistem yapılandırma verilerine erişebilmesi için \Magento\Checkout\Model\ConfigProviderInterface arabirimini uygulaması ve bunu uygulayan sınıfın DI ön uç yapılandırması aracılığıyla bileşik yapılandırma sağlayıcısına enjekte edilmesi gerekir.

\Magento\Checkout\Model\ConfigProviderInterface uygulayan örnek .php dosyası:

 class MyCustomPaymentConfigProvider, \Magento\Checkout\Model\ConfigProviderInterface öğesini uygular
{
...
    genel işlev getConfig()
    {
        dönüş [
            // 'anahtar' => 'değer' konfigürasyon çiftleri
        ];
    }
...
}

Ve yeni ödeme yönteminizin kredi kartı bilgisi gerektirmesi durumunda, kredi kartı formunu uygulamak için Magento oluşturucuyu kullanmalısınız ( <Magento_Payment_module_dir>/view/frontend/web/js/view/payment/cc-form.js ).

2. Adım: Oluşturucuyu kaydeden .js bileşenini oluşturun

Özel modül dizininizde, ödeme yöntemi oluşturucusunu oluşturucular listesine kaydeden .js UI bileşenini oluşturun. <your_module_dir>/view/frontend/web/js/view/ dizini altında bulunmalıdır.

Dosya içeriği aşağıdaki gibidir:

 tanımlamak(
    ['uiComponent', 'Magento_Checkout / js / model / ödeme / oluşturucu - liste'],
    işlev(
        Bileşen,
        oluşturucuListesi
    ) {
        '
        sıkı kullanın';
        rendererList.push({
                tür: ' % ödeme_metod_kodu %',
                bileşen: ' % js_renderer_component % '
            },
            // gerekirse diğer ödeme yöntemi oluşturucuları
        );
        /** Gerekirse buraya görünüm mantığını ekleyin */
        Component.extend({}) döndür;
    }
);

3. Adım: Ödeme yöntemi bileşeni için şablon oluşturun

Özel modül dizininizde yeni bir <your_module_dir>/view/frontend/web/template/<your_template>.html dosyası oluşturun. Şablon, Knockout JS sözdizimini kullanabilir.

Örneğin, PayPal Express ödeme yöntemini işlemek için şablon:

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

Adım 4: Ödeme yöntemini düzende bildirin

  1. Özel modül dizininizde yeni bir <your_module_dir>/view/frontend/layout/checkout_index_index.xml dosyası oluşturun
  2. O dosyaya aşağıdaki kodu ekleyin
 <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="checkout.root">
            <argümanlar>
                <argument name="jsLayout" xsi:type="dizi">
                    <item name="bileşenler" xsi:type="dizi">
                        <item name="checkout" xsi:type="array">
                            <item name="çocuklar" xsi:type="array">
                                <item name="adımlar" xsi:type="dizi">
                                    <item name="çocuklar" xsi:type="array">
                                        <item name="faturalandırma adımı" xsi:type="array">
                                            <item name="component" xsi:type="string">uiComponent</item>
                                            <item name="çocuklar" xsi:type="array">
                                                <item name="ödeme" xsi:type="array">
                                                    <item name="çocuklar" xsi:type="array">
                                                        <!-- Ödeme bileşenlerinden önce ek bildirin. BAŞLAT -->
                                                        <item name="beforeMethods" xsi:type="dizi">
                                                            <item name="component" xsi:type="string">uiComponent</item>
                                                            <item name="displayArea" xsi:type="string">Yöntemlerden önce</item>
                                                            <item name="çocuklar" xsi:type="array">
                                                                <item name="%your_feature_name%" xsi:type="array">
                                                                    <item name="component" xsi:type="string">%path/to/your/feature_js_component%</item>
                                                                </ite>
                                                            </ite>
                                                        </ite>
                                                        <!-- Ödeme bileşenlerinden önce ek bildirin. SON -->
                                                        <!-- Ödeme yöntemini bildirin (listede kayıtlı olan bileşen). BAŞLAT -->
                                                        <item name="render" xsi:type="array">
                                                            <item name="çocuklar" xsi:type="array">
                                                                <item name="% ödeme yöntemlerinin grup adı%" xsi:type="array">
                                                                    <!-- Değer örneği: Magento_Paypal/view/frontend/web/js/view/ödeme-->
                                                                    <item name="component" xsi:type="string">%component_that_registers_payment_renderer%</item>
                                                                    <item name="yöntemler" xsi:type="dizi">

                                                                        <!-- Ödeme yönteminiz bir fatura adresi girmenizi gerektiriyorsa bunu ekleyin-->
                                                                        <item name="%payment_method_code%" xsi:type="dizi">
                                                                            <item name="isBillingAddressRequired" xsi:type="boolean">true</item>
                                                                        </ite>
                                                                    </ite>
                                                                </ite>
                                                            </ite>
                                                        </ite>
                                                        <!-- Ödeme yöntemini bildirin (listede kayıtlı olan bileşen). SON -->

                                                        <!-- Ödeme sonrası bileşenleri bildir. BAŞLAT -->
                                                        <item name="afterMethods" xsi:type="dizi">
                                                            <item name="component" xsi:type="string">uiComponent</item>
                                                            <item name="displayArea" xsi:type="string">afterMethods</item>
                                                            <item name="çocuklar" xsi:type="array">
                                                                <item name="%your_feature_name%" xsi:type="array">
                                                                    <item name="component" xsi:type="string">%path/to/your/feature_js_component%</item>
                                                                </ite>
                                                            </ite>
                                                        </ite>
                                                        <!-- Ödeme sonrası bileşenleri bildir. SON -->
                                                    </ite>
                                                </ite>
                                            </ite>
                                        </ite>
                                    </ite>
                                </ite>
                            </ite>
                        </ite>
                    </ite>
                </argüman>
            </argümanlar>
        </referenceBlock>
    </body>
</sayfa>

(Yalnızca üretim modu için) Adım 5 : CLI komutlarını çalıştırın

Üretim modunda, bunun gibi birkaç komut daha çalıştırmanız gerekecek:

 php bin/magento kurulumu:di:derleme
php bin/magento kurulumu:statik içerik:dağıtım
php bin/magento önbelleği:temiz 

Magento 2 Checkout Uzantı Paketi

Ödeme sayfası, herhangi bir çevrimiçi web sitesinin, bir müşteriyi bir tüketici haline getirebilecek veya satış noktasından uzaklaştırabilecek en önemli varış noktasıdır.
Neyse ki, bu Magento 2 Checkout Extension, ödemenizi zahmetsizce optimize etmenize yardımcı olur.
Takım elbiseyi şimdi kontrol et!


Ayrıca bakınız:
Magento 2'de Ödeme İşlemi Nasıl Özelleştirilir
Magento'da Ödemeye İndirim Kodu Nasıl Eklenir