วิธีปรับแต่งกระบวนการชำระเงินใน Magento 2
เผยแพร่แล้ว: 2018-04-23สารบัญ
ใน Magento 2 กระบวนการเช็คเอาต์ได้รับการออกแบบใหม่เพื่อประสบการณ์ที่รวดเร็วและง่ายขึ้น หน้าการชำระเงินจะนำลูกค้าไปสู่ 2 ขั้นตอนง่ายๆ ของกระบวนการ ลูกค้าที่ลงชื่อเข้าใช้บัญชีของตนสามารถชำระเงินได้อย่างรวดเร็ว เนื่องจากข้อมูลส่วนใหญ่อยู่ในบัญชีอยู่แล้ว ขั้นตอนแรกของกระบวนการเช็คเอาต์คือให้ลูกค้ากรอกข้อมูลที่อยู่สำหรับจัดส่ง และเลือกวิธีการจัดส่ง ในขั้นตอนที่สอง ลูกค้าจะเลือกวิธีการชำระเงิน และใช้คูปองเพื่อดำเนินการซื้อให้เสร็จสิ้น
ปรับแต่งการชำระเงินเริ่มต้นของ Magento 2
คุณสามารถเพิ่มขั้นตอนการชำระเงินใหม่หรือเปลี่ยนมุมมองของการชำระเงินที่มีอยู่เพื่อปรับแต่งการชำระเงินเริ่มต้นในแบบของคุณเอง
เพิ่มขั้นตอนการชำระเงินใหม่
คุณสามารถเพิ่มขั้นตอนการชำระเงินที่กำหนดเองได้ ซึ่งควรนำไปใช้เป็นส่วนประกอบ UI เพื่อความเข้ากันได้ การอัพเกรด และการบำรุงรักษาง่าย อย่าแก้ไขโค้ด Magento เริ่มต้น เพิ่มการปรับแต่งของคุณในโมดูลแยกต่างหาก
ขั้นตอนที่ 1: สร้างส่วนมุมมองของส่วนประกอบขั้นตอนการชำระเงิน
ในการสร้างส่วนมุมมองของขั้นตอนการชำระเงินใหม่:
- เพิ่มไดเร็กทอรีโมดูล ไฟล์ที่กำหนดเองทั้งหมดจะต้องเก็บไว้ที่นั่น เพื่อให้การปรับแต่งการชำระเงินของคุณใช้งานได้อย่างถูกต้อง โมดูลที่กำหนดเองของคุณควรขึ้นอยู่กับโมดูล
Magento_Checkout
อย่าใช้Ui
สำหรับชื่อโมดูลที่กำหนดเองของคุณ เนื่องจากต้องใช้สัญกรณ์%Vendor%_Ui
เมื่อระบุพาธ อาจทำให้เกิดปัญหาได้ - สร้างไฟล์ .
.js
ที่ใช้โมเดลมุมมอง - สร้างเทมเพลต
.html
สำหรับส่วนประกอบ
แต่ละขั้นตอนมีรายละเอียดด้านล่าง:
1. เพิ่มไฟล์ JavaScript ที่ใช้ขั้นตอนใหม่
ต้องใช้ขั้นตอนการชำระเงินใหม่เป็นองค์ประกอบ UI กล่าวคือ การใช้งาน JavaScript ต้องเป็นโมดูล JavaScript
ไฟล์ต้องถูกเก็บไว้ภายใต้ <your_module_dir>/view/frontend/web/js/view
<your_module_dir>
สัญกรณ์หมายถึงพาธไปยังไดเร็กทอรีโมดูลของคุณจากไดเร็กทอรีราก โดยปกติแล้วจะเป็นหนึ่งในสิ่งต่อไปนี้: app/code/<YourVendor>/<YourModule>
or vendor/<yourvendor>/module-<module>-<name>
ตัวอย่าง my-step-view.js
พร้อมความคิดเห็นดังนี้:
กำหนด( ['ko', 'uiComponent', 'underscore', 'Magento_Checkout / js / model / step - เนวิเกเตอร์'], การทำงาน( โก ส่วนประกอบ, _, stepNavigator ) {' ใช้อย่างเข้มงวด'; /** * * mystep – คือชื่อของเทมเพลต .html ของคอมโพเนนต์ * <Vendor>_<Module> – คือชื่อของไดเร็กทอรีโมดูลของคุณ * */ ส่งคืน Component.extend ({ ค่าเริ่มต้น: { แม่แบบ: ' < ผู้ขาย > _ < โมดูล > /mystep' }, // เพิ่มตรรกะของคุณที่นี่เพื่อแสดงขั้นตอน isVisible: ko.observable(จริง), /** * * @returns {*} */ เริ่มต้น: ฟังก์ชั่น () { this._super(); // ลงทะเบียนขั้นตอนของคุณ stepNavigator.registerStep( //รหัสขั้นตอนจะถูกใช้เป็นรหัสเนื้อหาขั้นตอนในเทมเพลตส่วนประกอบ 'step_code', //ขั้นตอนนามแฝง โมฆะ, //ค่าชื่อขั้นตอน 'ชื่อขั้นตอน' // คุณสมบัติที่สังเกตได้พร้อมตรรกะเมื่อแสดงขั้นตอนหรือซ่อนขั้นตอน this.isVisible, _.bind(this.navigate, นี่) /** * เรียงลำดับมูลค่า * 'จัดเรียงมูลค่าการสั่งซื้อ' < 10: แสดงขั้นตอนก่อนขั้นตอนการจัดส่ง; * 10 < 'sort order value' < 20 : แสดงขั้นตอนระหว่างขั้นตอนการจัดส่งและการชำระเงิน * 'sort order value' > 20 : แสดงขั้นตอนหลังจากขั้นตอนการชำระเงิน */ 15 ); ส่งคืนสิ่งนี้; }, /** * วิธีนำทาง () มีหน้าที่ในการนำทางระหว่างขั้นตอนการชำระเงิน * ระหว่างชำระเงิน คุณสามารถเพิ่มตรรกะที่กำหนดเองได้ ตัวอย่างเช่น เงื่อนไขบางอย่าง * เพื่อเปลี่ยนเป็นขั้นตอนที่คุณกำหนดเอง */ นำทาง: ฟังก์ชั่น () { }, /** * @returns เป็นโมฆะ */ NaviToNextStep: ฟังก์ชั่น () { stepNavigator.next(); } }); } );
2. เพิ่ม .html template
ในไดเร็กทอรีโมดูล เพิ่มเทมเพลต .html
สำหรับส่วนประกอบ ต้องอยู่ใต้ <your_module_dir>/view/frontend/web/template
ตัวอย่าง mystep.html
มีดังนี้:
<!–ควรใช้ค่า 'step_code' จากไฟล์ .js–> <li data-bind="fadeVisible: isVisible"> <div class="step-title" data-bind="i18n: 'Step Title'" data-role="title"></div> <div class="step-content" data-role="content"> <form data-bind="submit: navigationToNextStep" novalidate="novalidate"> <div class="actions-toolbar"> <div class="primary"> <button data-role="opc-continue" type="submit" class="button action continue primary"> <span><!– ko i18n: 'Next'–><!– /ko –></span> </button> </div> </div> </form> </div> </li>
ขั้นตอนที่ 2: เพิ่มขั้นตอนของคุณลงในเค้าโครงหน้าชำระเงิน
สำหรับขั้นตอนใหม่ที่จะแสดงบนเพจ คุณต้องประกาศในโครงร่างหน้า Checkout ซึ่งกำหนดไว้ใน checkout_index_index.xml
ดังนั้น คุณต้องเพิ่มไฟล์โครงร่าง checkout_index_index.xml
แบบขยายในตำแหน่งต่อไปนี้: <your_module_dir>/view/frontend/layout/checkout_index_index.xml
ตัวอย่าง checkout_index_index.xml
มีดังนี้:
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" 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="my-new-step" xsi:type="array"> <item name="component" xsi:type="string">%Vendor%_%Module%/js/view/my-step-view</item> <!–หากต้องการแสดงเนื้อหาขั้นตอนก่อนจัดส่ง ค่าขั้นตอน "sortOrder" ควรเป็น < 1–> <!–เพื่อแสดงเนื้อหาขั้นตอนระหว่างขั้นตอนการจัดส่งและขั้นตอนการชำระเงิน 1 < "sortOrder" < 2 –> <!–เพื่อแสดงเนื้อหาขั้นตอนหลังจากขั้นตอนการชำระเงิน "sortOrder" >2 –> <item name="sortOrder" xsi:type="string">2</item> <item name="children" xsi:type="array"> <!–เพิ่มการประกาศองค์ประกอบลูกสำหรับขั้นตอนของคุณ–> </item> </item> </item> </item> </item> </item> </item> </อาร์กิวเมนต์> </arguments> </referenceBlock> </body> </page>
ฟิลด์กำหนดเองของ Magento 2 Checkout
$119,00
การชำระเงิน Magento 2 ขั้นตอนเดียว
$99 $119,00
ปรับแต่งมุมมองของการชำระเงินที่มีอยู่
ในแอปพลิเคชัน Magento การชำระเงินจะดำเนินการโดยใช้ส่วนประกอบ UI คุณสามารถปรับแต่งแต่ละขั้นตอนโดยเปลี่ยน JavaScriptimplementation หรือเทมเพลตสำหรับส่วนประกอบ เพิ่ม ลบ หรือปิดใช้งานส่วนประกอบ
ขั้นตอนที่ 1: เปลี่ยนการใช้งานและเทมเพลต .js ของคอมโพเนนต์
หากต้องการเปลี่ยนการใช้งาน . .js
และเทมเพลตที่ใช้สำหรับการแสดงผลคอมโพเนนต์ คุณต้องประกาศไฟล์ใหม่ในเลย์เอาต์ของหน้าเช็คเอาต์ โดยทำตามขั้นตอนต่อไปนี้:
- ในไดเร็กทอรีโมดูลที่กำหนดเองของคุณ ให้สร้างไฟล์ใหม่ต่อไปนี้:
<your_module_dir>/view/frontend/layout/checkout_index_index.xml
(เพื่อให้การปรับแต่งการชำระเงินของคุณใช้งานได้อย่างถูกต้อง โมดูลที่กำหนดเองของคุณควรขึ้นอยู่กับโมดูล Magento_Checkout) - ในไฟล์นี้ เพิ่มสิ่งต่อไปนี้:
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <referenceBlock name="checkout.root"> <อาร์กิวเมนต์> <ชื่ออาร์กิวเมนต์="jsLayout" xsi:type="array"> <!– การปรับแต่งของคุณจะอยู่ที่นี่ –> … </อาร์กิวเมนต์> </arguments> </referenceBlock> </body> </page>
- ในไฟล์
<Magento_Checkout_module_dir>/view/frontend/layout/checkout_index_index.xml
ให้ค้นหาส่วนประกอบที่คุณต้องการปรับแต่ง คัดลอกโหนดที่เกี่ยวข้องและโหนดหลักทั้งหมดไม่เกิน<argument>
ไม่จำเป็นต้องทิ้งแอตทริบิวต์และค่าทั้งหมดของโหนดหลัก เนื่องจากคุณจะไม่ทำการเปลี่ยนแปลง - เปลี่ยนพาธไปยังไฟล์ .
.js
ของคอมโพเนนต์ เทมเพลต หรือคุณสมบัติอื่นๆ
ตัวอย่าง:
โมดูล Magento_Shipping เพิ่มองค์ประกอบที่แสดงเป็นลิงก์ไปยังข้อมูลนโยบายการจัดส่งไปยังขั้นตอนการจัดส่ง:
<Magento_Shipping_module_dir>/view/frontend/layout/checkout_index_index.xml
ดูเหมือนว่าต่อไปนี้:
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" 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="shipping-step" xsi:type="array"> <item name="children" xsi:type="array"> <item name="shippingAddress" xsi:type="array"> <item name="children" xsi:type="array"> <item name="before-shipping-method-form" xsi:type="array"> <item name="children" xsi:type="array"> <item name="shipping_policy" xsi:type="array"> <item name="component" xsi:type="string">Magento_Shipping/js/view/checkout/shipping/shipping-policy</item> </item> </item> </item> </item> </item> </item> </item> </item> </item> </item> </item> </item> </อาร์กิวเมนต์> </arguments> </referenceBlock> </body> </page>
ขั้นตอนที่ 2: เพิ่มองค์ประกอบใหม่ให้กับเค้าโครงหน้าชำระเงิน
คอมโพเนนต์ UI ใดๆ จะถูกเพิ่มใน checkout_index_index.xml
เหมือนกับวิธีการเพิ่มคอมโพเนนต์ขั้นตอนการชำระเงิน
ตรวจสอบให้แน่ใจว่าคุณได้ประกาศส่วนประกอบเพื่อให้แสดงผลได้อย่างถูกต้องโดยองค์ประกอบหลัก หากองค์ประกอบหลักเป็นองค์ประกอบ UI ทั่วไป (อ้างอิงโดยนามแฝง uiComponent
) ส่วนประกอบย่อยจะแสดงผลโดยไม่มีเงื่อนไขใดๆ แต่ถ้าองค์ประกอบหลักเป็นส่วนขยายของส่วนประกอบ UI ทั่วไป การเรนเดอร์ลูกอาจถูกจำกัดในบางวิธี ตัวอย่างเช่น ส่วนประกอบสามารถแสดงผลเฉพาะลูกจาก displayArea
บางตัว
ขั้นตอนที่ 3 : ปิดการใช้งานส่วนประกอบ
หากต้องการปิดใช้งานคอมโพเนนต์ใน checkout_index_index.xml
ให้ใช้คำแนะนำต่อไปนี้:
<item name="%the_component_to_be_disabled%" xsi:type="array"> <item name="config" xsi:type="array"> <item name="componentDisabled" xsi:type="boolean">จริง</item> </item> </item>
ขั้นตอนที่ 4: ลบส่วนประกอบ
ในการลบส่วนประกอบออกจากการแสดงผลเลย์เอาต์ คุณต้องสร้างปลั๊กอินสำหรับวิธี \Magento\Checkout\Block\Checkout\LayoutProcessor::process
ในปลั๊กอินของคุณ ใช้เมธอด around เพื่อลบโหนดเลย์เอาต์ที่เกี่ยวข้องในขณะใช้งาน
ตัวอย่างต่อไปนี้เป็นตัวอย่างของวิธีการ around ที่ลบส่วนประกอบ:
unset($jsLayout['components']['checkout']['children']['steps'][%path_to_target_node%]); //%path_to_target_node% คือเส้นทางไปยังโหนดของส่วนประกอบใน checkout_index_index.xml ส่งคืน $jsLayout;
(ถ้าคุณต้องการใช้ตัวอย่างนี้ในโค้ดของคุณ ให้แทนที่ตัวยึดตำแหน่ง %path_to_target_node%
ด้วยค่าจริง)
*ปิดการใช้งาน vs ลบส่วนประกอบ: หากคุณปิดใช้งานส่วนประกอบ ส่วนประกอบจะถูกโหลดแต่จะไม่แสดงผล หากคุณลบส่วนประกอบ ส่วนประกอบจะไม่ถูกโหลด
กระทู้ที่เกี่ยวข้อง:
วิธีเพิ่มรหัสส่วนลดเพื่อชำระเงินใน Magento
วิธีเพิ่มการชำระเงินแบบกำหนดเองให้กับ Magento 2 Checkout