كيفية إضافة دفع مخصص إلى 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: التصريح عن طريقة الدفع في التخطيط
-  قم بإنشاء ملف 
<your_module_dir>/view/frontend/layout/checkout_index_index.xmlفي دليل الوحدة النمطية المخصصة لديك - أضف التعليمات البرمجية التالية إلى هذا الملف
 
 <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
