วิธีเพิ่มการชำระเงินแบบกำหนดเองให้กับ Magento 2 Checkout
เผยแพร่แล้ว: 2021-05-11สารบัญ
หนึ่งในการปรับปรุงครั้งใหญ่ของ Magento 2.x เหนือ Magento 1.x คือสามารถรวมวิธีการชำระเงินแบบกำหนดเองเข้ากับการชำระเงินได้ ในบทช่วยสอนนี้ เราจะแสดงวิธีใช้งานการแสดงผลวิธีการชำระเงินในการชำระเงิน Magento 2
ขั้นตอนที่ 1: สร้างไฟล์คอมโพเนนต์ .js
ในการเริ่มต้น ตัวแสดงวิธีการชำระเงินของคุณควรทำหน้าที่เป็นส่วนประกอบ UI ที่ขึ้นอยู่กับโมดูล 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 / ดู / ชำระเงิน / ค่าเริ่มต้น' ], ฟังก์ชั่น (ส่วนประกอบ) { ' ใช้อย่างเข้มงวด'; ส่งคืน Component.extend ({ ค่าเริ่มต้น: { แม่แบบ: ' % เส้นทางไปยังแม่แบบ % ' }, // เพิ่มตรรกะที่จำเป็นที่นี่ }); } );
เพื่อให้วิธีการชำระเงินใหม่นี้สามารถ เข้าถึงข้อมูลการกำหนดค่าระบบ ได้ ต้องใช้อินเทอร์เฟซ \Magento\Checkout\Model\ConfigProviderInterface
และคลาสที่ใช้จะต้องส่งไปยังผู้ให้บริการการกำหนดค่าคอมโพสิตผ่านการกำหนดค่าส่วนหน้า DI
ตัวอย่างไฟล์ .php
ที่ใช้ \Magento\Checkout\Model\ConfigProviderInterface
:
คลาส MyCustomPaymentConfigProvider ใช้ \Magento\Checkout\Model\ConfigProviderInterface { ... ฟังก์ชั่นสาธารณะ getConfig() { กลับ [ // 'คีย์' => 'ค่า' คู่การกำหนดค่า ]; } ... }
และในกรณีที่วิธีการชำระเงินใหม่ของคุณต้องการ ข้อมูลบัตรเครดิต คุณควรใช้ตัวแสดง 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 / การชำระเงิน / renderer - รายการ'], การทำงาน( ส่วนประกอบ, rendererList ) { ' ใช้อย่างเข้มงวด'; 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"> <body> <referenceBlock name="checkout.root"> <อาร์กิวเมนต์> <ชื่ออาร์กิวเมนต์="jsLayout" xsi:type="array"> <item name="components" 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">ก่อนวิธีการ</item> <item name="children" xsi:type="array"> <item name="%your_feature_name%" xsi:type="array"> <item name="component" xsi:type="string">%path/to/your/feature_js_component%</item> </item> </item> </item> <!-- ประกาศเพิ่มเติมก่อนส่วนประกอบการชำระเงิน END --> <!-- ประกาศวิธีการชำระเงิน (องค์ประกอบที่ลงทะเบียนในรายการ) เริ่ม --> <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> <item name="methods" xsi:type="array"> <!-- เพิ่มสิ่งนี้หากวิธีการชำระเงินของคุณกำหนดให้ป้อนที่อยู่สำหรับการเรียกเก็บเงิน--> <item name="%payment_method_code%" xsi:type="array"> <item name="isBillingAddressRequired" xsi:type="boolean">จริง</item> </item> </item> </item> </item> </item> <!-- ประกาศวิธีการชำระเงิน (องค์ประกอบที่ลงทะเบียนในรายการ) END --> <!-- ประกาศส่วนประกอบเพิ่มเติมหลังการชำระเงิน เริ่ม --> <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"> <item name="%your_feature_name%" xsi:type="array"> <item name="component" xsi:type="string">%path/to/your/feature_js_component%</item> </item> </item> </item> <!-- ประกาศส่วนประกอบเพิ่มเติมหลังการชำระเงิน END --> </item> </item> </item> </item> </item> </item> </item> </item> </item> </อาร์กิวเมนต์> </arguments> </referenceBlock> </body> </page>
(สำหรับโหมดการผลิตเท่านั้น) ขั้นตอนที่ 5 : รันคำสั่ง CLI
ในโหมดใช้งานจริง คุณจะต้องเรียกใช้คำสั่งเพิ่มเติมสองสามคำสั่งดังนี้:
การตั้งค่า php bin/magento:di:compile การตั้งค่า php bin/magento:static-content:deploy php bin/magento cache:ล้าง
Magento 2 Checkout Extension Suite
หน้าชำระเงินเป็นปลายทางที่สำคัญที่สุดของเว็บไซต์ออนไลน์ใด ๆ ที่สามารถนำลูกค้าเข้าสู่ผู้บริโภคหรือผลักพวกเขาออกจากจุดขาย
โชคดีที่ Magento 2 Checkout Extension นี้ช่วยเพิ่มประสิทธิภาพการชำระเงินของคุณได้อย่างง่ายดาย
ตรวจสอบชุดสูทตอนนี้!
ดูสิ่งนี้ด้วย:
วิธีปรับแต่งกระบวนการชำระเงินใน Magento 2
วิธีเพิ่มรหัสส่วนลดเพื่อชำระเงินใน Magento