كيفية إضافة دفع مخصص إلى Magento 2 Checkout

نشرت: 2021-05-11

جدول المحتويات

أحد التحسينات الكبيرة لـ Magento 2.x على Magento 1.x هو أنه يمكن دمج طرق الدفع المخصصة في عملية الدفع. في هذا البرنامج التعليمي ، سنوضح لك كيفية تنفيذ عرض طريقة الدفع في تسجيل الخروج من Magento 2.

الخطوة 1: قم بإنشاء ملف مكون .js

للبدء ، يجب أن يعمل عارض طريقة الدفع كمكون لواجهة مستخدم يعتمد على وحدة Magento_Checkout ويوسع مكون طريقة الدفع الافتراضية (يوجد عارض طريقة الدفع الافتراضية في <Magento_Checkout_module_dir>/view/frontend/web/js/view/payment/default.js ).

قم بإنشاء ملف .js الخاص بالمكون (عارض طريقة الدفع) في دليل الوحدة النمطية المخصصة. يجب تخزينه في الدليل <your_module_dir>/view/frontend/web/js/view/ .

العرض العام لعارض طريقة الدفع هو كما يلي:

 حدد(
    ['Magento_Checkout / js / view / payment /
        إفتراضي'
    ] ،
    وظيفة (مكون) {
        "
        استخدام صارم "؛
        إرجاع Component.extend ({
            الافتراضيات: {
                النموذج: 'المسار٪ إلى القالب٪'
            } ،
            // أضف المنطق المطلوب هنا
        }) ؛
    }
) ؛

لكي تتمكن طريقة الدفع الجديدة هذه من الوصول إلى بيانات تكوين النظام ، يجب عليها تنفيذ واجهة \Magento\Checkout\Model\ConfigProviderInterface ، ويجب إدخال الفئة التي تنفذها إلى موفر التكوين المركب عبر تكوين واجهة DI الأمامية.

نموذج تنفيذ ملف .php \Magento\Checkout\Model\ConfigProviderInterface :

 فئة MyCustomPaymentConfigProvider implements \ Magento \ Checkout \ Model \ ConfigProviderInterface
{
...
    getConfig () الوظيفة العامة
    {
        إرجاع [
            // 'key' => أزواج 'القيمة' من التكوين
        ] ؛
    }
...
}

وفي حال كانت طريقة الدفع الجديدة تتطلب معلومات بطاقة الائتمان ، يجب عليك استخدام عارض Magento لتنفيذ نموذج بطاقة الائتمان (الموجود في <Magento_Payment_module_dir>/view/frontend/web/js/view/payment/cc-form.js ).

الخطوة 2: قم بإنشاء مكون .js الذي يقوم بتسجيل العارض

في دليل الوحدة النمطية المخصصة ، قم بإنشاء مكون .js UI الذي يسجل عارض طريقة الدفع في قائمة العارضين. يجب أن يكون موجودًا ضمن الدليل <your_module_dir>/view/frontend/web/js/view/ .

محتوى الملف على النحو التالي:

 حدد(
    ['uiComponent'، 'Magento_Checkout / js / model / payment / renderer - list']،
    وظيفة(
        مكون،
        قائمة العارض
    ) {
        "
        استخدام صارم "؛
        RendererList.push ({
                اكتب: "٪ payment_method_code٪" ،
                المكون: "٪ js_renderer_component٪"
            } ،
            // أدوات تقديم طريقة الدفع الأخرى إذا لزم الأمر
        ) ؛
        / ** أضف منطق العرض هنا إذا لزم الأمر * /
        إرجاع Component.extend ({}) ،
    }
) ؛

الخطوة 3: قم بإنشاء نموذج لمكون طريقة الدفع

قم بإنشاء ملف <your_module_dir>/view/frontend/web/template/<your_template>.html في دليل الوحدة النمطية المخصصة. يمكن للقالب استخدام بناء جملة Knockout JS.

على سبيل المثال ، نموذج عرض طريقة الدفع PayPal Express:

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

الخطوة 4: التصريح عن طريقة الدفع في التخطيط

  1. قم بإنشاء ملف <your_module_dir>/view/frontend/layout/checkout_index_index.xml في دليل الوحدة النمطية المخصصة لديك
  2. أضف التعليمات البرمجية التالية إلى هذا الملف
 <page xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi: noNamespaceSchemaLocation = "urn: magento: framework: View / Layout / etc / page_configuration.xsd">
    <الجسم>
        <referenceBlock name = "checkout.root">
            <الحجج>
                <اسم الوسيطة = "jsLayout" xsi: type = "array">
                    <اسم العنصر = "المكونات" xsi: type = "array">
                        <item name = "checkout" xsi: type = "array">
                            <item name = "children" xsi: type = "array">
                                <item name = "steps" xsi: type = "array">
                                    <item name = "children" xsi: type = "array">
                                        <item name = "billing-step" xsi: type = "array">
                                            <item name = "component" xsi: type = "string"> uiComponent </item>
                                            <item name = "children" xsi: type = "array">
                                                <item name = "payment" xsi: type = "array">
                                                    <item name = "children" xsi: type = "array">
                                                        <! - التصريح عن مكونات إضافية قبل الدفع. ابدأ ->
                                                        <item name = "beforeMethods" xsi: type = "array">
                                                            <item name = "component" xsi: type = "string"> uiComponent </item>
                                                            <item name = "displayArea" xsi: type = "string"> beforeMethods </item>
                                                            <item name = "children" xsi: type = "array">
                                                                <اسم العنصر = "٪ your_feature_name٪" xsi: type = "array">
                                                                    <item name = "component" xsi: type = "string">٪ path / to / your / feature_js_component٪ </item>
                                                                </item>
                                                            </item>
                                                        </item>
                                                        <! - التصريح عن مكونات إضافية قبل الدفع. النهاية ->
                                                        <! - قم بتعريف طريقة الدفع (المكون الذي يقوم بالتسجيل في القائمة). ابدأ ->
                                                        <item name = "renders" xsi: type = "array">
                                                            <item name = "children" xsi: type = "array">
                                                                <اسم العنصر = "٪ اسم المجموعة لطرق الدفع٪" xsi: type = "array">
                                                                    <! - مثال على القيمة: Magento_Paypal / view / frontend / web / js / view / payment ->
                                                                    <item name = "component" xsi: type = "string">٪ component_that_registers_payment_renderer٪ </item>
                                                                    <اسم العنصر = "الأساليب" xsi: type = "array">

                                                                        <! - أضف هذا إذا كانت طريقة الدفع تتطلب إدخال عنوان إرسال الفواتير ->
                                                                        <اسم العنصر = "٪ payment_method_code٪" xsi: type = "array">
                                                                            <item name = "isBillingAddressRequired" xsi: type = "boolean"> صحيح </ em>
                                                                        </item>
                                                                    </item>
                                                                </item>
                                                            </item>
                                                        </item>
                                                        <! - قم بتعريف طريقة الدفع (المكون الذي يقوم بالتسجيل في القائمة). النهاية ->

                                                        <! - التصريح بمكونات إضافية بعد الدفع. ابدأ ->
                                                        <item name = "afterMethods" xsi: type = "array">
                                                            <item name = "component" xsi: type = "string"> uiComponent </item>
                                                            <item name = "displayArea" xsi: type = "string"> afterMethods </item>
                                                            <item name = "children" xsi: type = "array">
                                                                <اسم العنصر = "٪ your_feature_name٪" xsi: type = "array">
                                                                    <item name = "component" xsi: type = "string">٪ path / to / your / feature_js_component٪ </item>
                                                                </item>
                                                            </item>
                                                        </item>
                                                        <! - التصريح بمكونات إضافية بعد الدفع. النهاية ->
                                                    </item>
                                                </item>
                                            </item>
                                        </item>
                                    </item>
                                </item>
                            </item>
                        </item>
                    </item>
                </argument>
            </ الحجج>
        </referenceBlock>
    </body>
</page>

(لوضع الإنتاج فقط) الخطوة 5: قم بتشغيل أوامر CLI

في وضع الإنتاج ، ستحتاج إلى تشغيل بعض الأوامر الأخرى مثل:

 php bin / magento setup: di: compile
إعداد php bin / magento: محتوى ثابت: نشر
php bin / magento cache: نظيف 

جناح ملحق الخروج ماجنتو 2

تعد صفحة الخروج ، إلى حد بعيد ، الوجهة الأكثر أهمية لأي موقع ويب على الإنترنت ، والتي يمكنها إما جلب العميل إلى المستهلك أو دفعه بعيدًا عن نقطة البيع.
لحسن الحظ ، تساعد إضافة Magento 2 Checkout هذه على تحسين عملية الدفع الخاصة بك دون عناء.
تحقق من البدلة الآن!


أنظر أيضا:
كيفية تخصيص عملية السحب في Magento 2
كيفية إضافة رمز الخصم إلى الخروج في Magento